Client Deprecation in Confluent Platform

The Apache Kafka® 3.7 distribution released in Q1, 2024 included KIP-896. KIP-896 is the proposal to remove support for older client protocol API versions in Kafka 4.0. The 3.7 release marked these older, client protocol API versions deprecated with a notice that they will be completely dropped by 4.0. This page discusses the changes in Confluent client behavior resulting from KIP-896.

The Confluent Platform 8.0 release removes compatibility for deprecated client versions. You are free to choose when you upgrade to Confluent Platform 8.0. Until you upgrade, you remain under the full extent of your pre-8.0 version support plan. Any pre-8.0 Confluent Platform version will maintain compatibility with the older client protocol API versions.

Minimal compatible baseline

With the release of Kafka 4.0 in 2025, Confluent sets the new baseline for client protocol API versions to Kafka 2.1.0, which was released in November 2018. As a result, clients connecting to new clusters must use compatible API versions.

Some protocol APIs are used for clients and inter-broker replication, for example, Fetch, ListOffsets, and so forth. To maintain compatibility with these dual-use APIs, Confluent Platform expects a minimum of 2.1.0 for the inter.broker.protocol.version value.

Any environment using versions other than established minimums can encounter one or more of the following version-related errors:

  • Kafka brokers that return an UNSUPPORTED_VERSION error when they receive a request with any of the removed API versions.

  • Java clients (producer, consumer, or admin) that throw UnsupportedVersionException when interacting with brokers that do not support the minimum protocol API versions.

  • A broker configured with an unsupported inter-broker protocol version that fails during start-up with an error.

The following chart describes the minimal compatible versions of some popular client libraries:

Client

Version

Released

Java client for Kafka

2.1.0

November 2018

Python (confluent-kafka-python)

1.8.2

October 2021

.NET (confluent-kafka-dotnet)

1.8.2

October 2021

JavaScript (confluent-kafka-javascript)

1.8.2

October 2021

Go (confluent-kafka-go)

1.8.2

October 2021

C/C++ (librdkafka)

1.8.2

October 2021

KafkaJS

1.15.0

November 2020

Sarama

1.29.1

June 2021

kafka-python

2.0.2

Sep 2020

Any librdkafka-based protocols not listed in the preceding table have a version minimum of 1.8.2 as specified in the October 2021 release of Apache Kafka®.

List of deprecated Kafka APIs

API

Deprecated version

Produce

V0-V2

Fetch

V0-V3

ListOffset

V0

Metadata

None

OffsetCommit

V0-V1

OffsetFetch

V0

FindCoordinator

None

Heartbeat

V0-V1

LeaveGroup

None

SyncGroup

None

DescribeGroups

None

ListGroups

None

SaslHandshake

None

ApiVersions

None

CreateTopics

V0-V1

DeleteTopics

V0

DeleteRecords

None

InitProducerId

None

OffsetForLeaderEpoch

V0-V1

AddPartitionsToTxn

None

AddOffsetsToTxn

None

EndTxn

None

WriteTxnMarkers

None

TxnOffsetCommit

None

DescribeAcls

V0

CreateAcls

V0

DeleteAcls

V0

DescribeConfigs

V0

AlterConfigs

None

AlterReplicaLogDirs

V0

DescribeLogDirs

V0

SaslAuthenticate

None

CreatePartitions

None

CreateDelegationToken

V0

RenewDelegationToken

V0

ExpireDelegationToken

V0

DescribeDelegationToken:

V0

DeleteGroups

None

How to identify deprecated client requests

Use the following procedure to locate deprecated client requests in your Confluent Platform environment:

  1. If possible upgrade to the Confluent Platform 7.9.0 version. If you are using an older version and cannot upgrade to the 7.9.0 version, then upgrade to at least the Confluent Platform 7.7.x or 7.8.x version.

    Either of these versions make it possible for you to use the new metrics and tags that help you identify deprecated clients in your environment.

  2. Add the following metric to your monitoring platform:

    kafka.network:type=RequestMetrics,name=DeprecatedRequestsPerSec,request=(api-name),version=(api-version),clientSoftwareName=(client-software-name),clientSoftwareVersion=(client-software-version)
    

    This metric helps you identify if your cluster has any deprecated APIs.

  3. Inspect the metric.

    If the metric is zero, there are no deprecated requests coming to your cluster. If you see a non-zero metric, then enable the kafka.request.logger at the INFO level. Avoid the large accumulation of log data by enabling the INFO value for short periods at a time.

  4. Inspect the logs for full detailed information about client requests

    You can leverage a specific logging tool such as Elastic search to easily search for deprecated requests or grab the logs from disk. Then, use a tool like grep to locate entries with a requestApiVersionDeprecated=true value.