Releases: hampsterx/async-kinesis
Releases · hampsterx/async-kinesis
2.5.6
What's Changed
- fix(consumer): handle missing NextShardIterator on exhausted shards (#26) by @hampsterx in #97
- feat: add kinesis dogfood soak tool by @hampsterx in #98
Full Changelog: 2.5.5...2.5.6
2.5.5
What's Changed
- fix(dynamodb): drop bogus Session.close() call (#94) by @hampsterx in #95
- fix(checkpointer): close #81 papercuts in BaseHeartbeatCheckPointer by @hampsterx in #92
- fix(checkpointer): serialise concurrent manual_checkpoint() flushes (#80) by @hampsterx in #96
Full Changelog: 2.5.4...2.5.5
2.5.4
What's Changed
- fix(consumer): stop rebuilding client on transient get_records errors (#73) by @hampsterx in #93
Full Changelog: 2.5.3...2.5.4
2.5.3
What's Changed
Fixes
- fix(consumer): skip get_records when client is mid-reconnect (#73) by @hampsterx in #91
- Eliminates log flood of
Unknown error 'NoneType' object has no attribute 'get_records'during connection-error spikes on multi-shard consumers. - Root cause: pre-existing race exposed by 2.5.2. One shard's
ConnectionClosedErrortriggers_get_reconn_helper(), which setsself.client = Nonefor 5+ seconds while rebuilding. Concurrent shards dispatched in the meantime hit the None client, raiseAttributeError, and mislabel aserror_type="unknown". - Fix: snapshot
self.clientinside the throttler block (past the only await point) and returnNonequietly if the client is mid-rebuild.fetch()already handles aNoneresult gracefully.
- Eliminates log flood of
Backwards compatibility
No API changes. Minor metrics shift: events previously landing in error_type="unknown" via this specific race no longer emit at all (they weren't real errors, just shards racing a reconnect). Total consumer_errors_total rate drops slightly as a result.
Full Changelog: 2.5.2...2.5.3
2.5.2
What's Changed
Fixes
- fix(consumer): keep iterator_age visible under error spikes (#73) by @hampsterx in #90
CONSUMER_ITERATOR_AGEnow re-emits cached value from the error branch, so the gauge stays observable when every shard is hitting transient errors.ConnectionClosedError,EndpointConnectionError,ReadTimeoutErrornow classify asconnection/timeoutinstead of falling through tounknown.
Docs
- docs: fix 9 accuracy issues across guides by @hampsterx in #89
Backwards compatibility
No API changes. Two observability-level shifts to be aware of:
consumer_iterator_age_millisecondsgauge now also emits from the error branch (stale by definition during outages, pair withconsumer_errors_totalrate).- Errors previously labeled
error_type="unknown"that match the three botocore subclasses above now land inconnection/timeout. Alerts should widen toerror_type=~"connection|timeout|unknown".
Full Changelog: 2.5.1...2.5.2
2.5.1
What's Changed
- fix(checkpointer): emit checkpoint metrics on backend write, not consumer call by @hampsterx in #75
- fix(checkpointer): retain buffered entries when manual_checkpoint() raises by @hampsterx in #77
- fix(dynamodb): propagate endpoint_url to all resource/client calls by @hampsterx in #78
- fix(checkpointer): best-effort manual_checkpoint() with compound raise by @hampsterx in #84
- chore(ci/test): bump Floci to 1.5.4, retire kinesalite, enable ARN test by @hampsterx in #85
- refactor(checkpointer): lift checkpoint()/manual_checkpoint() to base class (#82) by @hampsterx in #86
- docs: split contributor docs into AGENTS.md + CONTRIBUTING.md by @hampsterx in #87
Full Changelog: 2.5.0...2.5.1
2.5.0
What's Changed
- ci: replace LocalStack with Floci for CI Kinesis emulation by @hampsterx in #71
- ci: update publish workflow to use Floci instead of LocalStack by @hampsterx in #72
- feat(consumer): wire metrics_collector and emit consumer/stream metrics by @hampsterx in #74
Full Changelog: 2.4.1...2.5.0
2.4.0
What's Changed
- Fix checkpoint data loss: defer execution, fix queue timeout, add interval batching by @hampsterx in #66
Full Changelog: 2.3.1...2.4.0
2.3.1
2.3.0
What's Changed
- tweaks/Fix silent data loss when close() races with background flush by @hampsterx in #63
- Fix/consumer idle timeout and reconnect cleanup by @hampsterx in #64
Full Changelog: 2.2.5...2.3.0