Releases: pirumu/kacrab
Releases · pirumu/kacrab
Release list
v0.2.0 outage resilience
Outage-resilience release. The producer and consumer now recover from prolonged and total broker outages instead of wedging permanently. Includes one breaking consumer API change (Consumer::assign now returns Result), so this is a minor version bump under the pre-1.0 convention.
⚠️ Breaking
Consumer::assignnow returnsResult. Subscription modes are mutually exclusive (JavaSubscriptionStateparity): mixing a manualassignwithsubscribe/subscribe_patternreturnsConsumerError::InvalidState; callunsubscribeto switch. An emptyassignis treated asunsubscribe. (#45)
Added
Consumer::close_timeout(Duration)— close with a caller-chosen bound on the final commit-and-leave work. (#45)- Soak test harness (
benches/src/bin/soak_bench.rs): sustained load + broker/consumer chaos with a per-partition continuity verdict. (#46)
Fixed — outage resilience
- Producer no longer wedges permanently on a total-cluster outage longer than
delivery.timeout.ms— the background sender loop parked on a transient metadata/wireTimeoutand never woke once appends dried up; it now retries on the retry backoff. (#48) - Producer recovers from prolonged broker outages: requeued batches retry on a timer; the pump no longer wedges on an expired batch. (#47)
- Consumer recovers from a coordinator-broker outage instead of livelocking (clears a stale coordinator on connection/timeout errors; bounded JoinGroup/SyncGroup). (#47)
- Wire: fenced-broker handshake bounded by
request.timeout.ms; broker reader task aborted on drop / consumer close so sockets don't linger. (#47) init_transactionsretries a still-loading transaction coordinator (COORDINATOR_LOAD_IN_PROGRESS) for the fullmax.block.msinstead of the produceretriescount, matching Java. (#51)
Full changelog: CHANGELOG.md · crates.io: kacrab 0.2.0