{"record":{"id":"12786ed7c32faecb","repo":"juicedata/juicefs","slug":"invalid-value-for-delayed-slices-d-v","errorCode":null,"errorMessage":"invalid value for delayed slices %d: %v","messagePattern":"invalid value for delayed slices (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/meta/sql.go","lineNumber":3836,"sourceCode":"\tvar batch int = 1e6\n\tfor {\n\t\t_ = m.simpleTxn(ctx, func(s *xorm.Session) error {\n\t\t\tresult = result[:0]\n\t\t\treturn s.Where(\"deleted < ?\", edge).Limit(batch, 0).Find(&result)\n\t\t})\n\n\t\tfor _, ds := range result {\n\t\t\tif err := m.txn(func(ses *xorm.Session) error {\n\t\t\t\tss = ss[:0]\n\t\t\t\tds := delslices{Id: ds.Id}\n\t\t\t\tif ok, e := ses.ForUpdate().Get(&ds); e != nil {\n\t\t\t\t\treturn e\n\t\t\t\t} else if !ok {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tm.decodeDelayedSlices(ds.Slices, &ss)\n\t\t\t\tif len(ss) == 0 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid value for delayed slices %d: %v\", ds.Id, ds.Slices)\n\t\t\t\t}\n\t\t\t\tfor _, s := range ss {\n\t\t\t\t\tif _, e := ses.Exec(m.sqlConv(\"update chunk_ref set refs=refs-1 where chunkid=? AND size=?\"), s.Id, s.Size); e != nil {\n\t\t\t\t\t\treturn e\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_, e := ses.Delete(&delslices{Id: ds.Id})\n\t\t\t\tm.genLog(ctx, ses, time.Now().UnixNano(), \"CLEANUP_DELAYED_SLICES(%d,%d)\", ds.Id, ds.Deleted)\n\t\t\t\treturn e\n\t\t\t}); err != nil {\n\t\t\t\tlogger.Warnf(\"Cleanup delayed slices %d: %s\", ds.Id, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, s := range ss {\n\t\t\t\tvar ref = sliceRef{Id: s.Id}\n\t\t\t\terr := m.simpleTxn(ctx, func(s *xorm.Session) error {\n\t\t\t\t\tok, err := s.Get(&ref)\n\t\t\t\t\tif err == nil && !ok {","sourceCodeStart":3818,"sourceCodeEnd":3854,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/meta/sql.go#L3818-L3854","documentation":"Returned while cleaning delayed slices when a delslices row decodes to an empty slice list. The stored value is malformed, so cleanup cannot proceed for that row and the transaction is aborted to avoid silently dropping referenced data.","triggerScenarios":"Thrown at pkg/meta/sql.go:3836 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the delslices row for the reported id in the metadata DB","Contact JuiceFS support before manually fixing corrupted metadata"],"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-14T00:17:10.932Z"}