Skip to content

Commit 0c2523c

Browse files
committed
Release 1.4.0
1 parent acc3a0f commit 0c2523c

File tree

6 files changed

+189
-7
lines changed

6 files changed

+189
-7
lines changed

CHANGES.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,88 @@
1+
# 1.4.0 (Feb 6, 2018)
2+
3+
This is a substantial release. Although there are no known 'showstopper' bugs as of release,
4+
we do recommend you test any planned upgrade to your application prior to running in production.
5+
6+
Some of the major changes include:
7+
* We have officially dropped python 2.6 support
8+
* The KafkaConsumer now includes a background thread to handle coordinator heartbeats
9+
* API protocol handling has been separated from networking code into a new class, KafkaProtocol
10+
* Added support for kafka message format v2
11+
* Refactored DNS lookups during kafka broker connections
12+
* SASL authentication is working (we think)
13+
* Removed several circular references to improve gc on close()
14+
15+
Thanks to all contributors -- the state of the kafka-python community is strong!
16+
17+
Detailed changelog are listed below:
18+
19+
Client
20+
* Fixes for SASL support
21+
* Refactor SASL/gssapi support (dpkp #1248 #1249 #1257 #1262 #1280)
22+
* Add security layer negotiation to the GSSAPI authentication (asdaraujo #1283)
23+
* Fix overriding sasl_kerberos_service_name in KafkaConsumer / KafkaProducer (natedogs911 #1264)
24+
* Fix typo in _try_authenticate_plain (everpcpc #1333)
25+
* Fix for Python 3 byte string handling in SASL auth (christophelec #1353)
26+
* Move callback processing from BrokerConnection to KafkaClient (dpkp #1258)
27+
* Use socket timeout of request_timeout_ms to prevent blocking forever on send (dpkp #1281)
28+
* Refactor dns lookup in BrokerConnection (dpkp #1312)
29+
* Read all available socket bytes (dpkp #1332)
30+
* Honor reconnect_backoff in conn.connect() (dpkp #1342)
31+
32+
Consumer
33+
* KAFKA-3977: Defer fetch parsing for space efficiency, and to raise exceptions to user (dpkp #1245)
34+
* KAFKA-4034: Avoid unnecessary consumer coordinator lookup (dpkp #1254)
35+
* Handle lookup_coordinator send failures (dpkp #1279)
36+
* KAFKA-3888 Use background thread to process consumer heartbeats (dpkp #1266)
37+
* Improve KafkaConsumer cleanup (dpkp #1339)
38+
* Fix coordinator join_future race condition (dpkp #1338)
39+
* Avoid KeyError when filtering fetchable partitions (dpkp #1344)
40+
* Name heartbeat thread with group_id; use backoff when polling (dpkp #1345)
41+
* KAFKA-3949: Avoid race condition when subscription changes during rebalance (dpkp #1364)
42+
* Fix #1239 regression to avoid consuming duplicate compressed messages from mid-batch (dpkp #1367)
43+
44+
Producer
45+
* Fix timestamp not passed to RecordMetadata (tvoinarovskyi #1273)
46+
* Raise non-API exceptions (jeffwidman #1316)
47+
* Fix reconnect_backoff_max_ms default config bug in KafkaProducer (YaoC #1352)
48+
49+
Core / Protocol
50+
* Add kafka.protocol.parser.KafkaProtocol w/ receive and send (dpkp #1230)
51+
* Refactor MessageSet and Message into LegacyRecordBatch to later support v2 message format (tvoinarovskyi #1252)
52+
* Add DefaultRecordBatch implementation aka V2 message format parser/builder. (tvoinarovskyi #1185)
53+
* optimize util.crc32 (ofek #1304)
54+
* Raise better struct pack/unpack errors (jeffwidman #1320)
55+
* Add Request/Response structs for kafka broker 1.0.0 (dpkp #1368)
56+
57+
Bugfixes
58+
* use python standard max value (lukekingbru #1303)
59+
* changed for to use enumerate() (TheAtomicOption #1301)
60+
* Explicitly check for None rather than falsey (jeffwidman #1269)
61+
* Minor Exception cleanup (jeffwidman #1317)
62+
* Use non-deprecated exception handling (jeffwidman a699f6a)
63+
* Remove assertion with side effect in client.wakeup() (bgedik #1348)
64+
* use absolute imports everywhere (kevinkjt2000 #1362)
65+
66+
Test Infrastructure
67+
* Use 0.11.0.2 kafka broker for integration testing (dpkp #1357 #1244)
68+
* Add a Makefile to help build the project, generate docs, and run tests (tvoinarovskyi #1247)
69+
* Add fixture support for 1.0.0 broker (dpkp #1275)
70+
* Add kafka 1.0.0 to travis integration tests (dpkp #1365)
71+
* Change fixture default host to localhost (asdaraujo #1305)
72+
* Minor test cleanups (dpkp #1343)
73+
* Use latest pytest 3.4.0, but drop pytest-sugar due to incompatibility (dpkp #1361)
74+
75+
Documentation
76+
* Expand metrics docs (jeffwidman #1243)
77+
* Fix docstring (jeffwidman #1261)
78+
* Added controlled thread shutdown to example.py (TheAtomicOption #1268)
79+
* Add license to wheel (jeffwidman #1286)
80+
* Use correct casing for MB (jeffwidman #1298)
81+
82+
Logging / Error Messages
83+
* Fix two bugs in printing bytes instance (jeffwidman #1296)
84+
85+
186
# 1.3.5 (Oct 7, 2017)
287

388
Bugfixes

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Kafka Python client
22
------------------------
33

4-
.. image:: https://img.shields.io/badge/kafka-0.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
4+
.. image:: https://img.shields.io/badge/kafka-1.0%2C%200.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
55
:target: https://kafka-python.readthedocs.io/compatibility.html
66
.. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
77
:target: https://pypi.python.org/pypi/kafka-python
@@ -141,7 +141,7 @@ for interacting with kafka brokers via the python repl. This is useful for
141141
testing, probing, and general experimentation. The protocol support is
142142
leveraged to enable a KafkaClient.check_version() method that
143143
probes a kafka broker and attempts to identify which version it is running
144-
(0.8.0 to 0.11).
144+
(0.8.0 to 1.0).
145145

146146
Low-level
147147
*********

docs/changelog.rst

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,103 @@
11
Changelog
22
=========
33

4+
1.4.0 (Feb 6, 2018)
5+
###################
6+
7+
This is a substantial release. Although there are no known 'showstopper' bugs as of release,
8+
we do recommend you test any planned upgrade to your application prior to running in production.
9+
10+
Some of the major changes include:
11+
12+
* We have officially dropped python 2.6 support
13+
* The KafkaConsumer now includes a background thread to handle coordinator heartbeats
14+
* API protocol handling has been separated from networking code into a new class, KafkaProtocol
15+
* Added support for kafka message format v2
16+
* Refactored DNS lookups during kafka broker connections
17+
* SASL authentication is working (we think)
18+
* Removed several circular references to improve gc on close()
19+
20+
Thanks to all contributors -- the state of the kafka-python community is strong!
21+
22+
Detailed changelog are listed below:
23+
24+
Client
25+
------
26+
* Fixes for SASL support
27+
28+
* Refactor SASL/gssapi support (dpkp #1248 #1249 #1257 #1262 #1280)
29+
* Add security layer negotiation to the GSSAPI authentication (asdaraujo #1283)
30+
* Fix overriding sasl_kerberos_service_name in KafkaConsumer / KafkaProducer (natedogs911 #1264)
31+
* Fix typo in _try_authenticate_plain (everpcpc #1333)
32+
* Fix for Python 3 byte string handling in SASL auth (christophelec #1353)
33+
34+
* Move callback processing from BrokerConnection to KafkaClient (dpkp #1258)
35+
* Use socket timeout of request_timeout_ms to prevent blocking forever on send (dpkp #1281)
36+
* Refactor dns lookup in BrokerConnection (dpkp #1312)
37+
* Read all available socket bytes (dpkp #1332)
38+
* Honor reconnect_backoff in conn.connect() (dpkp #1342)
39+
40+
Consumer
41+
--------
42+
* KAFKA-3977: Defer fetch parsing for space efficiency, and to raise exceptions to user (dpkp #1245)
43+
* KAFKA-4034: Avoid unnecessary consumer coordinator lookup (dpkp #1254)
44+
* Handle lookup_coordinator send failures (dpkp #1279)
45+
* KAFKA-3888 Use background thread to process consumer heartbeats (dpkp #1266)
46+
* Improve KafkaConsumer cleanup (dpkp #1339)
47+
* Fix coordinator join_future race condition (dpkp #1338)
48+
* Avoid KeyError when filtering fetchable partitions (dpkp #1344)
49+
* Name heartbeat thread with group_id; use backoff when polling (dpkp #1345)
50+
* KAFKA-3949: Avoid race condition when subscription changes during rebalance (dpkp #1364)
51+
* Fix #1239 regression to avoid consuming duplicate compressed messages from mid-batch (dpkp #1367)
52+
53+
Producer
54+
--------
55+
* Fix timestamp not passed to RecordMetadata (tvoinarovskyi #1273)
56+
* Raise non-API exceptions (jeffwidman #1316)
57+
* Fix reconnect_backoff_max_ms default config bug in KafkaProducer (YaoC #1352)
58+
59+
Core / Protocol
60+
---------------
61+
* Add kafka.protocol.parser.KafkaProtocol w/ receive and send (dpkp #1230)
62+
* Refactor MessageSet and Message into LegacyRecordBatch to later support v2 message format (tvoinarovskyi #1252)
63+
* Add DefaultRecordBatch implementation aka V2 message format parser/builder. (tvoinarovskyi #1185)
64+
* optimize util.crc32 (ofek #1304)
65+
* Raise better struct pack/unpack errors (jeffwidman #1320)
66+
* Add Request/Response structs for kafka broker 1.0.0 (dpkp #1368)
67+
68+
Bugfixes
69+
--------
70+
* use python standard max value (lukekingbru #1303)
71+
* changed for to use enumerate() (TheAtomicOption #1301)
72+
* Explicitly check for None rather than falsey (jeffwidman #1269)
73+
* Minor Exception cleanup (jeffwidman #1317)
74+
* Use non-deprecated exception handling (jeffwidman a699f6a)
75+
* Remove assertion with side effect in client.wakeup() (bgedik #1348)
76+
* use absolute imports everywhere (kevinkjt2000 #1362)
77+
78+
Test Infrastructure
79+
-------------------
80+
* Use 0.11.0.2 kafka broker for integration testing (dpkp #1357 #1244)
81+
* Add a Makefile to help build the project, generate docs, and run tests (tvoinarovskyi #1247)
82+
* Add fixture support for 1.0.0 broker (dpkp #1275)
83+
* Add kafka 1.0.0 to travis integration tests (dpkp #1365)
84+
* Change fixture default host to localhost (asdaraujo #1305)
85+
* Minor test cleanups (dpkp #1343)
86+
* Use latest pytest 3.4.0, but drop pytest-sugar due to incompatibility (dpkp #1361)
87+
88+
Documentation
89+
-------------
90+
* Expand metrics docs (jeffwidman #1243)
91+
* Fix docstring (jeffwidman #1261)
92+
* Added controlled thread shutdown to example.py (TheAtomicOption #1268)
93+
* Add license to wheel (jeffwidman #1286)
94+
* Use correct casing for MB (jeffwidman #1298)
95+
96+
Logging / Error Messages
97+
------------------------
98+
* Fix two bugs in printing bytes instance (jeffwidman #1296)
99+
100+
4101
1.3.5 (Oct 7, 2017)
5102
####################
6103

docs/compatibility.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
Compatibility
22
-------------
33

4-
.. image:: https://img.shields.io/badge/kafka-0.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
4+
.. image:: https://img.shields.io/badge/kafka-1.0%2C%200.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
55
:target: https://kafka-python.readthedocs.io/compatibility.html
66
.. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
77
:target: https://pypi.python.org/pypi/kafka-python
88

9-
kafka-python is compatible with (and tested against) broker versions 0.11
9+
kafka-python is compatible with (and tested against) broker versions 1.0
1010
through 0.8.0 . kafka-python is not compatible with the 0.8.2-beta release.
1111

1212
kafka-python is tested on python 2.7, 3.4, 3.5, 3.6 and pypy.

docs/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
kafka-python
22
############
33

4-
.. image:: https://img.shields.io/badge/kafka-0.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
4+
.. image:: https://img.shields.io/badge/kafka-1.0%2C%200.11%2C%200.10%2C%200.9%2C%200.8-brightgreen.svg
55
:target: https://kafka-python.readthedocs.io/compatibility.html
66
.. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
77
:target: https://pypi.python.org/pypi/kafka-python
@@ -136,7 +136,7 @@ for interacting with kafka brokers via the python repl. This is useful for
136136
testing, probing, and general experimentation. The protocol support is
137137
leveraged to enable a :meth:`~kafka.KafkaClient.check_version()`
138138
method that probes a kafka broker and
139-
attempts to identify which version it is running (0.8.0 to 0.11).
139+
attempts to identify which version it is running (0.8.0 to 1.0).
140140

141141

142142
Low-level

kafka/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.3.6.dev'
1+
__version__ = '1.4.0'

0 commit comments

Comments
 (0)