nats-io/nats-server · error
indexCacheBuf corrupt record state in %s: dlen %d slen %d in
Error message
indexCacheBuf corrupt record state in %s: dlen %d slen %d index %d rl %d lbuf %d
What it means
Per-record sanity checks on a message header inside indexCacheBuf failed: negative data length, subject length exceeding record bounds, record length beyond buffer/rlBadThresh, or the record overrunning the buffer. The block is corrupt and indexing stops with errCorruptState.
Source
Thrown at server/filestore.go:8526
for index < lbuf {
if index+msgHdrSize > lbuf {
return errCorruptState
}
hdr := buf[index : index+msgHdrSize]
rl, slen := le.Uint32(hdr[0:]), int(le.Uint16(hdr[20:]))
seq = le.Uint64(hdr[4:])
hasHeaders := rl&hbit != 0
// Clear any headers bit that could be set.
rl &^= hbit
shlen := slen
if hasHeaders {
shlen += 4
}
dlen := int(rl) - msgHdrSize
// Do some quick sanity checks here.
if dlen < 0 || shlen > (dlen-recordHashSize) || dlen > int(rl) || index+rl > lbuf || rl > rlBadThresh {
mb.fs.warn("indexCacheBuf corrupt record state in %s: dlen %d slen %d index %d rl %d lbuf %d", mb.mfn, dlen, slen, index, rl, lbuf)
// This means something is off.
// TODO(dlc) - Add into bad list?
return errCorruptState
}
// Check for tombstones which we can skip in terms of indexing.
if seq&tbit != 0 {
index += rl
continue
}
// Clear any erase bits.
erased := seq&ebit != 0
seq = seq &^ ebit
// The sequence needs to only ever move up.
if seq <= last {
// Advance to next record.View on GitHub (pinned to 3a66a489d2)
Solutions
- Allow the store to mark the block corrupt and rebuild from remaining data
- Investigate torn writes or media corruption on the storage device
- Restore from backup if the affected messages are required
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/filestore.go:8526 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nats-io/nats-server@3a66a489d2 (2026-09-02).
Data as JSON: /api/errors/7a217b9d353ee9c7.
Report an issue: GitHub.