Features - Allowed consumers to run with no partitions
Bug Fixes - Fixed a bug causing consumers to hold outdated partition sets - Handled some previously uncaught error codes in `SimpleConsumer` - Fixed an off-by-one bug in message set fetching - Made `consume()` stricter about message ordering and duplication
2.1.1
Features - Improved unicode-related error reporting in several components - Removed the ZooKeeper checker thread from the `BalancedConsumer` - Added a test consumer CLI to `kafka_tools`
Bug Fixes - Fixed a memory leak in the rdkafka-based consumer - Fixed offset committing to work against Kafka 0.9 - Improved the reliability of the Kafka test harness
Miscellaneous - Simplified the Travis test matrix to handle testing against multiple Kafka versions
2.1.0
Features - Addded an optional C extension making use of librdkafka for enhanced producer and consumer performance - Added a delivery report queue to the `Producer` allowing per-message errors to be handled - Added a callback indicating that the `BalancedConsumer` is in the process of rebalancing
Bug Fixes - Fixed a longstanding issue causing certain tests to hang on Travis - Fixed a bug causing the default error handles in the consumer to mask unknown error codes - Moved the `Message` class to using `__slots__` to minimize its memory footprint
2.0.4
Features - Allowed discovery of Kafka brokers via a ZooKeeper connect string supplied to `KafkaClient`
Bug Fixes - Made `BalancedConsumer`'s ZooKeeper watches close quietly on consumer exit - Disconnect sockets in response to any socket-level errors - Fixed `HashingPartitioner` for python 3
2.0.3
Features - Raise exceptions from worker threads to the main thread in `BalancedConsumer` - Call `stop()` when `BalancedConsumer` is finalized to minimize zombie threads
Bug Fixes - Use weak references in `BalancedConsumer` workers to avoid zombie threads creating memory leaks - Stabilize `BalancedConsumer.start()` - Fix a bug in `TopicDict.values()` causing topics to be listed as `None` - Handle `IOError` in `BrokerConnection` and `socket.recvall_into` - Unconditionally update partitions' leaders after metadata requests - Fix thread-related memory leaks in `Producer` - Handle connection errors during offset commits - Fix an interpreter error in `SimpleConsumer`
2.0.2
Features - Switched the `BalancedConsumer` to using ZooKeeper as the single source of truth about which partitions are held - Made `BalancedConsumer` resilient to ZooKeeper failure - Made the consumer resilient to broker failure
Bug Fixes - Fixed a bug in `BrokerConnection` causing the message length field to occasionally be corrupted - Fixed a bug causing `RequestHandler` worker threads to sometimes abort before the request was completed - Fixed a bug causing `SimpleConsumer` to hang when the number of brokers in the cluster goes below the replication factor