diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java index 96aa03fb04d72..b272d46a6a548 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java @@ -326,23 +326,6 @@ public KafkaProducer(Properties properties, Serializer keySerializer, Seriali this(Utils.propsToMap(properties), keySerializer, valueSerializer); } - /** - * Check if partitioner is deprecated and log a warning if it is. - */ - @SuppressWarnings("deprecation") - private void warnIfPartitionerDeprecated() { - // Using DefaultPartitioner and UniformStickyPartitioner is deprecated, see KIP-794. - if (partitioner instanceof org.apache.kafka.clients.producer.internals.DefaultPartitioner) { - log.warn("DefaultPartitioner is deprecated. Please clear " + ProducerConfig.PARTITIONER_CLASS_CONFIG - + " configuration setting to get the default partitioning behavior"); - } - if (partitioner instanceof org.apache.kafka.clients.producer.UniformStickyPartitioner) { - log.warn("UniformStickyPartitioner is deprecated. Please clear " + ProducerConfig.PARTITIONER_CLASS_CONFIG - + " configuration setting and set " + ProducerConfig.PARTITIONER_IGNORE_KEYS_CONFIG - + " to 'true' to get the uniform sticky partitioning behavior"); - } - } - // visible for testing @SuppressWarnings({"unchecked", "this-escape"}) KafkaProducer(ProducerConfig config, @@ -385,7 +368,6 @@ private void warnIfPartitionerDeprecated() { ProducerConfig.PARTITIONER_CLASS_CONFIG, Partitioner.class, Collections.singletonMap(ProducerConfig.CLIENT_ID_CONFIG, clientId)); - warnIfPartitionerDeprecated(); this.partitionerIgnoreKeys = config.getBoolean(ProducerConfig.PARTITIONER_IGNORE_KEYS_CONFIG); long retryBackoffMs = config.getLong(ProducerConfig.RETRY_BACKOFF_MS_CONFIG); long retryBackoffMaxMs = config.getLong(ProducerConfig.RETRY_BACKOFF_MAX_MS_CONFIG); diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/MockProducer.java b/clients/src/main/java/org/apache/kafka/clients/producer/MockProducer.java index ac7b0a191a74e..564171608568a 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/MockProducer.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/MockProducer.java @@ -119,31 +119,6 @@ public MockProducer(final Cluster cluster, this.mockMetrics = new HashMap<>(); } - /** - * Create a new mock producer with invented metadata the given autoComplete setting and key\value serializers. - * - * Equivalent to {@link #MockProducer(Cluster, boolean, Partitioner, Serializer, Serializer) new MockProducer(Cluster.empty(), autoComplete, new DefaultPartitioner(), keySerializer, valueSerializer)} - */ - @SuppressWarnings("deprecation") - public MockProducer(final boolean autoComplete, - final Serializer keySerializer, - final Serializer valueSerializer) { - this(Cluster.empty(), autoComplete, new org.apache.kafka.clients.producer.internals.DefaultPartitioner(), keySerializer, valueSerializer); - } - - /** - * Create a new mock producer with invented metadata the given autoComplete setting and key\value serializers. - * - * Equivalent to {@link #MockProducer(Cluster, boolean, Partitioner, Serializer, Serializer) new MockProducer(cluster, autoComplete, new DefaultPartitioner(), keySerializer, valueSerializer)} - */ - @SuppressWarnings("deprecation") - public MockProducer(final Cluster cluster, - final boolean autoComplete, - final Serializer keySerializer, - final Serializer valueSerializer) { - this(cluster, autoComplete, new org.apache.kafka.clients.producer.internals.DefaultPartitioner(), keySerializer, valueSerializer); - } - /** * Create a new mock producer with invented metadata the given autoComplete setting, partitioner and key\value serializers. * @@ -563,6 +538,9 @@ private int partition(ProducerRecord record, Cluster cluster) { } byte[] keyBytes = keySerializer.serialize(topic, record.headers(), record.key()); byte[] valueBytes = valueSerializer.serialize(topic, record.headers(), record.value()); + if (partitioner == null) { + return this.cluster.partitionsForTopic(record.topic()).get(0).partition(); + } return this.partitioner.partition(topic, record.key(), keyBytes, record.value(), valueBytes, cluster); } diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/Partitioner.java b/clients/src/main/java/org/apache/kafka/clients/producer/Partitioner.java index 3db3c3a31eb76..d95bb43d6b80f 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/Partitioner.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/Partitioner.java @@ -44,7 +44,7 @@ public interface Partitioner extends Configurable, Closeable { void close(); /** - * Note this method is only implemented in DefaultPartitioner and {@link UniformStickyPartitioner} which + * Note this method is only implemented in DefaultPartitioner and UniformStickyPartitioner which * are now deprecated. See KIP-794 for more info. *

* Notifies the partitioner a new batch is about to be created. When using the sticky partitioner, diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/UniformStickyPartitioner.java b/clients/src/main/java/org/apache/kafka/clients/producer/UniformStickyPartitioner.java deleted file mode 100644 index d9faa5f162427..0000000000000 --- a/clients/src/main/java/org/apache/kafka/clients/producer/UniformStickyPartitioner.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.kafka.clients.producer; - -import org.apache.kafka.clients.producer.internals.StickyPartitionCache; -import org.apache.kafka.common.Cluster; - -import java.util.Map; - - -/** - * @deprecated Since 3.3.0, in order to use default partitioning logic - * remove the {@code partitioner.class} configuration setting and set {@code partitioner.ignore.keys=true}. - * See KIP-794 for more info. - * - * The partitioning strategy: - *