This release is primarily focused on addressing lock contention
and other coordination issues between the KafkaConsumer and the
background heartbeat thread that was introduced in the 1.4 release.
Consumer
* connections_max_idle_ms must be larger than request_timeout_ms (jeffwidman / PR 1688)
* Avoid race condition during close() / join heartbeat thread (dpkp / PR 1735)
* Use last offset from fetch v4 if available to avoid getting stuck in compacted topic (keithks / PR 1724)
* Synchronize puts to KafkaConsumer protocol buffer during async sends (dpkp / PR 1733)
* Improve KafkaConsumer join group / only enable Heartbeat Thread during stable group (dpkp / PR 1695)
* Remove unused `skip_double_compressed_messages` (jeffwidman / PR 1677)
* Fix commit_offsets_async() callback (Faqa / PR 1712)
Client
* Retry bootstrapping after backoff when necessary (dpkp / PR 1736)
* Recheck connecting nodes sooner when refreshing metadata (dpkp / PR 1737)
* Avoid probing broker versions twice on newer brokers (dpkp / PR 1738)
* Move all network connections and writes to KafkaClient.poll() (dpkp / PR 1729)
* Do not require client lock for read-only operations (dpkp / PR 1730)
* Timeout all unconnected conns (incl SSL) after request_timeout_ms (dpkp / PR 1696)
Admin Client
* Fix AttributeError in response topic error codes checking (jeffwidman)
* Fix response error checking in KafkaAdminClient send_to_controller (jeffwidman)
* Fix NotControllerError check (jeffwidman)
Core/Protocol
* Fix default protocol parser version / 0.8.2 version probe (dpkp / PR 1740)
* Make NotEnoughReplicasError/NotEnoughReplicasAfterAppendError retriable (le-linh / PR 1722)
Bugfixes
* Use copy() in metrics() to avoid thread safety issues (emeric254 / PR 1682)
Test Infrastructure
* Mock dns lookups in test_conn (dpkp / PR 1739)
* Use test.fixtures.version not test.conftest.version to avoid warnings (dpkp / PR 1731)
* Fix test_legacy_correct_metadata_response on x86 arch (stanislavlevin / PR 1718)
* Travis CI: 'sudo' tag is now deprecated in Travis (cclauss / PR 1698)
* Use Popen.communicate() instead of Popen.wait() (Baisang / PR 1689)
Compatibility
* Catch thrown OSError by python 3.7 when creating a connection (danjo133 / PR 1694)
* Update travis test coverage: 2.7, 3.4, 3.7, pypy2.7 (jeffwidman, dpkp / PR 1614)
* Drop dependency on sphinxcontrib-napoleon (stanislavlevin / PR 1715)
* Remove unused import from kafka/producer/record_accumulator.py (jeffwidman / PR 1705)
* Fix SSL connection testing in Python 3.7 (seanthegeek, silentben / PR 1669)