Status
Current state: "Under Discussion"
Discussion thread: TODO
JIRA:
Released: 2.4
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
The PartitionGrouper
interface was originally exposed to allow user a higher degree of flexibility with regard to partition to task mapping. However, Kafka Streams runtime employs many undocumented restrictions to write a correct PartitionGrouper
and hence it is easy for users to break the runtime that way.
In practice, we have not seen the usage of the interface. Hence, we should deprecate and eventually remove it.
Public Interfaces
package org.apache.kafka.streams.processor; @deprecate public interface PartitionGrouper {...} // ---------- package org.apache.kafka.streams; public class StreamConfig { @depredate public static final String PARTITION_GROUPER_CLASS_CONFIG = "partition.grouper"; }
Proposed Changes
We suggest to deprecate PartitionGrouper
interface and its corresponding configuration parameter and to remove both in the next major release 3.0.0.
Compatibility, Deprecation, and Migration Plan
As we are only deprecating an interface and a configuration parameter, there are not backward compatibility concerns.
Rejected Alternatives
None.