juicedata/juicefs · error
delete slice from chunk %s fail: %s, retry later
Error message
delete slice from chunk %s fail: %s, retry later
What it means
Returned by dbMeta.deleteChunk_s after the transaction deleting slices from a chunk fails; the 'retry later' wording marks it as transient — concurrent modification or DB errors abort the txn and the delayed-slice cleanup will be retried in a later GC pass.
Source
Thrown at pkg/meta/sql.go:3771
deltas := make(map[uint64]int)
for _, sl := range ss {
if sl.id > 0 {
deltas[sl.id] += -1
}
}
if err = m.batchUpdateChunkRefs(s, deltas); err != nil {
return err
}
c.Slices = nil
n, err := s.Where("inode = ? AND indx = ?", inode, indx).Delete(&c)
if err == nil && n == 0 {
err = fmt.Errorf("chunk %d:%d changed, try restarting transaction", inode, indx)
}
m.genLog(Background(), s, time.Now().UnixNano(), "DELCHUNK(%d,%d)", inode, indx)
return err
})
if err != nil {
return fmt.Errorf("delete slice from chunk %s fail: %s, retry later", inode, err)
}
for _, s := range ss {
if s.id == 0 {
continue
}
var ref = sliceRef{Id: s.id}
err := m.simpleTxn(Background(), func(s *xorm.Session) error {
ok, err := s.Get(&ref)
if err == nil && !ok {
err = errors.New("not found")
}
return err
})
if err == nil && ref.Refs <= 0 {
m.deleteSlice(s.id, s.size)
}
}
return nilView on GitHub (pinned to c9a67b23e8)
Solutions
- No action needed for transient conflicts; GC retries automatically
- Persistent failures: check DB health, locks, and replication lag
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/meta/sql.go:3771 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/faecee94326afbc6.
Report an issue: GitHub.