Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.5] - 2026-07-10¶
Fixed¶
stop()claims the loop and thread atomically under the registrar lock, so concurrent stops (ASGI lifespan plus a manualcontainer.shutdown()) can no longer interleave — the loser sees no loop and returns. This was the root cause of the level-2 teardown hang that 0.1.3 only bounded; defense in depth alongside pico-ioc 2.3.3's idempotent container shutdown. Announced in 0.1.4 but that build shipped without the code change; the regression test now drives a real loop and fails against the 0.1.4stop().
[0.1.4] - 2026-07-10¶
Added¶
- Concurrent-stop regression test. The atomic
stop()it was meant to pin missed this build (the test passed vacuously without a running loop); fixed for real in 0.1.5.
[0.1.3] - 2026-07-10¶
Fixed¶
stop()is best-effort: if the clean shutdown exceeds its deadline, it logs a warning and forces the loop down instead of raising throughcontainer.shutdown(). An unclean broker disconnect beats a bricked application exit.
[0.1.2] - 2026-07-10¶
Fixed¶
- Shutdown uses
consumer_start_timeout_secondsas its deadline too: stopping real consumers (group leave + offset commit) under load exceeded the 10s produce timeout and madecontainer.shutdown()raise. Found by the flagship level-2 teardown.
[0.1.1] - 2026-07-10¶
Fixed¶
- Consumer startup no longer reuses
produce_timeout_secondsas its deadline: newkafka.consumer_start_timeout_secondssetting (default 60s). Cold brokers (fresh KRaft clusters) exposing the group coordinator slowly used to kill the whole container boot at 10s.
[0.1.0] - 2026-07-10¶
Added¶
@kafka_consumer(topic, group_id=)marker for component methods (sync and async); JSON record values decoded before dispatch.@kafka_producer/@produce(topic)declarative producing clients (sync stubs block on ack, async stubs await).KafkaRegistrar: dedicated background asyncio loop; one aiokafka consumer task per subscribed method; skip-on-failure policy so poison records never stall a partition; everything stopped on container shutdown.- Settings under the
kafkaprefix:bootstrap_servers,enabled,group_id,produce_timeout_seconds(zero-config). - Auto-discovery via the
pico_boot.modulesentry point.