Idempotent Producer
Idempotent Producer
A streaming system assigns each producer a sequence number per partition. The broker should accept only in-order sequences for each producer.
Rules:
- Track the last accepted sequence per producer.
- Accept a record if
Seq == last + 1. - Reject if
Seq <= last(duplicate) orSeq > last + 1(out of order).
Return a boolean decision for each record.
Types
type Record struct {
ProducerID int
Seq int
}
Function signature
func IdempotentAccept(records []Record) []bool
Example
records = [(P1,1), (P1,1), (P1,2), (P1,4), (P2,1)]
output = [true, false, true, false, true]
Constraints
0 <= len(records) <= 1000000 <= Seq <= 1_000_000
Run tests to see results
No issues detected