{"record":{"id":"cfb97f121fe8c034","repo":"juicedata/juicefs","slug":"open-s-s-cfb97f","errorCode":null,"errorMessage":"open %s: %s","messagePattern":"open (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/sync/sync.go","lineNumber":1867,"sourceCode":"\tlogger.Debugf(\"Restore prefix %q from checkpoint, restoreObjs: %d, listDone: %v\", prefix, len(objs), listDone)\n\tfor _, obj := range objs {\n\t\tincrTotal(1)\n\t\ttasks <- obj\n\t}\n\n\tif !listDone {\n\t\tif err := startProducer(tasks, src, dst, prefix, listDepth, config, checkpointMgr); err != nil {\n\t\t\tlogger.Errorf(\"Failed to restart producer for prefix %s: %v\", prefix, err)\n\t\t\tfailed.Increment()\n\t\t}\n\t}\n\treturn true\n}\n\nfunc produceFromList(tasks chan<- object.Object, src, dst object.ObjectStorage, config *Config, checkpointMgr *CheckpointManager) error {\n\tf, err := os.Open(config.FilesFrom)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"open %s: %s\", config.FilesFrom, err)\n\t}\n\tdefer f.Close()\n\n\tprefixs := make(chan string, config.Threads)\n\tvar wg sync.WaitGroup\n\twg.Add(config.Threads)\n\tfor i := 0; i < config.Threads; i++ {\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tfor key := range prefixs {\n\t\t\t\tif !strings.HasSuffix(key, \"/\") {\n\t\t\t\t\tif err := produceSingleObject(tasks, src, dst, key, config, checkpointMgr); err == nil {\n\t\t\t\t\t\tlistedPrefix.Increment()\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else if errors.Is(err, errDirSuffix) {\n\t\t\t\t\t\tkey += \"/\"\n\t\t\t\t\t} else if os.IsNotExist(err) {\n\t\t\t\t\t\tatomic.AddInt64(&ignoreFiles, 1)","sourceCodeStart":1849,"sourceCodeEnd":1885,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/sync/sync.go#L1849-L1885","documentation":"Returned by produceFromList in `juicefs sync` when the --files-from list file cannot be opened. The wrapped error is the os.Open failure — missing file or unreadable path — so the object list to copy cannot be read.","triggerScenarios":"Thrown at pkg/sync/sync.go:1867 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the --files-from path exists and is readable"],"exampleFix":null,"handlingStrategy":"validation","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-14T05:17:10.506Z"}