juicedata/juicefs · error
failed to clean up sid %d
Error message
failed to clean up sid %d
What it means
Returned by kvMeta cleanup when one or more cleanup steps for a stale session failed (locks, sustained inodes); individual failures are logged as warnings and this aggregate error signals the session was not fully reaped and cleanup should be retried later.
Source
Thrown at pkg/meta/tkv.go:752
logger.Warnf("Scan plock with sid %d: %s", sid, err)
fail = true
}
if keys, err := m.scanKeys(ctx, m.fmtKey("SS", sid)); err == nil {
for _, key := range keys {
inode := m.decodeInode(key[10:]) // "SS" + sid
if err = m.doDeleteSustainedInode(sid, inode); err != nil {
logger.Warnf("Delete sustained inode %d of sid %d: %s", inode, sid, err)
fail = true
}
}
} else {
logger.Warnf("Scan sustained with sid %d: %s", sid, err)
fail = true
}
if fail {
return fmt.Errorf("failed to clean up sid %d", sid)
} else {
if !m.getFormat().ChangeLog {
return m.deleteKeys(m.sessionKey(sid), m.legacySessionKey(sid), m.sessionInfoKey(sid))
}
return m.txn(ctx, func(tx *kvTxn) error {
tx.delete(m.sessionKey(sid))
tx.delete(m.legacySessionKey(sid))
tx.delete(m.sessionInfoKey(sid))
m.genLog(tx, time.Now(), "CLEANSESSION(%d)", sid)
return nil
})
}
}
func (m *kvMeta) doFindStaleSessions(limit int) ([]uint64, error) {
ctx := Background()
vals, err := m.scanValues(ctx, m.fmtKey("SE"), limit, func(k, v []byte) bool {
return m.parseInt64(v) < time.Now().Unix()View on GitHub (pinned to c9a67b23e8)
Solutions
- Retry later; the next cleanup pass will re-attempt the failed steps
- Address the logged per-key failures (KV store errors) if persistent
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/meta/tkv.go:752 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/6cbf9ccc5415ff5f.
Report an issue: GitHub.