juicedata/juicefs · warning
buffer is full
Error message
buffer is full
What it means
The syslog hook Fire() pushes log lines into a bounded buffer; when the buffer is full the line is dropped (printed to stderr) and the error 'buffer is full' is returned to the logger. It means syslog consumption is slower than log production, so messages are being lost to syslog.
Source
Thrown at pkg/utils/logger_syslog.go:78
if err != nil {
fmt.Fprintf(os.Stderr, "write to syslog: %v, level: %s, line: %s", err, l.level, line)
}
}
}
func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
line, err := entry.String()
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
return err
}
select {
case hook.buffer <- logLine{entry.Level, line[27:]}: // drop the timestamp
return nil
default:
fmt.Fprintf(os.Stderr, "buffer of syslog is full, drop: %s", line)
return fmt.Errorf("buffer is full")
}
}
var once sync.Once
func InitLoggers(logToSyslog bool) {
if logToSyslog {
once.Do(func() {
hook, err := logrus_syslog.NewSyslogHook("", "", syslog.LOG_DEBUG|syslog.LOG_USER, "")
if err != nil {
// println("Unable to connect to local syslog daemon")
return
}
syslogHook = &SyslogHook{hook, make(chan logLine, 1024)}
go syslogHook.(*SyslogHook).flush()
for _, l := range loggers {
l.AddHook(syslogHook)View on GitHub (pinned to c9a67b23e8)
Solutions
- Fix/restart the local syslog daemon
- Increase the hook buffer size or log level filtering to reduce volume
- Disable syslog logging (InitLoggers with logToSyslog=false) if not needed
- Check /dev/log or configured socket availability
Defensive patterns
Strategy: fallback
Validate before calling
// check syslog socket before enabling
if _, err := net.Dial("unix", "/dev/log"); err != nil { logToSyslog = false } Try / catch
if err := log.Fire(entry); err != nil { log.Printf("syslog unavailable: %v", err) } // rely on stderr fallback Prevention
- Monitor syslog daemon health
- Raise buffer size for high-volume logging
- Filter log levels before syslog delivery
When it happens
Trigger: Logging to syslog with logToSyslog enabled while the syslog daemon is slow, blocked, or unreachable, producing log volume faster than the hook drains its buffer.
Common situations: rsyslog/syslog-ng down or overloaded; very chatty workloads (GC logs, hot-path errors); container syslog socket latency.
Related errors
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/6aad80385040eb63.
Report an issue: GitHub.