- [Fix] Use
deletein the variant ensure block to avoid leaving stale nil entries inFiber.current.waterdrop_clientsand prevent memory leaks in long-running processes (#836). - [Fix] Exclude test files,
.github/, andlog/directories from gem releases to reduce package size. - [Breaking] Switch default polling mode from
:threadto:fd. If you experience any issues, you can revert to the previous behavior by settingconfig.polling.mode = :thread. The:threadmode will be deprecated in 2.10 and removed in 2.11. - [Breaking] Statistics decorator now only decorates keys used by the built-in Datadog metrics listener (
tx,txretries,txerrs,rxerrs) and skips unused subtrees (topics, broker window stats). This reduces decoration cost by ~425x on large clusters (10 brokers, 20 topics, 2000 partitions). Users who rely on other_dor_fdkeys in custom instrumentation should provide a custom decorator viaconfig.statistics_decorator. - [Feature] Add
config.statistics_decoratorsetting to allow full control over theStatisticsDecoratorinstance used for statistics decoration. Users can provide a custom decorator with differentonly_keysandexcluded_keysto match their instrumentation needs. - [Change] Upscale default timeout values 3x closer to librdkafka defaults to prevent intermediate timeouts during node recovery (
message.timeout.ms: 50s → 150s,transaction.timeout.ms: 55s → 165s,max_wait_timeout: 60s → 180s).
Upgrade Notes: https://karafka.io/docs/Upgrades-WaterDrop-2.9/