nats-io/nats-server · error
bad pending entry, sequence [%d] out of range
Error message
bad pending entry, sequence [%d] out of range
What it means
Sanity check while copying pending entries in consumerMemStore.Update: a pending-ack entry references a stream sequence at or below the AckFloor (or otherwise outside the valid range), meaning the state says a message is awaiting ack that should already have been acked.
Source
Thrown at server/memstore.go:2776
func (o *consumerMemStore) Update(state *ConsumerState) error {
// Sanity checks.
if state.AckFloor.Consumer > state.Delivered.Consumer {
return fmt.Errorf("bad ack floor for consumer")
}
if state.AckFloor.Stream > state.Delivered.Stream {
return fmt.Errorf("bad ack floor for stream")
}
// Copy to our state.
var pending map[uint64]*Pending
var redelivered map[uint64]uint64
if len(state.Pending) > 0 {
pending = make(map[uint64]*Pending, len(state.Pending))
for seq, p := range state.Pending {
pending[seq] = &Pending{p.Sequence, p.Timestamp}
if seq <= state.AckFloor.Stream || seq > state.Delivered.Stream {
return fmt.Errorf("bad pending entry, sequence [%d] out of range", seq)
}
}
}
if len(state.Redelivered) > 0 {
redelivered = make(map[uint64]uint64, len(state.Redelivered))
for seq, dc := range state.Redelivered {
redelivered[seq] = dc
}
}
// Replace our state.
o.mu.Lock()
defer o.mu.Unlock()
// Check to see if this is an outdated update.
if state.Delivered.Consumer < o.state.Delivered.Consumer || state.AckFloor.Stream < o.state.AckFloor.Stream {
return ErrStoreOldUpdate
}View on GitHub (pinned to 3a66a489d2)
Solutions
- Drop stale pending entries that fall below the AckFloor before calling Update
- Rebuild the consumer state if pending and ack floor disagree persistently
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/memstore.go:2776 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/a822f3d6eb92f900.
Report an issue: GitHub.