juicedata/juicefs · error
invalid value for delayed slices %d: %v
Error message
invalid value for delayed slices %d: %v
What it means
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.
Source
Thrown at pkg/meta/sql.go:3836
var batch int = 1e6
for {
_ = m.simpleTxn(ctx, func(s *xorm.Session) error {
result = result[:0]
return s.Where("deleted < ?", edge).Limit(batch, 0).Find(&result)
})
for _, ds := range result {
if err := m.txn(func(ses *xorm.Session) error {
ss = ss[:0]
ds := delslices{Id: ds.Id}
if ok, e := ses.ForUpdate().Get(&ds); e != nil {
return e
} else if !ok {
return nil
}
m.decodeDelayedSlices(ds.Slices, &ss)
if len(ss) == 0 {
return fmt.Errorf("invalid value for delayed slices %d: %v", ds.Id, ds.Slices)
}
for _, s := range ss {
if _, e := ses.Exec(m.sqlConv("update chunk_ref set refs=refs-1 where chunkid=? AND size=?"), s.Id, s.Size); e != nil {
return e
}
}
_, e := ses.Delete(&delslices{Id: ds.Id})
m.genLog(ctx, ses, time.Now().UnixNano(), "CLEANUP_DELAYED_SLICES(%d,%d)", ds.Id, ds.Deleted)
return e
}); err != nil {
logger.Warnf("Cleanup delayed slices %d: %s", ds.Id, err)
continue
}
for _, s := range ss {
var ref = sliceRef{Id: s.Id}
err := m.simpleTxn(ctx, func(s *xorm.Session) error {
ok, err := s.Get(&ref)
if err == nil && !ok {View on GitHub (pinned to c9a67b23e8)
Solutions
- Inspect the delslices row for the reported id in the metadata DB
- Contact JuiceFS support before manually fixing corrupted metadata
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/meta/sql.go:3836 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/12786ed7c32faecb.
Report an issue: GitHub.