Release Notes - Kafka - Version 4.3.2
Below is a summary of the JIRA issues addressed in the 4.3.2
release of Kafka. For full documentation of the release, a guide
to get started, and information about the project, see the
Kafka project site.
Note about upgrades: Please carefully review the
upgrade documentation for this release thoroughly before upgrading
your cluster. The upgrade notes discuss any critical information about
incompatibilities and breaking changes, performance changes, and any
other changes that might impact your production deployment of Kafka.
The documentation for the most recent release can be found at
https://kafka.apache.org/documentation.html.
Improvement
[KAFKA-13499] - Avoid restoring outdated records
[KAFKA-20354] - Add missing Control Batch types in documentation
[KAFKA-20916] - message protocol document missing new control record types
[KAFKA-20940] - Windowed changelog restore optimization is skipped whenever a checkpointed offset exists
[KAFKA-21196] - Release memory held by CoordinatorExecutorImpl tasks when cancelled
Bug
[KAFKA-14597] - [Streams] record-e2e-latency-max is not reporting correct metrics
[KAFKA-20187] - AsyncKafkaConsumer does not clear endOffsetRequested flag on failed LIST_OFFSETS calls
[KAFKA-20253] - High CPU loop on consumer after failed re-authentication
[KAFKA-20312] - KafkaConsumer poll may happens NullPointerException
[KAFKA-20393] - Kafka client send to wong IP caused by stickyNode in TelemetrySender
[KAFKA-20416] - RocksDB loses entries during broker patches.
[KAFKA-20434] - Consumer group does not recompute assignment when static members rejoin with different assignor
[KAFKA-20442] - Consumer/Share/Streams group assignment epoch is not updated when the last member leaves
[KAFKA-20449] - OffsetFetcherUtils.updateSubscriptionState logs at WARN for benign race condition during rebalance
[KAFKA-20450] - SafeObjectInputStream uses denylist based approach
[KAFKA-20464] - Linking stores using ConnectedStoreProvider causes corrupt topology
[KAFKA-20533] - ShareFetch returns UNKNOWN_SERVER_ERROR when topic is deleted during active share consumption
[KAFKA-20555] - JaasBasicAuthFilter should use jakarta.annotation
[KAFKA-20570] - Catch RuntimeException in ConsumerProtocol deserialization in group coordinator
[KAFKA-20601] - ConsumerGroup static member rejoin can fail with GroupMaxSizeReachedException at max size
[KAFKA-20662] - Proper error code for malformed request during online migration
[KAFKA-20691] - PersisterStateBatchCombiner.combineStateBatches() is O(n^2) worst-case; replace TreeSet-based iterative merge with single-pass sweep-line
[KAFKA-20700] - AllowedPaths should resolve symlinks before validating paths against allowed.paths
[KAFKA-20711] - Streams task restore-remaining-records metric never reaches 0
[KAFKA-20721] - Streams: "Task not found in the state updater. This indicates a bug." after a state updater remove times out during cold start rebalancing
[KAFKA-20726] - Don't reuse the BufferSupplier in kraft state machine
[KAFKA-20732] - Data loss: tiered size-retention deletes in-retention data from both tiers after leader election when highestOffsetInRemoteStorage is unset (-1)
[KAFKA-20746] - NPE in MetadataCache#toCluster
[KAFKA-20765] - AsyncKafkaConsumer: OffsetFetch retry on STALE_MEMBER_EPOCH can spin in dedup loop and never complete the application future
[KAFKA-20767] - [CVE-2026-54513] , [CVE-2026-54512] [jackson-databind] [2.21.2]
[KAFKA-20769] - ListDeserializer can silently deserialize a corrupted entry when the input is truncated mid-entry
[KAFKA-20773] - [CVE-2026-54515][jackson-databind]
[KAFKA-20780] - syncKafkaConsumer does not keep a fetch request pending on the broker, causing latency and throughput regressions vs the classic consumer
[KAFKA-20782] - IQ returns incorrect metadata when Streams protocol and N threads
[KAFKA-20785] - Unexpected InvalidTxnStateException on EndTxn when commit races with transaction timeout
[KAFKA-20791] - Bump log4j to 2.25.5
[KAFKA-20805] - State directory cleaned prematurely under KIP-1035, forcing from-scratch restore
[KAFKA-20808] - StreamThread dies with fatal InvalidStateStoreException after TaskCorruptedException
[KAFKA-20815] - Security : [jline-remote-telnet] [3.30.4]
[KAFKA-20827] - StreamThread dies with IllegalStateException: Attempted to create an standby task that we already own during a standby/active recycle
[KAFKA-20832] - Cordoned log dirs are not enforced when creating topics/partitions with explicit assignment
[KAFKA-20840] - Bump jetty to 12.0.37
[KAFKA-20842] - Bump lz4 to 1.11.1
[KAFKA-20845] - Consumer group downgrades can leave group in invalid state when classic group metadata is very large
[KAFKA-20861] - Kafka Streams should handle corrupted assignment pro-actively
[KAFKA-20873] - KafkaStreams.removeStreamThread can deadlock with a concurrent REPLACE_THREAD uncaught-exception handler
[KAFKA-20874] - SslFactory not closed after extracting SSLSocketFactory
[KAFKA-20875] - Headers store adapters bypass the `WrappedStateStore` chain
[KAFKA-20876] - Windowed restore optimisation gives up when `endOffset-1` is a transaction control record
[KAFKA-20877] - Streams task-level restore-rate and update-rate incorrect
[KAFKA-20885] - Incorrect IQ metadata in "streams" protocol
[KAFKA-20893] - KafkaStreams incorrectly reports task-offsets (ie state) for non-existing (previously owned) in-memory stores to the task assignor
[KAFKA-20899] - StickyTaskAssignor not sticky for standby tasks ("streams" protocol)
[KAFKA-20977] - RemoteCopyLagSegments/RemoteCopyLagBytes report a phantom lag of 1 on low-throughput partitions (single-record segments)
[KAFKA-20979] - Potential data loss caused by time index truncation
[KAFKA-21004] - [CVE-2026-68497][jackson-databind]
[KAFKA-21096] - SharePartition instances pending cleanup even when fenced
Task
[KAFKA-20936] - Bump lz4 to 1.11.2
[KAFKA-21174] - Update lz4 to 1.11.4