Idempotent Producer

medium · distributed-systems, streaming, logs

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) or Seq > 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) <= 100000
  • 0 <= Seq <= 1_000_000
Run tests to see results
No issues detected