juicedata/juicefs · error
list %s with delimiter: %s
Error message
list %s with delimiter: %s
What it means
Returned by the delimiter-based producer in `juicefs sync` when listCommonPrefixes fails for the prefix. It wraps the store's listing error; when the error is ErrNotSUP the code falls back to the single producer, otherwise the producer aborts.
Source
Thrown at pkg/sync/sync.go:2066
startAfter := checkpointMgr.GetLastListedKey(prefix)
var onChildPrefix func(string)
if checkpointMgr != nil {
onChildPrefix = func(key string) {
if (len(config.rules) == 0 || matchLeveledPath(config.rules, key)) &&
key >= config.Start &&
(config.End == "" || key <= config.End) {
checkpointMgr.RegisterChildPrefix(key, listDepth-1)
}
}
}
srckeys, err := listCommonPrefix(src, prefix, commonPrefix, !config.Links, startAfter, onChildPrefix)
if err == utils.ErrNotSUP {
return startSingleProducer(tasks, src, dst, prefix, config, checkpointMgr)
} else if err != nil {
return fmt.Errorf("list %s with delimiter: %s", src, err)
}
var dcp chan object.Object
if config.DeleteDst {
dcp = commonPrefix // search common prefix in dst
}
var dstkeys <-chan object.Object
if config.ForceUpdate && !config.DeleteDst {
t := make(chan object.Object)
close(t)
dstkeys = t
} else {
dstkeys, err = listCommonPrefix(dst, prefix, dcp, !config.Links, startAfter, nil)
if err == utils.ErrNotSUP {
return startSingleProducer(tasks, src, dst, prefix, config, checkpointMgr)
} else if err != nil {
return fmt.Errorf("list %s with delimiter: %s", dst, err)
}
}View on GitHub (pinned to c9a67b23e8)
Solutions
- Check source store credentials and listing permissions
- Retry sync; transient list API failures are common on some backends
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/sync/sync.go:2066 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/aa17abb8268c4f22.
Report an issue: GitHub.