Minor version Features
- Added the `broker_version` kwarg to several components. It's currently only
used by the librdkafka features. The kwarg is used to facilitate the use of
librdkafka via pykafka against multiple Kafka broker versions.
- Changed offset commit requests to include useful information in the offset
metadata field, including consumer ID and hostname
- Added the `GroupHashingPartitioner`
Bug Fixes
- Fixed the operation of `consumer_timeout_ms`, which had been broken for
`BalancedConsumer` groups
- Fixed a bug causing `Producer.__del__` to crash during finalization
- Made the consumer's fetch loop nonbusy when the internal queues are full to
save CPU cycles when message volume is high
- Fixed a bug causing `Producer.flush()` to wait for `linger_ms` during calls initiated
by `_update()`
- Fixed a race condition between `Producer._update` and `OwnedBroker.flush` causing
infinite retry loops
- Changed `Producer.produce` to block while the internal broker list is being updated.
This avoids possible mismatches between old and new cluster metadata used by the
`Producer`.
- Fixed an issue causing consumer group names to be written to ZooKeeper with a literal
`b''` in python3. :warning:**Since this change adjusts ZooKeeper storage formats, it
should be applied with caution to production systems. Deploying this change without a
careful rollout plan could cause consumers to lose track of their offsets.**:warning:
- Added logic to group coordinator discovery that retries the request once per broker
- Handled socket errors in `BrokerConnection`
- Fixed a bug causing synchronous production to hang in some situations
Miscellaneous
- Upgraded the version of PyPy used in automated tests
- Upgraded the version of librdkafka used in automated tests
- Pinned the version of the `testinstances` library on which the tests depend