Release Notes - Kafka - Version 3.0.0
Below is a summary of the JIRA issues addressed in the 3.0.0 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.
New Feature
- [KAFKA-8863] - Add InsertHeader and DropHeaders connect transforms KIP-145
- [KAFKA-12471] - Implement createPartitions in KIP-500 mode
- [KAFKA-13207] - Replica fetcher should not update partition state on diverging epoch if partition removed from fetcher
Improvement
- [KAFKA-3745] - Consider adding join key to ValueJoiner interface
- [KAFKA-4793] - Kafka Connect: POST /connectors/(string: name)/restart doesn't start failed tasks
- [KAFKA-5235] - GetOffsetShell: support for multiple topics and consumer configuration override
- [KAFKA-6987] - Reimplement KafkaFuture with CompletableFuture
- [KAFKA-7458] - Avoid enforced processing during bootstrap phase
- [KAFKA-8326] - Add Serde
> support
- [KAFKA-8372] - Remove deprecated RocksDB#compactRange API
- [KAFKA-8478] - Poll for more records before forced processing
- [KAFKA-8531] - Change default replication factor config
- [KAFKA-8613] - Make Grace Period Mandatory for Windowed Operations in Streams
- [KAFKA-8897] - Increase Version of RocksDB
- [KAFKA-9559] - Change the default "default serde" from ByteArraySerde to null
- [KAFKA-9726] - IdentityReplicationPolicy for MM2 to mimic MM1
- [KAFKA-10062] - Add a method to retrieve the current timestamp as known by the Streams app
- [KAFKA-10201] - Update codebase to use more inclusive terms
- [KAFKA-10449] - Connect-distributed sample configuration file does not have instructions for listeners
- [KAFKA-10585] - Kafka Streams should clean up the state store directory from cleanup
- [KAFKA-10619] - Producer will enable EOS by default
- [KAFKA-10675] - Error message from ConnectSchema.validateValue() should include the name of the schema.
- [KAFKA-10697] - Remove ProduceResponse.responses
- [KAFKA-10746] - Consumer poll timeout Expiration should be logged as WARNING not INFO.
- [KAFKA-10767] - Add Unit Test cases for missing methods in ThreadCacheTest
- [KAFKA-10769] - Remove JoinGroupRequest#containsValidPattern as it is duplicate to Topic#containsValidPattern
- [KAFKA-10885] - Refactor MemoryRecordsBuilderTest/MemoryRecordsTest to avoid a lot of (unnecessary) ignored test cases
- [KAFKA-12177] - Retention is not idempotent
- [KAFKA-12234] - Extend OffsetFetch requests to accept multiple group ids.
- [KAFKA-12287] - Add WARN logging on consumer-groups when reset-offsets by timestamp or duration can't find an offset and defaults to latest.
- [KAFKA-12288] - Remove task-level filesystem locks
- [KAFKA-12294] - Consider using the forwarding mechanism for metadata auto topic creation
- [KAFKA-12313] - Consider deprecating the default.windowed.serde.inner.class configs
- [KAFKA-12329] - kafka-reassign-partitions command should give a better error message when a topic does not exist
- [KAFKA-12335] - Upgrade junit from 5.7.0 to 5.7.1
- [KAFKA-12344] - Support SlidingWindows in the Scala API
- [KAFKA-12347] - Improve Kafka Streams ability to track progress
- [KAFKA-12349] - Follow up on PartitionEpoch in KIP-500
- [KAFKA-12362] - Determine if a Task is idling
- [KAFKA-12379] - KIP-716: Allow configuring the location of the offsetsync topic with MirrorMaker2
- [KAFKA-12396] - Dedicated exception for kstreams when null key received
- [KAFKA-12398] - Fix flaky test `ConsumerBounceTest.testClose`
- [KAFKA-12408] - Document omitted ReplicaManager metrics
- [KAFKA-12409] - Leaking gauge in ReplicaManager
- [KAFKA-12415] - Prepare for Gradle 7.0 and restrict transitive scope for non api dependencies
- [KAFKA-12419] - Remove Deprecated APIs of Kafka Streams in 3.0
- [KAFKA-12436] - deprecate MirrorMaker v1
- [KAFKA-12439] - When in KIP-500 mode, we should be able to assign new partitions to nodes that are fenced
- [KAFKA-12442] - Upgrade ZSTD JNI from 1.4.8-4 to 1.4.9-1
- [KAFKA-12454] - Add ERROR logging on kafka-log-dirs when given brokerIds do not exist in current kafka cluster
- [KAFKA-12464] - Enhance constrained sticky Assign algorithm
- [KAFKA-12479] - Combine partition offset requests into single request in ConsumerGroupCommand
- [KAFKA-12483] - Enable client overrides in connector configs by default
- [KAFKA-12484] - Enable Connect's connector log contexts by default
- [KAFKA-12499] - Adjust transaction timeout according to commit interval on Streams EOS
- [KAFKA-12509] - Tighten up StateDirectory thread locking
- [KAFKA-12541] - Extend ListOffset to fetch offset with max timestamp (KIP-734)
- [KAFKA-12573] - Removed deprecated `Metric#value`
- [KAFKA-12574] - Deprecate eos-alpha
- [KAFKA-12577] - Remove deprecated `ConfigEntry` constructor
- [KAFKA-12584] - Remove deprecated `Sum` and `Total` classes
- [KAFKA-12591] - Remove deprecated `quota.producer.default` and `quota.consumer.default` configurations
- [KAFKA-12612] - Remove checksum from ConsumerRecord/RecordMetadata in 3.0
- [KAFKA-12614] - Use Jenkinsfile for trunk and release branch builds
- [KAFKA-12620] - Producer IDs generated by the controller
- [KAFKA-12637] - Remove deprecated PartitionAssignor interface
- [KAFKA-12662] - add unit test for ProducerPerformance
- [KAFKA-12663] - Update FindCoordinator to resolve multiple Coordinators at a time
- [KAFKA-12675] - Improve sticky general assignor scalability and performance
- [KAFKA-12779] - TaskMetadata should return actual TaskId rather than plain String
- [KAFKA-12788] - Improve KRaft replica placement
- [KAFKA-12803] - Support reassigning partitions when in KRaft mode
- [KAFKA-12819] - Quality of life improvements for tests
- [KAFKA-12849] - Consider migrating TaskMetadata to interface with internal implementation
- [KAFKA-12874] - Increase default consumer session timeout to 45s (KIP-735)
- [KAFKA-12906] - Consumer should include partition and offset number in deserialization exception
- [KAFKA-12909] - Allow users to opt-into spurious left/outer stream-stream join improvement
- [KAFKA-12921] - Upgrade ZSTD JNI from 1.4.9-1 to 1.5.0-1
- [KAFKA-12922] - MirrorCheckpointTask should close topic filter
- [KAFKA-12931] - KIP-746: Revise KRaft Metadata Records
- [KAFKA-12934] - Move some controller classes to the metadata package
- [KAFKA-12981] - Ensure LogSegment.maxTimestampSoFar and LogSegment.offsetOfMaxTimestampSoFar are read/updated in sync
- [KAFKA-13000] - Improve handling of UnsupportedVersionException in MockClient
- [KAFKA-13021] - Improve Javadocs for API Changes and address followup from KIP-633
- [KAFKA-13026] - Idempotent producer (KAFKA-10619) follow-up testings
- [KAFKA-13041] - Support debugging system tests with ducker-ak
- [KAFKA-13209] - Upgrade jetty-server to fix CVE-2021-34429
- [KAFKA-13258] - AlterClientQuotas response does not include an error when it failed
- [KAFKA-13259] - DescribeProducers response does not include an error when it failed
- [KAFKA-13260] - FindCoordinator errorCounts does not handle v4
Bug
- [KAFKA-3968] - fsync() is not called on parent directory when new FileMessageSet is flushed to disk
- [KAFKA-5146] - Kafka Streams: remove compile dependency on connect-json
- [KAFKA-6435] - Application Reset Tool might delete incorrect internal topics
- [KAFKA-7421] - Deadlock in Kafka Connect during class loading
- [KAFKA-8315] - Historical join issues
- [KAFKA-8562] - SASL_SSL still performs reverse DNS lookup despite KAFKA-5051
- [KAFKA-8784] - Remove default implementation of RocksDBConfigSetter#close
- [KAFKA-8940] - Flaky Test SmokeTestDriverIntegrationTest.shouldWorkWithRebalance
- [KAFKA-9186] - Kafka Connect floods logs with probably bogus error messages from DelegatingClassLoader
- [KAFKA-9189] - Shutdown is blocked if connection to Zookeeper is lost
- [KAFKA-9295] - KTableKTableForeignKeyInnerJoinMultiIntegrationTest#shouldInnerJoinMultiPartitionQueryable
- [KAFKA-9527] - Application Reset Tool Returns NPE when --to-datetime or --by-duration are run on --input-topics with empty partitions
- [KAFKA-9672] - Dead brokers in ISR cause isr-expiration to fail with exception
- [KAFKA-9858] - CVE-2016-3189 Use-after-free vulnerability in bzip2recover in bzip2 1.0.6 allows remote attackers to cause a denial of service (crash) via a crafted bzip2 file, related to block ends set to before the start of the block.
- [KAFKA-10046] - Deprecated PartitionGrouper config is ignored
- [KAFKA-10192] - Flaky test BlockingConnectorTest#testBlockInConnectorStop
- [KAFKA-10340] - Source connectors should report error when trying to produce records to non-existent topics instead of hanging forever
- [KAFKA-10614] - Group coordinator onElection/onResignation should guard against leader epoch
- [KAFKA-12170] - Connect Cast cannot deal with fields of type "bytes" correctly
- [KAFKA-12252] - Distributed herder tick thread loops rapidly when worker loses leadership
- [KAFKA-12262] - New session keys are never distributed when follower with key becomes leader
- [KAFKA-12297] - Implementation of MockProducer contradicts documentation of Callback for async send
- [KAFKA-12303] - Flatten SMT drops some fields when null values are present
- [KAFKA-12308] - ConfigDef.parseType deadlock
- [KAFKA-12330] - FetchSessionCache may cause starvation for partitions when FetchResponse is full
- [KAFKA-12336] - custom stream naming does not work while calling stream[K, V](topicPattern: Pattern) API with named Consumed parameter
- [KAFKA-12350] - document about refresh.topics.interval.seconds default value is not right
- [KAFKA-12393] - Document multi-tenancy considerations
- [KAFKA-12426] - Missing logic to create partition.metadata files in RaftReplicaManager
- [KAFKA-12427] - Broker does not close muted idle connections with buffered data
- [KAFKA-12474] - Worker can die if unable to write new session key
- [KAFKA-12492] - Formatting of example RocksDBConfigSetter is messed up
- [KAFKA-12514] - NPE in SubscriptionState
- [KAFKA-12520] - Producer state is needlessly rebuilt on startup
- [KAFKA-12522] - Cast SMT should allow null value records to pass through
- [KAFKA-12548] - Invalid record error message is not getting sent to application
- [KAFKA-12557] - org.apache.kafka.clients.admin.KafkaAdminClientTest#testClientSideTimeoutAfterFailureToReceiveResponse intermittently hangs indefinitely
- [KAFKA-12611] - Fix using random payload in ProducerPerformance incorrectly
- [KAFKA-12619] - Ensure LeaderChange message is committed before initializing high watermark
- [KAFKA-12650] - NPE in InternalTopicManager#cleanUpCreatedTopics
- [KAFKA-12655] - CVE-2021-28165 - Upgrade jetty to 9.4.39
- [KAFKA-12660] - Do not update offset commit sensor after append failure
- [KAFKA-12661] - ConfigEntry#equal does not compare other fields when value is NOT null
- [KAFKA-12667] - Incorrect error log on StateDirectory close
- [KAFKA-12672] - Running test-kraft-server-start results in error
- [KAFKA-12677] - The raftCluster always send to the wrong active controller and never update
- [KAFKA-12684] - The valid partition list is incorrectly replaced by the successfully elected partition list
- [KAFKA-12686] - Race condition in AlterIsr response handling
- [KAFKA-12691] - TaskMetadata timeSinceIdlingStarted not reporting correctly
- [KAFKA-12700] - The admin.listeners config has wonky valid values in the docs
- [KAFKA-12702] - Unhandled exception caught in InterBrokerSendThread
- [KAFKA-12718] - SessionWindows are closed too early
- [KAFKA-12730] - A single Kerberos login failure fails all future connections from Java 9 onwards
- [KAFKA-12747] - Flaky Test RocksDBStoreTest.shouldReturnUUIDsWithStringPrefix
- [KAFKA-12749] - Changelog topic config on suppressed KTable lost
- [KAFKA-12752] - CVE-2021-28168 upgrade jersey to 2.34 or 3.02
- [KAFKA-12754] - TaskMetadata endOffsets does not update when the offsets are read
- [KAFKA-12777] - AutoTopicCreationManager does not handle response errors
- [KAFKA-12782] - Javadocs search sends you to a non-existent URL
- [KAFKA-12792] - Fix metrics bug and introduce TimelineInteger
- [KAFKA-12815] - KTable.transformValue might have incorrect record metadata
- [KAFKA-12835] - Topic IDs can mismatch on brokers (after interbroker protocol version update)
- [KAFKA-12851] - Flaky Test RaftEventSimulationTest.canMakeProgressIfMajorityIsReachable
- [KAFKA-12856] - Upgrade Jackson to 2.12.3
- [KAFKA-12865] - Documentation error for Admin Client API in describe ACLs
- [KAFKA-12866] - Kafka requires ZK root access even when using a chroot
- [KAFKA-12867] - Trogdor ConsumeBenchWorker quits prematurely with maxMessages config
- [KAFKA-12870] - RecordAccumulator stuck in a flushing state
- [KAFKA-12880] - Remove deprecated Count and SampledTotal in 3.0
- [KAFKA-12889] - log clean group consider empty log segment to avoid empty log left
- [KAFKA-12890] - Consumer group stuck in `CompletingRebalance`
- [KAFKA-12896] - Group rebalance loop caused by repeated group leader JoinGroups
- [KAFKA-12897] - KRaft Controller cannot create topic with multiple partitions on a single broker cluster
- [KAFKA-12898] - Owned partitions in the subscription must be sorted
- [KAFKA-12904] - Connect's validate REST endpoint uses incorrect timeout
- [KAFKA-12914] - StreamSourceNode.toString() throws with StreamsBuilder.stream(Pattern) ctor
- [KAFKA-12925] - prefixScan missing from intermediate interfaces
- [KAFKA-12926] - ConsumerGroupCommand's java.lang.NullPointerException at negative offsets while running kafka-consumer-groups.sh
- [KAFKA-12945] - Remove port, host.name and related configs in 3.0
- [KAFKA-12948] - NetworkClient.close(node) with node in connecting state makes NetworkClient unusable
- [KAFKA-12949] - TestRaftServer's scala.MatchError: null on test-kraft-server-start.sh
- [KAFKA-12951] - Infinite loop while restoring a GlobalKTable
- [KAFKA-12964] - Corrupt segment recovery can delete new producer state snapshots
- [KAFKA-12983] - onJoinPrepare is not always invoked before joining the group
- [KAFKA-12984] - Cooperative sticky assignor can get stuck with invalid SubscriptionState input metadata
- [KAFKA-12991] - Fix unsafe access to `AbstractCoordinator.state`
- [KAFKA-12993] - Formatting of Streams 'Memory Management' docs is messed up
- [KAFKA-12996] - OffsetOutOfRange not handled correctly for diverging epochs when fetch offset less than leader start offset
- [KAFKA-13002] - listOffsets must downgrade immediately for non MAX_TIMESTAMP specs
- [KAFKA-13003] - KafkaBroker advertises socket port instead of the configured advertised port
- [KAFKA-13007] - KafkaAdminClient getListOffsetsCalls builds cluster snapshot for every topic partition
- [KAFKA-13008] - Stream will stop processing data for a long time while waiting for the partition lag
- [KAFKA-13010] - Flaky test org.apache.kafka.streams.integration.TaskMetadataIntegrationTest.shouldReportCorrectCommittedOffsetInformation()
- [KAFKA-13029] - FindCoordinators batching can break consumers during rolling upgrade
- [KAFKA-13033] - coordinator not available error should cause add into unmap list to do a new lookup
- [KAFKA-13037] - "Thread state is already PENDING_SHUTDOWN" log spam
- [KAFKA-13053] - Bump frame version for KRaft records
- [KAFKA-13056] - Broker should not generate snapshots when controller is co-resident
- [KAFKA-13057] - Many broker RPCs are not enable in KRaft mode
- [KAFKA-13058] - `AlterConsumerGroupOffsetsHandler` does not handle partition errors correctly.
- [KAFKA-13073] - Simulation test fails due to inconsistency in MockLog's implementation
- [KAFKA-13078] - Closing FileRawSnapshotWriter too early
- [KAFKA-13080] - Fetch snapshot request are not directed to kraft in controller
- [KAFKA-13092] - Perf regression in LISR requests
- [KAFKA-13096] - QueryableStoreProvider is not updated when threads are added/removed/replaced rendering IQ impossible
- [KAFKA-13098] - No such file exception when recovering snapshots in metadata log dir
- [KAFKA-13099] - Message too large error when expiring transactionalIds
- [KAFKA-13100] - Controller cannot revert to an in-memory snapshot
- [KAFKA-13104] - Controller should notify the RaftClient when it resigns
- [KAFKA-13112] - Controller's committed offset get out of sync with raft client listener context
- [KAFKA-13119] - Validate the KRaft controllerListener config on startup
- [KAFKA-13127] - Fix stray partition lookup logic
- [KAFKA-13129] - Fix broken system tests relate to the ConfigCommand change
- [KAFKA-13132] - Upgrading to topic IDs in LISR requests has gaps introduced in 3.0
- [KAFKA-13137] - KRaft Controller Metric MBean names are incorrectly quoted
- [KAFKA-13139] - Empty response after requesting to restart a connector without the tasks results in NPE
- [KAFKA-13141] - Leader should not update follower fetch offset if diverging epoch is present
- [KAFKA-13143] - Disable Metadata endpoint for KRaft controller
- [KAFKA-13160] - Fix the code that calls the broker's config handler to pass the expected default resource name when using KRaft.
- [KAFKA-13161] - Follower leader and ISR state not updated after partition change in KRaft
- [KAFKA-13167] - KRaft broker should heartbeat immediately during controlled shutdown
- [KAFKA-13168] - KRaft observers should not have a replica id
- [KAFKA-13173] - KRaft controller does not handle simultaneous broker expirations correctly
- [KAFKA-13198] - TopicsDelta doesn't update deleted topic when processing PartitionChangeRecord
- [KAFKA-13214] - Consumer should not reset group state after disconnect
- [KAFKA-13215] - Flaky test org.apache.kafka.streams.integration.TaskMetadataIntegrationTest.shouldReportCorrectEndOffsetInformation
- [KAFKA-13219] - BrokerState metric not working for KRaft clusters
- [KAFKA-13262] - Mock Clients Now Have Final close() Methods
- [KAFKA-13266] - `InitialFetchState` should be created after partition is removed from the fetchers
- [KAFKA-13270] - Kafka may fail to connect to ZooKeeper, retry forever, and never start
- [KAFKA-13276] - Public DescribeConsumerGroupsResult constructor refers to KafkaFutureImpl
- [KAFKA-13277] - Serialization of long tagged string in request/response throws BufferOverflowException
Task
- [KAFKA-8405] - Remove deprecated `kafka-preferred-replica-election` command
- [KAFKA-8734] - Remove PartitionAssignorAdapter and deprecated PartitionAssignor interface
- [KAFKA-10070] - Parameterize Connect unit tests to remove code duplication
- [KAFKA-10091] - Improve task idling
- [KAFKA-12482] - Remove deprecated rest.host.name and rest.port Connect worker configs
- [KAFKA-12519] - Consider Removing Streams Old Built-in Metrics Version
- [KAFKA-12578] - Remove deprecated security classes/methods
- [KAFKA-12579] - Remove various deprecated methods from clients for 3.0
- [KAFKA-12581] - Remove deprecated Admin.electPreferredLeaders
- [KAFKA-12588] - Remove deprecated --zookeeper in shell commands
- [KAFKA-12590] - Remove deprecated SimpleAclAuthorizer
- [KAFKA-12592] - Remove deprecated LogConfig.Compact
- [KAFKA-12600] - Remove deprecated config value `default` for client config `client.dns.lookup`
- [KAFKA-12625] - Fix the NOTICE file
- [KAFKA-12717] - Remove internal converter config properties
- [KAFKA-12724] - Add 2.8.0 to system tests and streams upgrade tests
- [KAFKA-12794] - Trailing JSON tokens in DescribeProducersRequest.json can cause parse errors in some JSON parsers
- [KAFKA-12800] - Configure jackson to to reject trailing input in the generator
- [KAFKA-12820] - Upgrade maven-artifact dependency to resolve CVE-2021-26291
- [KAFKA-12976] - Remove UNSUPPORTED_VERSION error from delete topics call
- [KAFKA-12985] - CVE-2021-28169 - Upgrade jetty to 9.4.42
- [KAFKA-13035] - Kafka Connect: Update documentation for POST /connectors/(string: name)/restart to include task Restart behavior
- [KAFKA-13051] - Require Principal Serde to be defined for 3.0
- [KAFKA-13151] - Disallow policy configs in KRaft
Test
- [KAFKA-9009] - Flaky Test kafka.integration.MetricsDuringTopicCreationDeletionTest.testMetricsDuringTopicCreateDelete
- [KAFKA-12273] - InterBrokerSendThread#pollOnce throws FatalExitError even though it is shutdown correctly
- [KAFKA-12284] - Flaky Test MirrorConnectorsIntegrationSSLTest#testOneWayReplicationWithAutoOffsetSync
- [KAFKA-12384] - Flaky Test ListOffsetsRequestTest.testResponseIncludesLeaderEpoch
- [KAFKA-12561] - Fix flaky kafka.server.RaftClusterTest.testCreateClusterAndCreateListDeleteTopic()
- [KAFKA-12629] - Failing Test: RaftClusterTest
- [KAFKA-13045] - Add test for batched OffsetFetch requests where we have the same group in the request appear more than once
Sub-task
- [KAFKA-7106] - Remove segment/segmentInterval from Window definition
- [KAFKA-7606] - Remove deprecated options from StreamsResetter
- [KAFKA-7785] - Remove PartitionGrouper interface and it's config and move DefaultPartitionGrouper to internal package
- [KAFKA-9548] - SPI - RemoteStorageManager and RemoteLogMetadataManager interfaces and related classes.
- [KAFKA-10292] - fix flaky streams/streams_broker_bounce_test.py
- [KAFKA-10434] - Remove deprecated methods on WindowStore
- [KAFKA-10537] - Convert KStreamImpl filters to new PAPI
- [KAFKA-10538] - Convert KStreamImpl maps to new PAPI
- [KAFKA-10541] - Convert KTable filters to new PAPI
- [KAFKA-10587] - Rename kafka-mirror-maker CLI command line arguments for KIP-629
- [KAFKA-10588] - Rename kafka-console-consumer CLI command line arguments for KIP-629
- [KAFKA-10589] - Rename kafka-replica-verification CLI command line arguments for KIP-629
- [KAFKA-12158] - Consider better return type of RaftClient.scheduleAppend
- [KAFKA-12173] - Migrate streams:streams-scala module to JUnit 5
- [KAFKA-12267] - Implement DescribeTransactions API
- [KAFKA-12368] - Inmemory implementation of RSM and RLMM.
- [KAFKA-12369] - Implement ListTransactions API
- [KAFKA-12429] - Serdes for all message types in internal topic which is used in default implementation for RLMM.
- [KAFKA-12434] - Admin API for DescribeProducers
- [KAFKA-12441] - Remove deprecated methods StreamsBuilder#addGlobalStore
- [KAFKA-12449] - Remove deprecated WindowStore#put
- [KAFKA-12450] - Remove deprecated methods from ReadOnlyWindowStore
- [KAFKA-12451] - Remove deprecation annotation on long-based read operations in WindowStore
- [KAFKA-12452] - Remove deprecated overloads for ProcessorContext#forward
- [KAFKA-12467] - Implement QuorumController metadata snapshots
- [KAFKA-12515] - ApiVersionManager should create response based on request version
- [KAFKA-12536] - Add Instant-based methods to ReadOnlySessionStore
- [KAFKA-12552] - Extract segments map out of Log class into separate class
- [KAFKA-12553] - Refactor Log layer recovery logic
- [KAFKA-12568] - Remove deprecated "KStream#groupBy/join", "Joined#named" overloads
- [KAFKA-12571] - Eliminate LeaderEpochFileCache constructor dependency on LogEndOffset
- [KAFKA-12575] - Eliminate Log.isLogDirOffline boolean attribute
- [KAFKA-12586] - Admin API for DescribeTransactions
- [KAFKA-12596] - Remove deprecated --zookeeper in topicCommands
- [KAFKA-12597] - Remove deprecated --zookeeper in ReassignPartitionsCommands
- [KAFKA-12598] - Remove deprecated --zookeeper in ConfigCommand
- [KAFKA-12630] - Remove deprecated KafkaClientSupplier#getAdminClient
- [KAFKA-12631] - Support api to resign raft leadership
- [KAFKA-12633] - Remove deprecated "TopologyTestDriver#pipeInput / readOutput"
- [KAFKA-12683] - Remove deprecated "UsePreviousTimeOnInvalidTimeStamp"
- [KAFKA-12709] - Admin API for ListTransactions
- [KAFKA-12716] - Admin API for aborting transactions
- [KAFKA-12758] - Create a new `server-common` module and move ApiMessageAndVersion, RecordSerde, AbstractApiMessageSerde, and BytesApiMessageSerde to that module.
- [KAFKA-12790] - Remove SslTransportLayerTest.testUnsupportedTlsVersion
- [KAFKA-12796] - Removal of deprecated classes under `streams-scala`
- [KAFKA-12808] - Remove Deprecated methods under StreamsMetrics
- [KAFKA-12809] - Remove Deprecated methods under Stores
- [KAFKA-12810] - Remove deprecated TopologyDescription.Source#topics
- [KAFKA-12813] - Remove Deprecated schedule method in ProcessorContext
- [KAFKA-12814] - Remove Deprecated method StreamsConfig#getConsumerConfig
- [KAFKA-12816] - Add tier storage configs.
- [KAFKA-12863] - Configure controller snapshot generation
- [KAFKA-12884] - Remove "--zookeeper" in system tests
- [KAFKA-12888] - Add transaction tool
- [KAFKA-12905] - Replace EasyMock and PowerMock with Mockito for NamedCacheMetricsTest
- [KAFKA-12924] - Replace EasyMock and PowerMock with Mockito in streams module(metrics)
- [KAFKA-12929] - KIP-750: Deprecate support for Java 8 in Kafka 3.0
- [KAFKA-12930] - KIP-751: Deprecate support for Scala 2.12 in Kafka 3.0
- [KAFKA-12940] - Enable JDK 16 builds in Jenkins
- [KAFKA-12944] - KIP-724: Assume message format version is 3.0 when IBP is 3.0 or higher
- [KAFKA-12952] - Metadata Snapshot File Delimiters
- [KAFKA-12955] - Fix LogLoader to pass materialized view of segments for deletion
- [KAFKA-12979] - Implement --find-hanging API in transaction tool
- [KAFKA-12992] - Make kraft configuration properties public
- [KAFKA-13011] - Update deleteTopics Admin API
- [KAFKA-13015] - Create System tests for Metadata Snapshots
- [KAFKA-13023] - make "range, cooperative-sticky" as the default assignor in V3.0
- [KAFKA-13059] - update for DeleteConsumerGroupOffsetsHandler
- [KAFKA-13062] - refactor DeleteConsumerGroupsHandler
- [KAFKA-13063] - refactor DescribeConsumerGroupsHandler
- [KAFKA-13064] - refactor ListConsumerGroupOffsetsHandler
- [KAFKA-13072] - refactor RemoveMembersFromConsumerGroupHandler
- [KAFKA-13090] - Improve cluster snapshot integration test
- [KAFKA-13113] - Add unregister support to the RaftClient.
- [KAFKA-13114] - Unregsiter listener during renounce when the in-memory snapshot is missing
- [KAFKA-13116] - KIP-724: Adjust system tests due to KAFKA-12944
- [KAFKA-13165] - Validate node id, process role and quorum voters