conduktor.io ↗

Kafka 3.9 → 4.0 Upgrade Guide

Kafka 4.0 brings 23 new configs, removes 49, and changes 28 defaults compared to 3.9.

+23 configs −49 configs 28 defaults changed 31 KIPs

Removed Configurations

ConfigCategory
alter.config.policy.kraft.compatibility.enablebroker
auto.include.jmx.reporterbroker
broker.id.generation.enablebroker
control.plane.listener.namebroker
controlled.shutdown.max.retriesbroker
controlled.shutdown.retry.backoff.msbroker
delegation.token.master.keybroker
eligible.leader.replicas.enablebroker
inter.broker.protocol.versionbroker
leader.imbalance.per.broker.percentagebroker
log.message.downconversion.enablebroker
log.message.format.versionbroker
log.message.timestamp.difference.max.msbroker
offsets.commit.required.acksbroker
password.encoder.cipher.algorithmbroker
password.encoder.iterationsbroker
password.encoder.key.lengthbroker
password.encoder.keyfactory.algorithmbroker
password.encoder.old.secretbroker
password.encoder.secretbroker
reserved.broker.max.idbroker
zookeeper.clientCnxnSocketbroker
zookeeper.connectbroker
zookeeper.connection.timeout.msbroker
zookeeper.max.in.flight.requestsbroker
zookeeper.metadata.migration.enablebroker
zookeeper.session.timeout.msbroker
zookeeper.set.aclbroker
zookeeper.ssl.cipher.suitesbroker
zookeeper.ssl.client.enablebroker
zookeeper.ssl.crl.enablebroker
zookeeper.ssl.enabled.protocolsbroker
zookeeper.ssl.endpoint.identification.algorithmbroker
zookeeper.ssl.keystore.locationbroker
zookeeper.ssl.keystore.passwordbroker
zookeeper.ssl.keystore.typebroker
zookeeper.ssl.ocsp.enablebroker
zookeeper.ssl.protocolbroker
zookeeper.ssl.truststore.locationbroker
zookeeper.ssl.truststore.passwordbroker
zookeeper.ssl.truststore.typebroker
auto.include.jmx.reporterconsumer
auto.include.jmx.reporterproducer
message.downconversion.enabletopic
message.format.versiontopic
message.timestamp.difference.max.mstopic
auto.include.jmx.reporterconnect_default
auto.include.jmx.reporterstream
retriesstream

New Configurations

ConfigCategoryDefault
add.partitions.to.txn.retry.backoff.max.msbroker100
add.partitions.to.txn.retry.backoff.msbroker20
group.consumer.migration.policybrokerbidirectional
remote.list.offsets.request.timeout.msbroker30000 (30 seconds)
share.coordinator.append.linger.msbroker10
share.coordinator.load.buffer.sizebroker5242880
share.coordinator.snapshot.update.records.per.snapshotbroker500
share.coordinator.state.topic.compression.codecbroker0
share.coordinator.state.topic.min.isrbroker2
share.coordinator.state.topic.num.partitionsbroker50
share.coordinator.state.topic.replication.factorbroker3
share.coordinator.state.topic.segment.bytesbroker104857600 (100 mebibytes)
share.coordinator.threadsbroker1
share.coordinator.write.timeout.msbroker5000 (5 seconds)
share.fetch.purgatory.purge.interval.requestsbroker1000
metadata.recovery.rebootstrap.trigger.msconsumer300000 (5 minutes)
metadata.recovery.rebootstrap.trigger.msproducer300000 (5 minutes)
metadata.recovery.rebootstrap.trigger.msconnect_default300000 (5 minutes)
deserialization.exception.handlerstreamorg.apache.kafka.streams.errors.LogAndFailExceptionHandler
metadata.recovery.rebootstrap.trigger.msstream300000 (5 minutes)
metadata.recovery.strategystreamrebootstrap
processor.wrapper.classstreamorg.apache.kafka.streams.processor.internals.NoOpProcessorWrapper
production.exception.handlerstreamorg.apache.kafka.streams.errors.DefaultProductionExceptionHandler

Changed Defaults

