juicedata/juicefs · error
listing failed, stop syncing, waiting for pending ones
Error message
listing failed, stop syncing, waiting for pending ones
What it means
Returned by the sync producer consumer loop when a nil object arrives on the keys channel — the upstream listAll goroutine pushed nil because listing failed. Sync stops enqueuing new work, waits for pending copies, and reports this aggregate failure (checkpoint preserved for resume).
Solutions
- Fix the source listing problem (credentials/network), then resume sync from the checkpoint
- Re-run juicefs sync; completed objects are skipped
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/sync/sync.go:1472 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/2b42a31d61fb1b7b.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/sync/sync.go:1472
}
skip++
skipBytes += obj.Size()
if skip > 100 || time.Since(lastUpdate) > time.Millisecond*100 {
lastUpdate = time.Now()
flushProgress()
}
}
sendTask := func(obj object.Object) {
if checkpointMgr != nil {
checkpointMgr.AddPendingKey(prefix, obj)
}
tasks <- obj
}
for obj := range srckeys {
if obj == nil {
return fmt.Errorf("listing failed, stop syncing, waiting for pending ones")
}
if !config.Dirs && obj.IsDir() && (!config.Links || !obj.IsSymlink()) {
if checkpointMgr != nil {
checkpointMgr.UpdateLastListedKey(prefix, obj)
}
logger.Debug("Ignore directory ", obj.Key())
continue
}
if dstobj != nil && obj.Key() > dstobj.Key() {
if handleExtraObject(tasks, dstobj, config, checkpointMgr, prefix) {
return nil
}
dstobj = nil
}
if dstobj == nil {
for dstobj = range dstkeys {View on GitHub (pinned to c9a67b23e8)