{"record":{"id":"0b6e1a521f0d0d94","repo":"juicedata/juicefs","slug":"list-s-s","errorCode":null,"errorMessage":"list %s: %s","messagePattern":"list (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/sync/sync.go","lineNumber":1412,"sourceCode":"\t\tconfig.Limit--\n\t}\n\treturn config.Limit == 0\n}\n\nfunc startSingleProducer(tasks chan<- object.Object, src, dst object.ObjectStorage, prefix string, config *Config, checkpointMgr *CheckpointManager) error {\n\tstart, end := config.Start, config.End\n\tlogger.Debugf(\"maxResults: %d, defaultPartSize: %d, maxBlock: %d\", maxResults, defaultPartSize, maxBlock)\n\n\tstartAfter := start\n\tincludeStart := true\n\tif lastKey := checkpointMgr.GetLastListedKey(prefix); lastKey != \"\" {\n\t\tstartAfter = lastKey\n\t\tincludeStart = false\n\t}\n\n\tsrckeys, err := listAll(src, prefix, startAfter, end, !config.Links, includeStart)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"list %s: %s\", src, err)\n\t}\n\n\tvar dstkeys <-chan object.Object\n\tif config.ForceUpdate && !config.DeleteDst {\n\t\tt := make(chan object.Object)\n\t\tclose(t)\n\t\tdstkeys = t\n\t} else {\n\t\tdstkeys, err = listAll(dst, prefix, startAfter, end, !config.Links, includeStart)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"list %s: %s\", dst, err)\n\t\t}\n\t}\n\treturn produce(tasks, srckeys, dstkeys, config, checkpointMgr, prefix)\n}\n\nfunc produce(tasks chan<- object.Object, srckeys, dstkeys <-chan object.Object, config *Config, checkpointMgr *CheckpointManager, prefix string) (retErr error) {\n\tsrckeys = filter(srckeys, config.rules, config)","sourceCodeStart":1394,"sourceCodeEnd":1430,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/sync/sync.go#L1394-L1430","documentation":"Returned by startSingleProducer in `juicefs sync` when listing the source prefix fails. It wraps the object store's list error (permissions, unreachable endpoint, invalid prefix) and stops the producer for that prefix.","triggerScenarios":"Thrown at pkg/sync/sync.go:1412 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify source endpoint/credentials and list permission","Fix the --start/--end prefix filters if they are invalid"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}