ConfigOld DefaultNew Default
group.consumer.assignorsorg.apache.kafka.coordinator.group.assignor.UniformAssignor,org.apache.kafka.coordinator.group.assignor.RangeAssignoruniform,range
group.coordinator.append.linger.ms105
group.coordinator.rebalance.protocolsclassicclassic,consumer
group.coordinator.threads14
log.message.timestamp.after.max.ms92233720368547758073600000 (1 hour)
metric.reportersorg.apache.kafka.common.metrics.JmxReporter
node.id-1
num.recovery.threads.per.data.dir12
remote.log.manager.copier.thread.pool.size-110
remote.log.manager.expiration.thread.pool.size-110
remote.log.manager.thread.pool.size102
ssl.enabled.protocolsTLSv1.2TLSv1.2,TLSv1.3
ssl.protocolTLSv1.2TLSv1.3
metadata.recovery.strategynonerebootstrap
metric.reportersorg.apache.kafka.common.metrics.JmxReporter
ssl.enabled.protocolsTLSv1.2TLSv1.2,TLSv1.3
ssl.protocolTLSv1.2TLSv1.3
linger.ms05
metadata.recovery.strategynonerebootstrap
metric.reportersorg.apache.kafka.common.metrics.JmxReporter
ssl.enabled.protocolsTLSv1.2TLSv1.2,TLSv1.3
ssl.protocolTLSv1.2TLSv1.3
message.timestamp.after.max.ms92233720368547758073600000 (1 hour)
metadata.recovery.strategynonerebootstrap
metric.reportersorg.apache.kafka.common.metrics.JmxReporter
ssl.enabled.protocolsTLSv1.2TLSv1.2,TLSv1.3
ssl.protocolTLSv1.2TLSv1.3
metric.reportersorg.apache.kafka.common.metrics.JmxReporter

Protocol Changes

Produce v12 · Produce v12 · ListOffsets v10 · ListOffsets v10 · Metadata v13 · Metadata v13 · DescribeGroups v6 · DescribeGroups v6 · EndTxn v5 · EndTxn v5 · TxnOffsetCommit v5 · TxnOffsetCommit v5 · Vote v2 · Vote v2 · UpdateFeatures v2 · UpdateFeatures v2 · DescribeCluster v2 · DescribeCluster v2 · ConsumerGroupHeartbeat v1 · ConsumerGroupHeartbeat v1 · ConsumerGroupDescribe v1 · ConsumerGroupDescribe v1

KIPs Released

KIP-653 Upgrade log4j to log4j2
KIP-891 Running multiple versions of Connector plugins
KIP-970 Deprecate and remove Connect's redundant task configurations endpoint
KIP-996 Pre-Vote
KIP-1011 Use incrementalAlterConfigs when updating broker configs by kafka-configs.sh
KIP-1022 Formatting and Updating Features
KIP-1030 Change constraints and default values for various configurations
KIP-1032 Upgrade to Jakarta and JavaEE 10 in Kafka 4.0
KIP-1043 Administration of groups
KIP-1056 Remove `default.` prefix for exception handler StreamsConfig
KIP-1058 Txn consumer exerts pressure on remote storage when reading non-txn topic
KIP-1068 New metrics for the new KafkaConsumer
KIP-1070 deprecate MockProcessorContext
KIP-1073 Return fenced brokers in DescribeCluster response
KIP-1074 Allow the replication of user internal topics
KIP-1075 Introduce delayed remote list offsets purgatory to make LIST_OFFSETS async
KIP-1076 Metrics for client applications KIP-714 extension
KIP-1077 Deprecate `ForeachProcessor` and move to internal package
KIP-1078 Remove Leaking Getter Methods in Joined Helper Class
KIP-1079 Deprecate `delete-config` of TopicCommand
KIP-1080 Fix the typo: `maxlifeTimeMs` in CreateDelegationTokenOptions
KIP-1082 Require Client-Generated IDs over the ConsumerGroupHeartbeat RPC
KIP-1089 Allow disabling heartbeats replication in MirrorSourceConnector
KIP-1091 Improved Kafka Streams operator metrics
KIP-1094 Add a new constructor with nextOffsets to ConsumerRecords
KIP-1099 Extend kafka-consumer-groups command line tool to support new consumer group
KIP-1101 Trigger rebalance on rack topology changes
KIP-1102 Enable clients to rebootstrap based on timeout or error code
KIP-1105 Make remote log manager thread-pool configs dynamic
KIP-1106 Add duration based offset reset option for consumer clients
KIP-1112 allow custom processor wrapping
Planning a Kafka upgrade? Conduktor Console helps you manage and monitor your clusters during migration.