You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* SASL: Prefer node hostname to IP address when building mechanisms (#3003)
56
54
57
55
### Timeouts and Connection Management
58
56
Per-request and per-stage timeouts replace the old single client-wide timeout.
59
57
* KIP-601: support socket_connection_setup_timeout_ms w/ exponential backoff (#3027)
60
58
* kafka.net: Bootstrap if needed for metadata refresh (#2825)
61
-
* kafka.net.manager: Close before stopping IO thread; fail pending bootstrap (#2934)
62
59
* kafka.net: Raise UnknownBrokerIdError when connection fails because node_id is not in metadata (#2876)
63
60
64
61
### Futures and Wakeups
@@ -69,7 +66,7 @@ The `Future` primitive gains `__await__` and a faster slotted implementation; cr
69
66
* WakeupNotifier primitive for cross-thread/task wakeups (#2925, #2933)
70
67
71
68
### Concurrency and Error Handling
72
-
Defensive checks throughout the event loop and transport stack: improved socket I/O error handling, RuntimeErrors on misuse of the IO thread, and lock-based detection of concurrent access.
69
+
Defensive checks throughout the kafka.net event loop and transport stack: improved socket I/O error handling, RuntimeErrors on misuse of the IO thread, and lock-based detection of concurrent access.
73
70
* kafka.net.selector: Break scheduled heapq ties when tasks share scheduled_at (#3007)
74
71
* kafka.net.selector: Monitor slow tasks with slow_task_threshold_secs (#2946)
75
72
* kafka.net.selector: Use threading.Lock() to detect concurrent access to poll() (#2945)
@@ -80,31 +77,25 @@ Defensive checks throughout the event loop and transport stack: improved socket
80
77
* kafka.net: Catch unhandled exceptions in IO thread (#2970)
81
78
* kafka.net: Improve error handling on sock read/write (#2995)
82
79
* kafka.net.transport: Close connection on socket write error (#2973)
83
-
* kafka.net.transport: Fix double EVENT_WRITE register on socket (#2972)
84
-
* kafka.net.transport: Handle OSError on sock when constructing __str__ (#2926)
85
-
* kafka.net: Fix notify/wakeup race w/ pending flag (#2979)
86
-
* kafka.net: Drop manager.poll(); call net.poll directly (#2948)
87
80
* kafka.net: Check locks in _poll_once; add net.drain() (#2949)
88
81
89
82
## Protocol
90
83
91
-
The a new JSON-schema-based dynamic protocol generator now replaces the legacy hand-written protocol classes (moved to `kafka.protocol.old`).
84
+
A new JSON-schema-based dynamic protocol generator now replaces the legacy hand-written protocol classes (moved to `kafka.protocol.old`).
92
85
93
86
### Dynamic Protocol Classes
94
-
Protocol classes are now generated from the upstream Apache Kafka JSON schemas, with type stubs for IDE support and a registry-based lookup for headers and responses.
87
+
Protocol classes are now generated from the upstream Apache Kafka JSON schemas.
@@ -163,7 +154,7 @@ All consumer network I/O now flows through the shared kafka.net IO thread; `cons
163
154
* Consumer: send all requests from net io thread (#2980)
164
155
* Consumer: simplify poll() with fetcher.fetch_records (#2960)
165
156
* Consumer: drop poll loop optimizations for pending offset resets and rejoins (#2959)
166
-
* Consumer: _update_fetch_positions -> _refresh_committed_offsets; dont poll in position() (#2958)
157
+
* Consumer: `_update_fetch_positions` -> `_refresh_committed_offsets`; dont poll in position() (#2958)
167
158
* Consumer: convert fetcher reset_offsets/send_list_offsets_requests to async def
168
159
* Consumer: use new proto attrs in Fetcher (ListOffsets/Fetch) (#2923)
169
160
@@ -203,26 +194,22 @@ All consumer network I/O now flows through the shared kafka.net IO thread; `cons
203
194
KafkaProducer gains a sticky partitioner (KIP-480), enabled-by-default idempotence (KIP-679), tightened transaction handling, and a faster send/encode path.
204
195
205
196
### Transactions and Idempotence
206
-
Producer epoch bumping, transaction-group metadata, and stricter ordering/error semantics bring the transactional producer in line with the Java client.
207
197
* KIP-360 (pt1): Add transaction manager state and helper methods (#2852)
208
198
* KIP-360 (pt2): Bump producer epoch with InitProducerIdRequest v3 on 2.5+ brokers (#2853)
209
-
* KIP-447: Include group metadata in TxnOffsetCommitRequest (#2984)
210
-
* KIP-447: Fixups to align with java client (#2988)
199
+
* KIP-447: Include group metadata in TxnOffsetCommitRequest (#2984, #2988)
211
200
* KIP-654: Txn Producer aborts with non-fatal TransactionAbortedError (#3010)
212
201
* KAFKA-5793: Tighten up semantics of OutOfOrderSequenceNumber (pt1) (#2843)
213
202
* Enable producer idempotence with max_in_flight_requests_per_connection > 1 (#2841)
214
203
* Producer: Enforce guaranteed message order when idempotence_enabled (#2937)
215
204
* Producer: treat InvalidProducerEpochError as ProducerFencedError (#2885)
* KIP-480: StickyPartitioner for KafkaProducer (#2982, #2989)
223
210
224
211
### Batching and Send Path
225
-
Oversized batches now split-and-resend instead of failing, and the hot send path avoids redundant validation and buffer copies.
212
+
Split-and-resend oversized batches instead of failing; avoid redundant validation and buffer copies on hot send-path.
226
213
* KIP-126: Allow KafkaProducer to split and resend oversized batches (#2839)
227
214
* Refactor producer.send / _wait_on_metadata for fast path (#2850)
228
215
* Only ensure_valid_topic_name new topics on send (#2849)
@@ -235,18 +222,15 @@ Oversized batches now split-and-resend instead of failing, and the hot send path
235
222
236
223
## Admin Client
237
224
238
-
KafkaAdminClient has been split into focused mixin classes (cluster, topics, configs, groups, ACLs, log dirs, …) and its request-sending path has been converted to async coroutines running on the shared IO thread. Adds first-class support for several KIPs along with a number of new APIs.
225
+
Split KafkaAdminClient into focused mixin classes (cluster, topics, configs, groups, ACLs, log dirs, etc), and convert request-sending path to async def methods that run on the kafka.net IO thread. Support for new KIPs using new protocol stack.
239
226
240
227
### Refactor and Async Migration
241
-
The admin client is now async end-to-end, with cached coordinator lookups and a mixin layout that mirrors the broker's logical resource groups.
242
-
* Admin: split into functional mixin classes (#2873)
228
+
The admin client interface remains sync but wraps a fully-async internal api (does not support asyncio yet). Adds cached coordinator lookups and a mixin structure to separate logical resource groups.
229
+
* Admin: split into functional mixin classes (#2873, #2877, #2882)
* KIP-516: Initial topic id (uuid) support (#3031)
250
234
* KIP-699: FindCoordinatorRequest v4 -- multi-group support (#3025)
251
235
* KIP-709: OffsetFetch v8 -- use batch interface when available (#3024)
252
236
@@ -261,7 +245,7 @@ The admin client is now async end-to-end, with cached coordinator lookups and a
261
245
* Admin: Improve alter_configs w/ filters and missing keys (#2899)
262
246
263
247
### Topics and Partitions
264
-
*Admin: Accept topic id (uuid) in _get_cluster_metadata and describe_topics
248
+
*KIP-516: Support topic id (uuid) for describe topics (#3031)
265
249
* Admin: re-use config processing for CreateTopicsResponse
266
250
* Admin: wait_for_topics() and create_topics() wait_for_metadata option (#2856)
267
251
* Admin: list_partition_offsets (#2894)
@@ -283,7 +267,7 @@ The admin client is now async end-to-end, with cached coordinator lookups and a
283
267
284
268
## CLI
285
269
286
-
The CLI gains shared parser machinery, SASL/SSL connection support across all subcommands, and several new admin subcommands (acls, configs alter, users).
270
+
The CLI adds shared parser config, SASL/SSL connection support across all subcommands, and several new admin subcommands (acls, configs alter, users).
287
271
288
272
### Common Infrastructure
289
273
* kafka.cli: common parser args; support sasl/ssl connections (#2887)
@@ -305,8 +289,8 @@ The CLI gains shared parser machinery, SASL/SSL connection support across all su
305
289
Small quality-of-life additions to the public API surface.
306
290
307
291
* Support context manager interface for consumer/producer/admin (#2969)
308
-
* Add OffsetSpec / IsolationLevel to kafka imports (#2898)
309
292
* Make IncompatibleBrokerVersion a subclass of UnsupportedVersionError (#2924)
293
+
* Add OffsetSpec / IsolationLevel to kafka imports (#2898)
310
294
311
295
## Fixes
312
296
@@ -344,11 +328,10 @@ A new in-memory `MockBroker` / `MockTransport` enables deterministic protocol-le
344
328
345
329
* Enable pylint workflow; disable/fix all outstanding errors (#2701)
346
330
* Add coverage step to CI (#2786)
347
-
* CI test matrix updated to Kafka 4.0-4.2 (#2836)
331
+
* CI test matrix updated to Kafka 4.0-4.3 (#2836, #3032)
348
332
* Enable manual workflow runs for Python Package
349
333
* Add lint-unicode make target; include in make lint test (#2993)
350
334
* pyproject updates: no more universal wheels; tested on py3.8+
351
-
* Bump version to 3.0.0.dev
352
335
* Bump actions/cache from 4 to 5 (#2702)
353
336
* Bump actions/upload-artifact from 4 to 7 (#2789)
0 commit comments