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

  1. Inspect the delslices row for the reported id in the metadata DB
  2. 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.