diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/ClientsTestUtils.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/ClientsTestUtils.java index 5635f6e36b756..585e68c699d1d 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/ClientsTestUtils.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/ClientsTestUtils.java @@ -129,7 +129,7 @@ public static void pollUntilTrue( Consumer consumer, Duration timeout, Supplier testCondition, - long waitTimeMs, + long waitTimeMs, String msg ) throws InterruptedException { TestUtils.waitForCondition(() -> { @@ -472,7 +472,7 @@ public void onUpdate(ClusterResource clusterResource) { public byte[] serialize(String topic, byte[] data) { return data; } - + public static void resetCount() { UPDATE_PRODUCER_COUNT.set(0); } diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsExpirationTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsExpirationTest.java index 01eca9afb971a..a995ae44f009c 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsExpirationTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsExpirationTest.java @@ -170,8 +170,7 @@ private void testTransactionAfterProducerIdExpires(ClusterInstance clusterInstan try (Producer producer = clusterInstance.producer(Map.of( ProducerConfig.TRANSACTIONAL_ID_CONFIG, TRANSACTION_ID - )) - ) { + ))) { producer.initTransactions(); // Start and then abort a transaction to allow the producer ID to expire. @@ -208,8 +207,7 @@ private void testTransactionAfterProducerIdExpires(ClusterInstance clusterInstan // Create a new producer to check that we retain the producer ID in transactional state. try (Producer producer = clusterInstance.producer(Map.of( ProducerConfig.TRANSACTIONAL_ID_CONFIG, TRANSACTION_ID - )) - ) { + ))) { producer.initTransactions(); // Start a new transaction and attempt to send. This should work since only the producer ID was removed from its mapping in ProducerStateManager. diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsWithMaxInFlightOneTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsWithMaxInFlightOneTest.java index d95901249c009..cd3a0b78d06f7 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsWithMaxInFlightOneTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/TransactionsWithMaxInFlightOneTest.java @@ -84,8 +84,7 @@ public void testTransactionalProducerSingleBrokerMaxInFlightOne(ClusterInstance try (Producer producer = clusterInstance.producer(Map.of( ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactional-producer", ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 1 - )) - ) { + ))) { producer.initTransactions(); producer.beginTransaction(); diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/DescribeProducersWithBrokerIdTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/DescribeProducersWithBrokerIdTest.java index 3ac09d4a6ab8d..d98867ffd26ce 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/DescribeProducersWithBrokerIdTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/DescribeProducersWithBrokerIdTest.java @@ -44,7 +44,7 @@ public class DescribeProducersWithBrokerIdTest { private static final short REPLICATION_FACTOR = 3; private static final TopicPartition TOPIC_PARTITION = new TopicPartition(TOPIC_NAME, 0); - + private final ClusterInstance clusterInstance; public DescribeProducersWithBrokerIdTest(ClusterInstance clusterInstance) { @@ -55,7 +55,7 @@ private static void sendTestRecords(Producer producer) { producer.send(new ProducerRecord<>(TOPIC_NAME, TOPIC_PARTITION.partition(), "key-0".getBytes(), "value-0".getBytes())); producer.flush(); } - + @BeforeEach void setUp() throws InterruptedException { clusterInstance.createTopic(TOPIC_NAME, NUM_PARTITIONS, REPLICATION_FACTOR); @@ -67,7 +67,7 @@ private List getReplicaBrokerIds(Admin admin) throws Exception { .map(Node::id) .toList(); } - + private int getNonReplicaBrokerId(Admin admin) throws Exception { var replicaBrokerIds = getReplicaBrokerIds(admin); return clusterInstance.brokerIds().stream() @@ -75,7 +75,7 @@ private int getNonReplicaBrokerId(Admin admin) throws Exception { .findFirst() .orElseThrow(() -> new IllegalStateException("No non-replica broker found")); } - + private int getFollowerBrokerId(Admin admin) throws Exception { var replicaBrokerIds = getReplicaBrokerIds(admin); var leaderBrokerId = clusterInstance.getLeaderBrokerId(TOPIC_PARTITION); @@ -90,16 +90,16 @@ public void testDescribeProducersDefaultRoutesToLeader() throws Exception { try (Producer producer = clusterInstance.producer(); var admin = clusterInstance.admin()) { sendTestRecords(producer); - + var stateWithExplicitLeader = admin.describeProducers( - List.of(TOPIC_PARTITION), + List.of(TOPIC_PARTITION), new DescribeProducersOptions().brokerId(clusterInstance.getLeaderBrokerId(TOPIC_PARTITION)) ).partitionResult(TOPIC_PARTITION).get(); - + var stateWithDefaultRouting = admin.describeProducers( List.of(TOPIC_PARTITION) ).partitionResult(TOPIC_PARTITION).get(); - + assertNotNull(stateWithDefaultRouting); assertFalse(stateWithDefaultRouting.activeProducers().isEmpty()); assertEquals(stateWithExplicitLeader.activeProducers(), stateWithDefaultRouting.activeProducers()); @@ -113,10 +113,10 @@ public void testDescribeProducersFromFollower() throws Exception { sendTestRecords(producer); var followerState = admin.describeProducers( - List.of(TOPIC_PARTITION), + List.of(TOPIC_PARTITION), new DescribeProducersOptions().brokerId(getFollowerBrokerId(admin)) ).partitionResult(TOPIC_PARTITION).get(); - + var leaderState = admin.describeProducers( List.of(TOPIC_PARTITION) ).partitionResult(TOPIC_PARTITION).get(); @@ -133,11 +133,11 @@ public void testDescribeProducersWithInvalidBrokerId() throws Exception { var admin = clusterInstance.admin()) { sendTestRecords(producer); - TestUtils.assertFutureThrows(NotLeaderOrFollowerException.class, + TestUtils.assertFutureThrows(NotLeaderOrFollowerException.class, admin.describeProducers( - List.of(TOPIC_PARTITION), + List.of(TOPIC_PARTITION), new DescribeProducersOptions().brokerId(getNonReplicaBrokerId(admin)) - ).partitionResult(TOPIC_PARTITION)); + ).partitionResult(TOPIC_PARTITION)); } } } \ No newline at end of file diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/StaticBrokerConfigTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/StaticBrokerConfigTest.java index 6f35f7ec30757..ea5c5351ff94f 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/StaticBrokerConfigTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/admin/StaticBrokerConfigTest.java @@ -123,8 +123,8 @@ public void testTopicConfigsGetImpactedIfStaticConfigsAddToBroker(ClusterInstanc @ClusterTest(types = {Type.KRAFT}) public void testInternalConfigsDoNotReturnForDescribeConfigs(ClusterInstance cluster) throws Exception { try ( - Admin admin = cluster.admin(); - Admin controllerAdmin = cluster.admin(Map.of(), true) + Admin admin = cluster.admin(); + Admin controllerAdmin = cluster.admin(Map.of(), true) ) { ConfigResource brokerResource = new ConfigResource(ConfigResource.Type.BROKER, "0"); ConfigResource topicResource = new ConfigResource(ConfigResource.Type.TOPIC, TOPIC); diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerBounceTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerBounceTest.java index d8838d1b6e95a..3b5ff7c6e9f77 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerBounceTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerBounceTest.java @@ -66,7 +66,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.IntStream; -import static org.apache.kafka.test.TestUtils.SEEDED_RANDOM; +import static org.apache.kafka.test.TestUtils.SEEDED_RANDOM; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerIntegrationTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerIntegrationTest.java index 16e38967817c7..c4bce92ee2772 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerIntegrationTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ConsumerIntegrationTest.java @@ -118,6 +118,7 @@ private static void testFetchPartitionsAfterFailedListener(ClusterInstance clust ConsumerConfig.GROUP_PROTOCOL_CONFIG, groupProtocol.name()))) { consumer.subscribe(List.of(topic), new ConsumerRebalanceListener() { private int count = 0; + @Override public void onPartitionsRevoked(Collection partitions) { } diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCallbackTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCallbackTest.java index 0e09d62033b3b..dd10eb9164d9b 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCallbackTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCallbackTest.java @@ -313,8 +313,8 @@ public void onPartitionsRevoked(Collection partitions) { } }); ClientsTestUtils.pollUntilTrue( - consumer, - partitionsAssigned::get, + consumer, + partitionsAssigned::get, "Timed out before expected rebalance completed" ); } diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCommitTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCommitTest.java index ef4c9c9552df4..60edf83e817ed 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCommitTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerCommitTest.java @@ -340,6 +340,7 @@ public void onPartitionsAssigned(Collection partitions) { // keep partitions paused in this test so that we can verify the commits based on specific seeks consumer.pause(partitions); } + @Override public void onPartitionsRevoked(Collection partitions) { // No-op diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerFetchTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerFetchTest.java index e65dd0b7ed98f..a1461e1d863ad 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerFetchTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerFetchTest.java @@ -174,7 +174,7 @@ private void testFetchOutOfRangeOffsetResetConfigLatest(GroupProtocol groupProto sendRecords(producer, tp, totalRecords, startingTimestamp); consumer.assign(List.of(tp)); consumer.seek(tp, 0); - + // consume some, but not all the records consumeAndVerifyRecords(consumer, tp, totalRecords / 2, 0); // seek to out of range position @@ -369,7 +369,7 @@ private void testFetchHonoursMaxPartitionFetchBytesIfLargeRecordNotFirst(GroupPr } private void checkFetchHonoursSizeIfLargeRecordNotFirst( - Map config, + Map config, int largeProducerRecordSize ) throws ExecutionException, InterruptedException { try (Consumer consumer = cluster.consumer(config); @@ -393,7 +393,7 @@ private void checkFetchHonoursSizeIfLargeRecordNotFirst( // we should only get the small record in the first `poll` consumer.assign(List.of(tp)); - + var records = consumeRecords(consumer, 1); assertEquals(1, records.size()); var consumerRecord = records.iterator().next(); @@ -426,7 +426,7 @@ private void testLowMaxFetchSizeForRequestAndPartition(GroupProtocol groupProtoc // Avoid a rebalance while the records are being sent (the default is 6 seconds) MAX_POLL_INTERVAL_MS_CONFIG, 20000 ); - + try (Consumer consumer = cluster.consumer(config); Producer producer = cluster.producer() ) { diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerSubscriptionTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerSubscriptionTest.java index 5dbe2248eb887..442e255afd2a9 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerSubscriptionTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerSubscriptionTest.java @@ -327,7 +327,7 @@ public void testAsyncConsumerRe2JPatternSubscription() throws InterruptedExcepti new TopicPartition(topic1, 1) ); awaitAssignment(consumer, assignment); - + consumer.unsubscribe(); assertEquals(0, consumer.assignment().size()); // Subscribe to a different pattern to match topic2 (that did not match before) @@ -385,7 +385,7 @@ public void testAsyncConsumerRe2JPatternExpandSubscription() throws InterruptedE var topic2 = "topic2"; // does not match first pattern cluster.createTopic(topic2, 2, (short) BROKER_COUNT); - + assertEquals(0, consumer.assignment().size()); var pattern = new SubscriptionPattern("topic1.*"); consumer.subscribe(pattern); @@ -418,8 +418,8 @@ public void testTopicIdSubscriptionWithRe2JRegexAndOffsetsFetch() throws Interru Map config = Map.of(GROUP_PROTOCOL_CONFIG, GroupProtocol.CONSUMER.name().toLowerCase(Locale.ROOT)); try ( - Producer producer = cluster.producer(); - Consumer consumer = cluster.consumer(config) + Producer producer = cluster.producer(); + Consumer consumer = cluster.consumer(config) ) { assertEquals(0, consumer.assignment().size()); @@ -504,7 +504,7 @@ public void testRe2JPatternSubscriptionAndTopicSubscription() throws Interrupted awaitAssignment(consumer, patternAssignment); } } - + @ClusterTest public void testRe2JPatternSubscriptionInvalidRegex() throws InterruptedException { diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerTest.java index 6a1b174d18835..fbf8adff91e40 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/PlaintextConsumerTest.java @@ -315,13 +315,13 @@ private void testHeadersSerializeDeserialize(Map config) throws Consumer consumer = cluster.consumer(consumerConfig) ) { producer.send(new ProducerRecord<>( - TP.topic(), - TP.partition(), - null, - "key".getBytes(), + TP.topic(), + TP.partition(), + null, + "key".getBytes(), "value".getBytes()) ); - + assertEquals(0, consumer.assignment().size()); consumer.assign(List.of(TP)); assertEquals(1, consumer.assignment().size()); @@ -496,7 +496,7 @@ private void testPartitionsForAutoCreate(Map consumerConfig) thr // First call would create the topic consumer.partitionsFor("non-exist-topic"); TestUtils.waitForCondition( - () -> !consumer.partitionsFor("non-exist-topic").isEmpty(), + () -> !consumer.partitionsFor("non-exist-topic").isEmpty(), "Timed out while awaiting non empty partitions." ); } @@ -647,7 +647,7 @@ private void testInterceptors(Map consumerConfig) throws Excepti consumerConfigOverride.put(INTERCEPTOR_CLASSES_CONFIG, MockConsumerInterceptor.class.getName()); consumerConfigOverride.put(KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); consumerConfigOverride.put(VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); - + try (Producer producer = cluster.producer(producerConfig); Consumer consumer = cluster.consumer(consumerConfigOverride) ) { @@ -670,20 +670,20 @@ private void testInterceptors(Map consumerConfig) throws Excepti // send invalid record assertThrows( Throwable.class, - () -> producer.send(null), + () -> producer.send(null), "Should not allow sending a null record" ); assertEquals( - 1, - MockProducerInterceptor.ON_ERROR_COUNT.intValue(), + 1, + MockProducerInterceptor.ON_ERROR_COUNT.intValue(), "Interceptor should be notified about exception" ); assertEquals( - 0, + 0, MockProducerInterceptor.ON_ERROR_WITH_METADATA_COUNT.intValue(), "Interceptor should not receive metadata with an exception when record is null" ); - + consumer.assign(List.of(TP)); consumer.seek(TP, 0); @@ -933,7 +933,7 @@ private void testPerPartitionLeadMetricsCleanUpWithSubscribe( var topic2 = "topic2"; var tp2 = new TopicPartition(TOPIC, 1); cluster.createTopic(topic2, 2, (short) BROKER_COUNT); - + try (Consumer consumer = cluster.consumer(consumerConfig)) { // send some messages. sendRecords(cluster, TP, numMessages); @@ -1000,7 +1000,7 @@ private void testPerPartitionLagMetricsCleanUpWithSubscribe( try (Consumer consumer = cluster.consumer(consumerConfig)) { // send some messages. sendRecords(cluster, TP, numMessages); - + // Test subscribe // Create a consumer and consumer some messages. var listener = new TestConsumerReassignmentListener(); @@ -1059,14 +1059,14 @@ private void testPerPartitionLeadMetricsCleanUpWithAssign( var numMessages = 1000; var tp2 = new TopicPartition(TOPIC, 1); cluster.createTopic(TOPIC, 2, (short) BROKER_COUNT); - + try (Producer producer = cluster.producer(); Consumer consumer = cluster.consumer(consumerConfig) ) { // Test assign send some messages. sendRecords(producer, TP, numMessages, System.currentTimeMillis()); sendRecords(producer, tp2, numMessages, System.currentTimeMillis()); - + consumer.assign(List.of(TP)); var records = awaitNonEmptyRecords(consumer, TP); @@ -1074,7 +1074,7 @@ private void testPerPartitionLeadMetricsCleanUpWithAssign( Map tags = Map.of( "client-id", consumerClientId, "topic", TP.topic(), - "partition", String.valueOf(TP.partition()) + "partition", String.valueOf(TP.partition()) ); var fetchLead = consumer.metrics().get(new MetricName("records-lead", "consumer-fetch-manager-metrics", "", tags)); @@ -1219,7 +1219,7 @@ public void testAsyncConsumerQuotaMetricsNotCreatedIfNoQuotasConfigured() throws } private void testQuotaMetricsNotCreatedIfNoQuotasConfigured( - Map consumerConfig, + Map consumerConfig, String consumerClientId ) throws Exception { var producerClientId = UUID.randomUUID().toString(); @@ -1235,7 +1235,7 @@ private void testQuotaMetricsNotCreatedIfNoQuotasConfigured( consumer.assign(List.of(TP)); consumer.seek(TP, 0); consumeAndVerifyRecords(consumer, TP, numRecords, 0, 0, startingTimestamp); - + var brokers = cluster.brokers().values(); brokers.forEach(broker -> assertNoMetric(broker, "byte-rate", QuotaType.PRODUCE, producerClientId)); brokers.forEach(broker -> assertNoMetric(broker, "throttle-time", QuotaType.PRODUCE, producerClientId)); @@ -1252,7 +1252,7 @@ private void assertNoMetric(KafkaBroker broker, String name, QuotaType quotaType var metricName = broker.metrics().metricName(name, quotaType.toString(), "", "user", "", "client-id", clientId); assertNull(broker.metrics().metric(metricName), "Metric should not have been created " + metricName); } - + @ClusterTest public void testClassicConsumerSeekThrowsIllegalStateIfPartitionsNotAssigned() throws Exception { testSeekThrowsIllegalStateIfPartitionsNotAssigned(Map.of( @@ -1527,7 +1527,7 @@ private void testFetchOffsetsForTime(Map consumerConfig) throws assertEquals(Optional.of(0), timestampTp1.leaderEpoch()); } } - + @ClusterTest public void testClassicConsumerPositionRespectsTimeout() { testPositionRespectsTimeout(Map.of( @@ -1551,7 +1551,7 @@ private void testPositionRespectsTimeout(Map consumerConfig) { assertThrows(TimeoutException.class, () -> consumer.position(topicPartition, Duration.ofSeconds(3))); } } - + @ClusterTest public void testClassicConsumerPositionRespectsWakeup() { testPositionRespectsWakeup(Map.of( @@ -1581,7 +1581,7 @@ private void testPositionRespectsWakeup(Map consumerConfig) { assertThrows(WakeupException.class, () -> consumer.position(topicPartition, Duration.ofSeconds(3))); } } - + @ClusterTest public void testClassicConsumerPositionWithErrorConnectionRespectsWakeup() { testPositionWithErrorConnectionRespectsWakeup(Map.of( @@ -1670,8 +1670,8 @@ private void testCloseLeavesGroupOnInterrupt(Map consumerConfig) var leaveGroupTimeoutMs = config.getInt(SESSION_TIMEOUT_MS_CONFIG) / 2; TestUtils.waitForCondition( - () -> checkGroupMemberEmpty(config), - leaveGroupTimeoutMs, + () -> checkGroupMemberEmpty(config), + leaveGroupTimeoutMs, "Consumer did not leave the consumer group within " + leaveGroupTimeoutMs + " ms of close" ); } diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ShareConsumerDeliveryTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ShareConsumerDeliveryTest.java index 771d95ac4445c..9aca91a5f4d5d 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ShareConsumerDeliveryTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/consumer/ShareConsumerDeliveryTest.java @@ -1042,7 +1042,7 @@ public void testFetchWithThrottledDeliveryValidateDeliveryCount() throws Interru records.forEach(record -> { if (!offsetToDeliveryCountMap.containsKey(record.offset())) { offsetToDeliveryCountMap.put(record.offset(), 1); - } else { + } else { offsetToDeliveryCountMap.put(record.offset(), offsetToDeliveryCountMap.get(record.offset()) + 1); } }); @@ -1060,7 +1060,7 @@ public void testFetchWithThrottledDeliveryValidateDeliveryCount() throws Interru records.forEach(record -> { if (!offsetToDeliveryCountMap.containsKey(record.offset())) { offsetToDeliveryCountMap.put(record.offset(), 1); - } else { + } else { offsetToDeliveryCountMap.put(record.offset(), offsetToDeliveryCountMap.get(record.offset()) + 1); } }); diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerIdExpirationTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerIdExpirationTest.java index 94bc50b4955e9..78ca2a69d490e 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerIdExpirationTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerIdExpirationTest.java @@ -84,7 +84,7 @@ @ClusterConfigProperty(key = "unclean.leader.election.enable", value = "false"), @ClusterConfigProperty(key = AUTO_LEADER_REBALANCE_ENABLE_CONFIG, value = "false"), @ClusterConfigProperty(key = GROUP_INITIAL_REBALANCE_DELAY_MS_CONFIG, value = "0"), - @ClusterConfigProperty(key = TRANSACTIONS_ABORT_TIMED_OUT_TRANSACTION_CLEANUP_INTERVAL_MS_CONFIG, value = + @ClusterConfigProperty(key = TRANSACTIONS_ABORT_TIMED_OUT_TRANSACTION_CLEANUP_INTERVAL_MS_CONFIG, value = "200"), @ClusterConfigProperty(key = TRANSACTIONAL_ID_EXPIRATION_MS_CONFIG, value = "5000"), @ClusterConfigProperty(key = TRANSACTIONS_REMOVE_EXPIRED_TRANSACTIONAL_ID_CLEANUP_INTERVAL_MS_CONFIG, value = diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerSendWhileDeletionTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerSendWhileDeletionTest.java index 7d5f5e5584dbe..d011f38fc8001 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerSendWhileDeletionTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/clients/producer/ProducerSendWhileDeletionTest.java @@ -244,7 +244,7 @@ private void verifyTopicDeletion() throws InterruptedException { ); // ensure that the topic-partition has been deleted from all brokers' replica managers - TestUtils.waitForCondition(() -> + TestUtils.waitForCondition(() -> cluster.brokers().values().stream() .allMatch(broker -> topicPartitions.stream() .allMatch(tp -> broker.replicaManager().onlinePartition(tp).isEmpty()) @@ -305,7 +305,7 @@ private TopicDescription topicMetadata() throws Exception { .allTopicNames() .get() .get(topic); - + } } diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java index 95169356a5945..6cdb2f5e54ff9 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java @@ -61,21 +61,21 @@ public void testCustomQuotaCallbackWithControllerServer(ClusterInstance cluster) try (Admin admin = cluster.admin(Map.of())) { admin.createTopics(List.of(new NewTopic("topic", 1, (short) 1))); TestUtils.waitForCondition( - () -> CustomQuotaCallback.COUNTERS.size() == 3 - && CustomQuotaCallback.COUNTERS.values().stream().allMatch(counter -> counter.get() > 0), + () -> CustomQuotaCallback.COUNTERS.size() == 3 + && CustomQuotaCallback.COUNTERS.values().stream().allMatch(counter -> counter.get() > 0), "The CustomQuotaCallback not triggered in all controllers. " ); - + // Reset the counters, and we expect the callback to be triggered again in all controllers CustomQuotaCallback.COUNTERS.clear(); - + admin.deleteTopics(List.of("topic")); TestUtils.waitForCondition( () -> CustomQuotaCallback.COUNTERS.size() == 3 - && CustomQuotaCallback.COUNTERS.values().stream().allMatch(counter -> counter.get() > 0), + && CustomQuotaCallback.COUNTERS.values().stream().allMatch(counter -> counter.get() > 0), "The CustomQuotaCallback not triggered in all controllers. " ); - + } } @@ -169,7 +169,7 @@ public void configure(Map configs) { } public static class MonitorableCustomQuotaCallback extends CustomQuotaCallback implements Monitorable { - + private static final String METRIC_NAME = "monitorable-custom-quota-callback-name"; private static final String METRIC_DESCRIPTION = "monitorable-custom-quota-callback-description"; @@ -178,6 +178,6 @@ public void withPluginMetrics(PluginMetrics metrics) { MetricName metricName = metrics.metricName(METRIC_NAME, METRIC_DESCRIPTION, new LinkedHashMap<>()); metrics.addMetric(metricName, (Gauge) (config, now) -> 1); } - + } } diff --git a/clients/src/main/java/org/apache/kafka/clients/ApiVersions.java b/clients/src/main/java/org/apache/kafka/clients/ApiVersions.java index e00755e994542..929df70fbb0e3 100644 --- a/clients/src/main/java/org/apache/kafka/clients/ApiVersions.java +++ b/clients/src/main/java/org/apache/kafka/clients/ApiVersions.java @@ -36,6 +36,7 @@ public class ApiVersions { public static class FinalizedFeaturesInfo { public final long finalizedFeaturesEpoch; public final Map finalizedFeatures; + FinalizedFeaturesInfo(long finalizedFeaturesEpoch, Map finalizedFeatures) { this.finalizedFeaturesEpoch = finalizedFeaturesEpoch; this.finalizedFeatures = finalizedFeatures; diff --git a/clients/src/main/java/org/apache/kafka/clients/ClientUtils.java b/clients/src/main/java/org/apache/kafka/clients/ClientUtils.java index 3965701667179..c419d8ddcb7b0 100644 --- a/clients/src/main/java/org/apache/kafka/clients/ClientUtils.java +++ b/clients/src/main/java/org/apache/kafka/clients/ClientUtils.java @@ -243,7 +243,7 @@ public static List configuredInterceptors(AbstractConfig config, public static ClusterResourceListeners configureClusterResourceListeners(List... candidateLists) { ClusterResourceListeners clusterResourceListeners = new ClusterResourceListeners(); - for (List candidateList: candidateLists) + for (List candidateList : candidateLists) clusterResourceListeners.maybeAddAll(candidateList); return clusterResourceListeners; diff --git a/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java b/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java index 101dce5ab06fb..4b98fd344ce82 100644 --- a/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java +++ b/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java @@ -298,7 +298,7 @@ public FetchRequestData build() { List altered = new ArrayList<>(); List replaced = new ArrayList<>(); for (Iterator> iter = - sessionPartitions.entrySet().iterator(); iter.hasNext(); ) { + sessionPartitions.entrySet().iterator(); iter.hasNext();) { Entry entry = iter.next(); TopicPartition topicPartition = entry.getKey(); PartitionData prevData = entry.getValue(); @@ -412,7 +412,7 @@ private String topicIdPartitionsToLogString(Collection partiti */ static Set findMissing(Set toFind, Set toSearch) { Set ret = new LinkedHashSet<>(); - for (T toFindItem: toFind) { + for (T toFindItem : toFind) { if (!toSearch.contains(toFindItem)) { ret.add(toFindItem); } diff --git a/clients/src/main/java/org/apache/kafka/clients/Metadata.java b/clients/src/main/java/org/apache/kafka/clients/Metadata.java index 93bc8f8bc8382..596e5981a430e 100644 --- a/clients/src/main/java/org/apache/kafka/clients/Metadata.java +++ b/clients/src/main/java/org/apache/kafka/clients/Metadata.java @@ -388,7 +388,7 @@ public synchronized Set updatePartitionLeadership(Map updatePartitionMetadata = new ArrayList<>(); - for (Entry partitionLeader: partitionLeaders.entrySet()) { + for (Entry partitionLeader : partitionLeaders.entrySet()) { TopicPartition partition = partitionLeader.getKey(); Metadata.LeaderAndEpoch currentLeader = currentLeader(partition); Metadata.LeaderIdAndEpoch newLeader = partitionLeader.getValue(); diff --git a/clients/src/main/java/org/apache/kafka/clients/NetworkClientUtils.java b/clients/src/main/java/org/apache/kafka/clients/NetworkClientUtils.java index 3e161b1e9939b..6a37ffc957193 100644 --- a/clients/src/main/java/org/apache/kafka/clients/NetworkClientUtils.java +++ b/clients/src/main/java/org/apache/kafka/clients/NetworkClientUtils.java @@ -62,7 +62,7 @@ public static boolean awaitReady(KafkaClient client, Node node, Time time, long } long startTime = time.milliseconds(); - if (isReady(client, node, startTime) || client.ready(node, startTime)) + if (isReady(client, node, startTime) || client.ready(node, startTime)) return true; long attemptStartTime = time.milliseconds(); diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/Admin.java b/clients/src/main/java/org/apache/kafka/clients/admin/Admin.java index 313c29ca49ee1..ba4e23281e4a6 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/Admin.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/Admin.java @@ -1514,6 +1514,7 @@ default AlterUserScramCredentialsResult alterUserScramCredentials(List alterations, AlterUserScramCredentialsOptions options); + /** * Describes finalized as well as supported features. *

@@ -2161,6 +2162,6 @@ default TerminateTransactionResult forceTerminateTransaction(String transactiona * @param options The options to use when terminating the transaction. * @return The TerminateTransactionResult. */ - TerminateTransactionResult forceTerminateTransaction(String transactionalId, + TerminateTransactionResult forceTerminateTransaction(String transactionalId, TerminateTransactionOptions options); } diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/AdminClientConfig.java b/clients/src/main/java/org/apache/kafka/clients/admin/AdminClientConfig.java index 3908688615657..f528ab53435be 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/AdminClientConfig.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/AdminClientConfig.java @@ -293,11 +293,11 @@ public class AdminClientConfig extends AbstractConfig { true, Importance.LOW, METADATA_CLUSTER_CHECK_ENABLE_DOC) - .define(CONFIG_PROVIDERS_CONFIG, + .define(CONFIG_PROVIDERS_CONFIG, ConfigDef.Type.LIST, List.of(), ConfigDef.ValidList.anyNonDuplicateValues(true, false), - ConfigDef.Importance.LOW, + ConfigDef.Importance.LOW, CONFIG_PROVIDERS_DOC); } @@ -321,7 +321,7 @@ public static Set configNames() { } public static ConfigDef configDef() { - return new ConfigDef(CONFIG); + return new ConfigDef(CONFIG); } public static void main(String[] args) { diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/AlterConfigOp.java b/clients/src/main/java/org/apache/kafka/clients/admin/AlterConfigOp.java index 789c9f64a93aa..a43610e55e922 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/AlterConfigOp.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/AlterConfigOp.java @@ -90,7 +90,7 @@ public static OpType forId(final byte id) { public AlterConfigOp(ConfigEntry configEntry, OpType operationType) { this.configEntry = configEntry; - this.opType = operationType; + this.opType = operationType; } public ConfigEntry configEntry() { diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/AlterConsumerGroupOffsetsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/AlterConsumerGroupOffsetsResult.java index 8d78a16b57458..0faaacda64f77 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/AlterConsumerGroupOffsetsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/AlterConsumerGroupOffsetsResult.java @@ -65,7 +65,7 @@ public KafkaFuture partitionResult(final TopicPartition partition) { * Return a future which succeeds if all the alter offsets succeed. */ public KafkaFuture all() { - return this.future.thenApply(topicPartitionErrorsMap -> { + return this.future.thenApply(topicPartitionErrorsMap -> { List partitionsFailed = topicPartitionErrorsMap.entrySet() .stream() .filter(e -> e.getValue() != Errors.NONE) diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java index 96582297f7543..d6f4e259f6105 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java @@ -68,7 +68,7 @@ public KafkaFuture partitionResult(final TopicPartition partition) { * If not, the first topic error shall be returned. */ public KafkaFuture all() { - return this.future.thenApply(topicPartitionErrorsMap -> { + return this.future.thenApply(topicPartitionErrorsMap -> { List partitionsFailed = topicPartitionErrorsMap.entrySet() .stream() .filter(e -> e.getValue() != null) diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/ConfigEntry.java b/clients/src/main/java/org/apache/kafka/clients/admin/ConfigEntry.java index cde99ffb85229..8e0c4ca4b4b86 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/ConfigEntry.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/ConfigEntry.java @@ -124,7 +124,7 @@ public boolean isReadOnly() { * The list is empty if synonyms were not requested using {@link DescribeConfigsOptions#includeSynonyms(boolean)} */ public List synonyms() { - return synonyms; + return synonyms; } /** diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/CreateDelegationTokenOptions.java b/clients/src/main/java/org/apache/kafka/clients/admin/CreateDelegationTokenOptions.java index f7ef1d4619d44..3952f2f82e661 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/CreateDelegationTokenOptions.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/CreateDelegationTokenOptions.java @@ -28,7 +28,7 @@ */ public class CreateDelegationTokenOptions extends AbstractOptions { private long maxLifetimeMs = -1; - private List renewers = new LinkedList<>(); + private List renewers = new LinkedList<>(); private KafkaPrincipal owner = null; public CreateDelegationTokenOptions renewers(List renewers) { diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/CreateTopicsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/CreateTopicsResult.java index 6cf794c65ee0a..bcb821aefb010 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/CreateTopicsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/CreateTopicsResult.java @@ -78,7 +78,7 @@ public KafkaFuture config(String topic) { public KafkaFuture topicId(String topic) { return futures.get(topic).thenApply(TopicMetadataAndConfig::topicId); } - + /** * Returns a future that provides number of partitions in the topic when the request completes. *

@@ -127,7 +127,7 @@ public TopicMetadataAndConfig(ApiException exception) { this.replicationFactor = UNKNOWN; this.config = null; } - + public Uuid topicId() { ensureSuccess(); return topicId; diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/DeleteAclsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/DeleteAclsResult.java index db43ac3f047f0..20985cabd6c02 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/DeleteAclsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/DeleteAclsResult.java @@ -102,7 +102,7 @@ public KafkaFuture> all() { private List getAclBindings(Map> futures) { List acls = new ArrayList<>(); - for (KafkaFuture value: futures.values()) { + for (KafkaFuture value : futures.values()) { FilterResults results; try { results = value.get(); diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/DescribeReplicaLogDirsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/DescribeReplicaLogDirsResult.java index 8e01bf80a91bf..f979df8818994 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/DescribeReplicaLogDirsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/DescribeReplicaLogDirsResult.java @@ -62,7 +62,7 @@ public KafkaFuture> all() { } public static class ReplicaLogDirInfo { - + private final String currentReplicaLogDir; private final long currentReplicaOffsetLag; private final String futureReplicaLogDir; diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/DescribeTransactionsResult.java b/clients/src/main/java/org/apache/kafka/clients/admin/DescribeTransactionsResult.java index 316c5e1c6d441..ea81903c4071b 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/DescribeTransactionsResult.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/DescribeTransactionsResult.java @@ -49,6 +49,7 @@ public KafkaFuture description(String transactionalId) { } return future; } + /** * Get a future which returns a map of the transaction descriptions requested in the respective * call to {@link Admin#describeTransactions(Collection, DescribeTransactionsOptions)}. diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java b/clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java index a221d9e52a6c6..8736ca1731588 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java @@ -1051,7 +1051,7 @@ static class TimeoutProcessor { */ int handleTimeouts(Collection calls, String msg) { int numTimedOut = 0; - for (Iterator iter = calls.iterator(); iter.hasNext(); ) { + for (Iterator iter = calls.iterator(); iter.hasNext();) { Call call = iter.next(); int remainingMs = calcTimeoutMsRemainingAsInt(now, call.deadlineMs); if (remainingMs < 0) { @@ -1246,7 +1246,7 @@ private boolean maybeDrainPendingCall(Call call, long now) { */ private long sendEligibleCalls(long now) { long pollTimeout = Long.MAX_VALUE; - for (Iterator>> iter = callsToSend.entrySet().iterator(); iter.hasNext(); ) { + for (Iterator>> iter = callsToSend.entrySet().iterator(); iter.hasNext();) { Map.Entry> entry = iter.next(); List calls = entry.getValue(); if (calls.isEmpty()) { @@ -1407,7 +1407,7 @@ private void handleResponses(long now, List responses) { * be put back in the pendingCalls collection and they will be reassigned */ private void unassignUnsentCalls(Predicate shouldUnassign) { - for (Iterator>> iter = callsToSend.entrySet().iterator(); iter.hasNext(); ) { + for (Iterator>> iter = callsToSend.entrySet().iterator(); iter.hasNext();) { Map.Entry> entry = iter.next(); Node node = entry.getKey(); List awaitingCalls = entry.getValue(); diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/ListTransactionsOptions.java b/clients/src/main/java/org/apache/kafka/clients/admin/ListTransactionsOptions.java index 72a796308d45b..5542683f5d685 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/ListTransactionsOptions.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/ListTransactionsOptions.java @@ -32,6 +32,7 @@ public class ListTransactionsOptions extends AbstractOptions all() { result.completeExceptionally(throwable); } else { if (removeAll()) { - for (Map.Entry entry: memberErrors.entrySet()) { + for (Map.Entry entry : memberErrors.entrySet()) { Exception exception = entry.getValue().exception(); if (exception != null) { Throwable ex = new KafkaException("Encounter exception when trying to remove: " diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/TopicDescription.java b/clients/src/main/java/org/apache/kafka/clients/admin/TopicDescription.java index c3bbaf318a25e..eb2da4f0c383c 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/TopicDescription.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/TopicDescription.java @@ -128,7 +128,7 @@ public List partitions() { /** * authorized operations for this topic, or null if this is not known. */ - public Set authorizedOperations() { + public Set authorizedOperations() { return authorizedOperations; } diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/TopicListing.java b/clients/src/main/java/org/apache/kafka/clients/admin/TopicListing.java index f402fa298ae2d..171ea958135f8 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/TopicListing.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/TopicListing.java @@ -64,6 +64,6 @@ public boolean isInternal() { @Override public String toString() { - return "(name=" + name + ", topicId=" + topicId + ", internal=" + internal + ")"; + return "(name=" + name + ", topicId=" + topicId + ", internal=" + internal + ")"; } } diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminApiHandler.java b/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminApiHandler.java index 9c9d8e286bd7d..e1a26b730b512 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminApiHandler.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminApiHandler.java @@ -176,6 +176,7 @@ public final Collection> buildRequest(int brokerId, Set key */ abstract class Unbatched implements AdminApiHandler { abstract AbstractRequest.Builder buildSingleRequest(int brokerId, K key); + abstract ApiResult handleSingleResponse(Node broker, K key, AbstractResponse response); @Override diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminMetadataManager.java b/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminMetadataManager.java index 0ac5419991e1b..5d37fd267955b 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminMetadataManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/internals/AdminMetadataManager.java @@ -279,7 +279,7 @@ public void updateFailed(Throwable exception) { if (RequestUtils.isFatalException(exception)) { log.warn("Fatal error during metadata update", exception); // avoid unchecked/unconfirmed cast to ApiException - if (exception instanceof ApiException) { + if (exception instanceof ApiException) { this.fatalException = (ApiException) exception; } diff --git a/clients/src/main/java/org/apache/kafka/clients/admin/internals/DeleteRecordsHandler.java b/clients/src/main/java/org/apache/kafka/clients/admin/internals/DeleteRecordsHandler.java index 7a8aca79b39e3..3404c9a08c618 100644 --- a/clients/src/main/java/org/apache/kafka/clients/admin/internals/DeleteRecordsHandler.java +++ b/clients/src/main/java/org/apache/kafka/clients/admin/internals/DeleteRecordsHandler.java @@ -111,7 +111,7 @@ public ApiResult handleResponse( List unmapped = new ArrayList<>(); Set retriable = new HashSet<>(); - for (DeleteRecordsResponseData.DeleteRecordsTopicResult topicResult: response.data().topics()) { + for (DeleteRecordsResponseData.DeleteRecordsTopicResult topicResult : response.data().topics()) { for (DeleteRecordsResponseData.DeleteRecordsPartitionResult partitionResult : topicResult.partitions()) { Errors error = Errors.forCode(partitionResult.errorCode()); TopicPartition topicPartition = new TopicPartition(topicResult.name(), partitionResult.partitionIndex()); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/Consumer.java b/clients/src/main/java/org/apache/kafka/clients/consumer/Consumer.java index 365d19d41349a..ea4f083d722b8 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/Consumer.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/Consumer.java @@ -112,6 +112,7 @@ public interface Consumer extends Closeable { * @see KafkaConsumer#commitSync(Map, Duration) */ void commitSync(final Map offsets, final Duration timeout); + /** * @see KafkaConsumer#commitAsync() */ @@ -136,6 +137,7 @@ public interface Consumer extends Closeable { * @see KafkaConsumer#unregisterMetricFromSubscription(KafkaMetric) */ void unregisterMetricFromSubscription(KafkaMetric metric); + /** * @see KafkaConsumer#seek(TopicPartition, long) */ @@ -160,7 +162,7 @@ public interface Consumer extends Closeable { * @see KafkaConsumer#position(TopicPartition) */ long position(TopicPartition partition); - + /** * @see KafkaConsumer#position(TopicPartition, Duration) */ diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecord.java b/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecord.java index e25746c5f58af..2e7e2d5ff6076 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecord.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecord.java @@ -186,7 +186,7 @@ public int partition() { public Headers headers() { return headers; } - + /** * The key (or null if no key is specified) */ @@ -260,15 +260,15 @@ public Optional deliveryCount() { @Override public String toString() { return "ConsumerRecord(topic = " + topic - + ", partition = " + partition - + ", leaderEpoch = " + leaderEpoch.orElse(null) - + ", offset = " + offset - + ", " + timestampType + " = " + timestamp - + ", deliveryCount = " + deliveryCount.orElse(null) - + ", serialized key size = " + serializedKeySize - + ", serialized value size = " + serializedValueSize - + ", headers = " + headers - + ", key = " + key - + ", value = " + value + ")"; + + ", partition = " + partition + + ", leaderEpoch = " + leaderEpoch.orElse(null) + + ", offset = " + offset + + ", " + timestampType + " = " + timestamp + + ", deliveryCount = " + deliveryCount.orElse(null) + + ", serialized key size = " + serializedKeySize + + ", serialized value size = " + serializedValueSize + + ", headers = " + headers + + ", key = " + key + + ", value = " + value + ")"; } } diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecords.java b/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecords.java index 42fdad92312fd..a4ac145067c53 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecords.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerRecords.java @@ -111,7 +111,7 @@ public Iterator> iterator() { */ public int count() { int count = 0; - for (List> recs: this.records.values()) + for (List> recs : this.records.values()) count += recs.size(); return count; } diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/MockConsumer.java b/clients/src/main/java/org/apache/kafka/clients/consumer/MockConsumer.java index 92a3435800b11..f2cca6f46924e 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/MockConsumer.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/MockConsumer.java @@ -204,7 +204,7 @@ private synchronized void subscribe(Pattern pattern, Optional topicsToSubscribe = new HashSet<>(); - for (String topic: partitions.keySet()) { + for (String topic : partitions.keySet()) { if (pattern.matcher(topic).matches() && !subscriptions.subscription().contains(topic)) topicsToSubscribe.add(topic); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java index 8acf9f27eb6e9..acc41c0d28af4 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java @@ -707,7 +707,7 @@ public void handle(JoinGroupResponse joinResponse, RequestFuture fut // for join-group request, even if the generation has changed we would not expect the instance id // gets fenced, and hence we always treat this as a fatal error log.error("JoinGroup failed: The group instance id {} has been fenced by another instance. " + - "Sent generation was {}", rebalanceConfig.groupInstanceId, sentGeneration); + "Sent generation was {}", rebalanceConfig.groupInstanceId, sentGeneration); future.raise(error); } else if (error == Errors.INCONSISTENT_GROUP_PROTOCOL || error == Errors.INVALID_SESSION_TIMEOUT @@ -733,7 +733,7 @@ public void handle(JoinGroupResponse joinResponse, RequestFuture fut // and send another join group request in next cycle. String memberId = joinResponse.data().memberId(); log.debug("JoinGroup failed due to non-fatal error: {}. Will set the member id as {} and then rejoin. " + - "Sent generation was {}", error, memberId, sentGeneration); + "Sent generation was {}", error, memberId, sentGeneration); synchronized (AbstractCoordinator.this) { AbstractCoordinator.this.generation = new Generation(OffsetCommitRequest.DEFAULT_GENERATION_ID, memberId, null); } @@ -873,7 +873,7 @@ public void handle(SyncGroupResponse syncResponse, future.raise(GroupAuthorizationException.forGroupId(rebalanceConfig.groupId)); } else if (error == Errors.REBALANCE_IN_PROGRESS) { log.info("SyncGroup failed: The group began another rebalance. Need to re-join the group. " + - "Sent generation was {}", sentGeneration); + "Sent generation was {}", sentGeneration); future.raise(error); } else if (error == Errors.FENCED_INSTANCE_ID) { // for sync-group request, even if the generation has changed we would not expect the instance id diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractMembershipManager.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractMembershipManager.java index 5782e138202b3..51fe9a729ddfc 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractMembershipManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractMembershipManager.java @@ -820,7 +820,7 @@ public void maybeReconcile(boolean canCommit) { } if (reconciliationInProgress) { log.trace("Ignoring reconciliation attempt. Another reconciliation is already in progress. " + - "Assignment {} will be handled in the next reconciliation loop.", currentTargetAssignment); + "Assignment {} will be handled in the next reconciliation loop.", currentTargetAssignment); return; } diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java index c38b5859f5f59..a27a9c56ed2dc 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java @@ -65,6 +65,7 @@ public abstract class AbstractStickyAssignor extends AbstractPartitionAssignor { static final class ConsumerGenerationPair { final String consumer; final int generation; + ConsumerGenerationPair(String consumer, int generation) { this.consumer = consumer; this.generation = generation; @@ -102,12 +103,12 @@ public Map> assignPartitions(Map(); assignmentBuilder = new ConstrainedAssignmentBuilder(partitionsPerTopic, rackInfo, consumerToOwnedPartitions, partitionsWithMultiplePreviousOwners); } else { log.debug("Detected that not all consumers were subscribed to same set of topics, falling back to the " - + "general case assignment algorithm"); + + "general case assignment algorithm"); // we must set this to null for the general case so the cooperative assignor knows to compute it from scratch partitionsTransferringOwnership = null; assignmentBuilder = new GeneralAssignmentBuilder(partitionsPerTopic, rackInfo, consumerToOwnedPartitions, subscriptions); @@ -338,7 +339,7 @@ private boolean isLinked(String src, String dst, Set pairs, List reducedSet = new HashSet<>(pairs); reducedSet.remove(pair); @@ -353,7 +354,7 @@ private boolean in(List cycle, Set> cycles) { List superCycle = new ArrayList<>(cycle); superCycle.remove(superCycle.size() - 1); superCycle.addAll(cycle); - for (List foundCycle: cycles) { + for (List foundCycle : cycles) { if (foundCycle.size() == cycle.size() && Collections.indexOfSubList(superCycle, foundCycle) != -1) return true; } @@ -362,7 +363,7 @@ private boolean in(List cycle, Set> cycles) { private boolean hasCycles(Set pairs) { Set> cycles = new HashSet<>(); - for (ConsumerPair pair: pairs) { + for (ConsumerPair pair : pairs) { Set reducedPairs = new HashSet<>(pairs); reducedPairs.remove(pair); List path = new ArrayList<>(Collections.singleton(pair.srcMemberId)); @@ -375,14 +376,14 @@ private boolean hasCycles(Set pairs) { // for now we want to make sure there is no partition movements of the same topic between a pair of consumers. // the odds of finding a cycle among more than two consumers seem to be very low (according to various randomized // tests with the given sticky algorithm) that it should not worth the added complexity of handling those cases. - for (List cycle: cycles) + for (List cycle : cycles) if (cycle.size() == 3) // indicates a cycle of length 2 return true; return false; } private boolean isSticky() { - for (Map.Entry>> topicMovements: this.partitionMovementsByTopic.entrySet()) { + for (Map.Entry>> topicMovements : this.partitionMovementsByTopic.entrySet()) { Set topicMovementPairs = topicMovements.getValue().keySet(); if (hasCycles(topicMovementPairs)) { log.error("Stickiness is violated for topic {}" @@ -439,7 +440,7 @@ public boolean equals(Object obj) { } private boolean in(Set pairs) { - for (ConsumerPair pair: pairs) + for (ConsumerPair pair : pairs) if (this.equals(pair)) return true; return false; @@ -986,8 +987,8 @@ private class GeneralAssignmentBuilder extends AbstractAssignmentBuilder { }); currentPartitionConsumer = new HashMap<>(); - for (Map.Entry> entry: currentAssignment.entrySet()) - for (TopicPartition topicPartition: entry.getValue()) + for (Map.Entry> entry : currentAssignment.entrySet()) + for (TopicPartition topicPartition : entry.getValue()) currentPartitionConsumer.put(topicPartition, entry.getKey()); List sortedAllTopics = new ArrayList<>(topic2AllPotentialConsumers.keySet()); @@ -1038,7 +1039,7 @@ private List assignOwnedPartitions() { Subscription consumerSubscription = subscriptions.get(consumer); if (consumerSubscription == null) { // if a consumer that existed before (and had some partition assignments) is now removed, remove it from currentAssignment - for (TopicPartition topicPartition: entry.getValue()) + for (TopicPartition topicPartition : entry.getValue()) currentPartitionConsumer.remove(topicPartition); it.remove(); } else { @@ -1118,7 +1119,7 @@ private void updatePrevAssignment(Map pr List partitions, String consumer, int generation) { - for (TopicPartition partition: partitions) { + for (TopicPartition partition : partitions) { if (prevAssignment.containsKey(partition)) { // only keep the latest previous assignment if (generation > prevAssignment.get(partition).generation) { @@ -1140,7 +1141,7 @@ private void prepopulateCurrentAssignments(Map subscriptionEntry: subscriptions.entrySet()) { + for (Map.Entry subscriptionEntry : subscriptions.entrySet()) { String consumer = subscriptionEntry.getKey(); Subscription subscription = subscriptionEntry.getValue(); if (subscription.userData() != null) { @@ -1177,9 +1178,9 @@ private boolean isBalanced() { // create a mapping from partitions to the consumer assigned to them final Map allPartitions = new HashMap<>(); Set>> assignments = currentAssignment.entrySet(); - for (Map.Entry> entry: assignments) { + for (Map.Entry> entry : assignments) { List topicPartitions = entry.getValue(); - for (TopicPartition topicPartition: topicPartitions) { + for (TopicPartition topicPartition : topicPartitions) { if (allPartitions.containsKey(topicPartition)) log.error("{} is assigned to more than one consumer.", topicPartition); allPartitions.put(topicPartition, entry.getKey()); @@ -1188,7 +1189,7 @@ private boolean isBalanced() { // for each consumer that does not have all the topic partitions it can get make sure none of the topic partitions it // could but did not get cannot be moved to it (because that would break the balance) - for (String consumer: sortedCurrentSubscriptions) { + for (String consumer : sortedCurrentSubscriptions) { List consumerPartitions = currentAssignment.get(consumer); int consumerPartitionCount = consumerPartitions.size(); @@ -1200,7 +1201,7 @@ private boolean isBalanced() { continue; // otherwise make sure it cannot get any more - for (String topic: allSubscribedTopics) { + for (String topic : allSubscribedTopics) { int partitionCount = partitionsPerTopic.get(topic).size(); for (int i = 0; i < partitionCount; i++) { TopicPartition topicPartition = new TopicPartition(topic, i); @@ -1244,7 +1245,7 @@ private int getBalanceScore(Map> assignment) { int score = 0; Map consumer2AssignmentSize = new HashMap<>(); - for (Entry> entry: assignment.entrySet()) + for (Entry> entry : assignment.entrySet()) consumer2AssignmentSize.put(entry.getKey(), entry.getValue().size()); Iterator> it = consumer2AssignmentSize.entrySet().iterator(); @@ -1252,7 +1253,7 @@ private int getBalanceScore(Map> assignment) { Entry entry = it.next(); int consumerAssignmentSize = entry.getValue(); it.remove(); - for (Entry otherEntry: consumer2AssignmentSize.entrySet()) + for (Entry otherEntry : consumer2AssignmentSize.entrySet()) score += Math.abs(consumerAssignmentSize - otherEntry.getValue()); } @@ -1263,7 +1264,7 @@ private int getBalanceScore(Map> assignment) { * The assignment should improve the overall balance of the partition assignments to consumers. */ private boolean maybeAssignPartition(TopicPartition partition, RackInfo rackInfo) { - for (String consumer: sortedCurrentSubscriptions) { + for (String consumer : sortedCurrentSubscriptions) { if (consumer2AllPotentialTopics.get(consumer).contains(partition.topic()) && (rackInfo == null || !rackInfo.racksMismatch(consumer, partition))) { sortedCurrentSubscriptions.remove(consumer); currentAssignment.get(consumer).add(partition); @@ -1313,7 +1314,7 @@ private boolean canConsumerParticipateInReassignment(String consumer) { // if a consumer is not assigned all its potential partitions it is subject to reassignment return true; - for (TopicPartition partition: currentPartitions) + for (TopicPartition partition : currentPartitions) // if any of the partitions assigned to a consumer is subject to reassignment the consumer itself // is subject to reassignment if (canTopicParticipateInReassignment(partition.topic())) @@ -1339,7 +1340,7 @@ private void balance(Map prevAssignment, // narrow down the reassignment scope to only those partitions that can actually be reassigned Set fixedPartitions = new HashSet<>(); - for (String topic: topic2AllPotentialConsumers.keySet()) + for (String topic : topic2AllPotentialConsumers.keySet()) if (!canTopicParticipateInReassignment(topic)) { for (int i = 0; i < partitionsPerTopic.get(topic).size(); i++) { fixedPartitions.add(new TopicPartition(topic, i)); @@ -1350,7 +1351,7 @@ private void balance(Map prevAssignment, // narrow down the reassignment scope to only those consumers that are subject to reassignment Map> fixedAssignments = new HashMap<>(); - for (String consumer: consumer2AllPotentialTopics.keySet()) + for (String consumer : consumer2AllPotentialTopics.keySet()) if (!canConsumerParticipateInReassignment(consumer)) { sortedCurrentSubscriptions.remove(consumer); fixedAssignments.put(consumer, currentAssignment.remove(consumer)); @@ -1376,7 +1377,7 @@ private void balance(Map prevAssignment, } // add the fixed assignments (those that could not change) back - for (Entry> entry: fixedAssignments.entrySet()) { + for (Entry> entry : fixedAssignments.entrySet()) { String consumer = entry.getKey(); currentAssignment.put(consumer, entry.getValue()); sortedCurrentSubscriptions.add(consumer); @@ -1454,7 +1455,7 @@ private boolean performReassignments(List reassignablePartitions private void reassignPartition(TopicPartition partition) { // find the new consumer String newConsumer = null; - for (String anotherConsumer: sortedCurrentSubscriptions) { + for (String anotherConsumer : sortedCurrentSubscriptions) { if (consumer2AllPotentialTopics.get(anotherConsumer).contains(partition.topic())) { newConsumer = anotherConsumer; break; @@ -1490,7 +1491,7 @@ private void processPartitionMovement(TopicPartition partition, String newConsum private void deepCopy(Map> source, Map> dest) { dest.clear(); - for (Entry> entry: source.entrySet()) + for (Entry> entry : source.entrySet()) dest.put(entry.getKey(), new ArrayList<>(entry.getValue())); } diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java index 1022bf6aab3b5..1f553b6497a9d 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java @@ -1731,7 +1731,7 @@ private void runRebalanceCallbacksOnClose() { } private void leaveGroupOnClose(final Timer timer, final CloseOptions.GroupMembershipOperation membershipOperation) { - if (groupMetadata.get().isEmpty() || applicationEventHandler == null) + if (groupMetadata.get().isEmpty() || applicationEventHandler == null) return; log.debug("Leaving the consumer group during consumer close"); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ClassicKafkaConsumer.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ClassicKafkaConsumer.java index 4851e54d8ac5f..b7d0e684d1164 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ClassicKafkaConsumer.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ClassicKafkaConsumer.java @@ -461,7 +461,7 @@ public void registerMetricForSubscription(KafkaMetric metric) { public void unregisterMetricFromSubscription(KafkaMetric metric) { if (!metrics().containsKey(metric.metricName())) { clientTelemetryReporter.ifPresent(reporter -> reporter.metricRemoval(metric)); - } else { + } else { log.debug("Skipping unregistration for metric {}. Existing consumer metrics cannot be removed.", metric.metricName()); } } @@ -980,7 +980,7 @@ public void pause(Collection partitions) { acquireAndEnsureOpen(); try { log.debug("Pausing partitions {}", partitions); - for (TopicPartition partition: partitions) { + for (TopicPartition partition : partitions) { subscriptions.pause(partition); } } finally { @@ -993,7 +993,7 @@ public void resume(Collection partitions) { acquireAndEnsureOpen(); try { log.debug("Resuming partitions {}", partitions); - for (TopicPartition partition: partitions) { + for (TopicPartition partition : partitions) { subscriptions.resume(partition); } } finally { diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java index 9e999c72a65a1..0528ec1899779 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java @@ -1588,10 +1588,10 @@ public void handle(OffsetFetchResponse response, RequestFuture coordinator() { return Optional.ofNullable(this.coordinator); } - + public Optional getAndClearFatalError() { Optional fatalError = this.fatalError; this.fatalError = Optional.empty(); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetch.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetch.java index 9c9f34ddf0181..960b2d0fe4afc 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetch.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetch.java @@ -71,6 +71,7 @@ private Fetch( this.nextOffsetAndMetadata = new HashMap<>(); this.nextOffsetAndMetadata.put(partition, offsetAndMetadata); } + /** * Add another {@link Fetch} to this one; all of its records will be added to this fetch's * {@link #records() records}, and if the other fetch diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/FetchMetricsAggregator.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/FetchMetricsAggregator.java index 4fe8199734dfa..16595b227113a 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/FetchMetricsAggregator.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/FetchMetricsAggregator.java @@ -72,7 +72,7 @@ private void maybeRecordMetrics(TopicPartition partition) { metricsManager.recordRecordsFetched(fetchFetchMetrics.records); // Also record the metrics aggregated on a per-topic basis. - for (Map.Entry entry: perTopicFetchMetrics.entrySet()) { + for (Map.Entry entry : perTopicFetchMetrics.entrySet()) { String topic = entry.getKey(); FetchMetrics fetchMetrics = entry.getValue(); metricsManager.recordBytesFetched(topic, fetchMetrics.bytes); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Heartbeat.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Heartbeat.java index 0700a531ce0a3..922e18a2052b2 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Heartbeat.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Heartbeat.java @@ -106,7 +106,7 @@ boolean shouldHeartbeat(long now) { update(now); return heartbeatTimer.isExpired(); } - + long lastHeartbeatSend() { return this.lastHeartbeatSend; } diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/NetworkClientDelegate.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/NetworkClientDelegate.java index 42c1c73acb565..048620b360b1a 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/NetworkClientDelegate.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/NetworkClientDelegate.java @@ -265,7 +265,7 @@ private ClientRequest makeClientRequest( unsent.handler ); } - + public Optional getAndClearMetadataError() { Optional metadataError = this.metadataError; this.metadataError = Optional.empty(); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/OffsetsRequestManager.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/OffsetsRequestManager.java index 4574bef944256..e71317da64a23 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/OffsetsRequestManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/OffsetsRequestManager.java @@ -381,11 +381,11 @@ private CompletableFuture initWithCommittedOffsetsIfNeeded(Set> fetchOffsetsAndRefresh = fetchOffsets.thenApply(CommitRequestManager.OffsetFetchResult::toOffsetMapWithNulls) - .whenComplete((offsets, error) -> { - pendingOffsetFetchEvent = null; - // Update positions with the retrieved offsets - refreshOffsets(offsets, error, result); - }); + .whenComplete((offsets, error) -> { + pendingOffsetFetchEvent = null; + // Update positions with the retrieved offsets + refreshOffsets(offsets, error, result); + }); pendingOffsetFetchEvent = new PendingFetchCommittedRequest(initializingPartitions, fetchOffsetsAndRefresh); } else { // Reuse pending OffsetFetch request that will complete when positions are refreshed with the committed offsets retrieved diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareHeartbeatRequestManager.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareHeartbeatRequestManager.java index f46b6f72c87e1..1f1e2a239f7ba 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareHeartbeatRequestManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareHeartbeatRequestManager.java @@ -116,7 +116,7 @@ public boolean handleSpecificExceptionInResponse(final ShareGroupHeartbeatRespon // custom message for it. Note that the case where the protocol is not supported at all should fail // on the client side when building the request and checking supporting APIs (handled on onFailure). case UNSUPPORTED_VERSION: - logger.error("{} failed due to unsupported version: {}", + logger.error("{} failed due to unsupported version: {}", heartbeatRequestName(), SHARE_PROTOCOL_NOT_SUPPORTED_MSG); handleFatalFailure(error.exception(SHARE_PROTOCOL_NOT_SUPPORTED_MSG)); errorHandled = true; diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManager.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManager.java index d4f1b3dace86a..3bb839fac5e9b 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManager.java @@ -586,7 +586,7 @@ private void onErrorResponse(final StreamsGroupHeartbeatResponse response, final case COORDINATOR_LOAD_IN_PROGRESS: logInfo( String.format("StreamsGroupHeartbeatRequest failed because the group coordinator %s is still loading. " + - "Will retry", coordinatorRequestManager.coordinator()), + "Will retry", coordinatorRequestManager.coordinator()), response, currentTimeMs ); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsMembershipManager.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsMembershipManager.java index 8222908f8f38f..307cce01c10a6 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsMembershipManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsMembershipManager.java @@ -710,7 +710,7 @@ public void onHeartbeatSuccess(StreamsGroupHeartbeatResponse response) { maybeCompleteLeaveInProgress(); return; } - + updateMemberEpoch(responseData.memberEpoch()); final List activeTasks = responseData.activeTasks(); diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsRebalanceData.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsRebalanceData.java index 383900355dd68..70289238da4ab 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsRebalanceData.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/StreamsRebalanceData.java @@ -138,6 +138,7 @@ public List activePartitions() { public List standbyPartitions() { return new ArrayList<>(standbyPartitions); } + @Override public String toString() { return "EndpointPartitions {" diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/SubscriptionState.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/SubscriptionState.java index 820b99235e8a2..412440d3ad11f 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/SubscriptionState.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/SubscriptionState.java @@ -580,7 +580,7 @@ public synchronized Optional maybeCompleteValidation(TopicPartiti "no longer matches the position {} when the request was sent", tp, currentPosition, requestPosition); } else if (epochEndOffset.endOffset() == UNDEFINED_EPOCH_OFFSET || - epochEndOffset.leaderEpoch() == UNDEFINED_EPOCH) { + epochEndOffset.leaderEpoch() == UNDEFINED_EPOCH) { if (hasDefaultOffsetResetPolicy()) { log.info("Truncation detected for partition {} at offset {}, resetting offset", tp, currentPosition); @@ -903,7 +903,7 @@ public synchronized Map partitionsNeedingValidati } public synchronized boolean hasPartitionsNeedingValidation(long nowMs) { - for (TopicPartitionState tps : assignment.partitionStateValues()) { + for (TopicPartitionState tps : assignment.partitionStateValues()) { if (tps.awaitingValidation() && !tps.awaitingRetryBackoff(nowMs) && tps.position != null) { return true; } @@ -973,7 +973,7 @@ public synchronized Set assignedTopicIds() { * Set the set of topic IDs that have been assigned to the consumer by the coordinator. * This is used for topic IDs received in an assignment when using the new consumer rebalance protocol (KIP-848). */ - public synchronized void setAssignedTopicIds(Set assignedTopicIds) { + public synchronized void setAssignedTopicIds(Set assignedTopicIds) { this.assignedTopicIds = assignedTopicIds; } @@ -1024,7 +1024,7 @@ private static class TopicPartitionState { private Integer preferredReadReplica; private Long preferredReadReplicaExpireTimeMs; private boolean endOffsetRequested; - + TopicPartitionState() { this.paused = false; this.pendingRevocation = false; diff --git a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/TopicSubscriptionChangeEvent.java b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/TopicSubscriptionChangeEvent.java index c8b9bbfac5ae8..a8215a0d28682 100644 --- a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/TopicSubscriptionChangeEvent.java +++ b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/TopicSubscriptionChangeEvent.java @@ -28,6 +28,7 @@ */ public class TopicSubscriptionChangeEvent extends SubscriptionChangeEvent { private final Set topics; + public TopicSubscriptionChangeEvent(final Set topics, final Optional listener, final long deadlineMs) { super(Type.TOPIC_SUBSCRIPTION_CHANGE, listener, deadlineMs); this.topics = topics; 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 dd4ac00660d15..64f616f47b73a 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 @@ -259,7 +259,7 @@ public class KafkaProducer implements Producer { "CommitTransaction timed out - did not complete EndTxn with the transaction coordinator within max.block.ms"; private static final String ABORT_TXN_TIMEOUT_MSG = "AbortTransaction timed out - did not complete EndTxn(abort) with the transaction coordinator within max.block.ms"; - + private final String clientId; // Visible for testing final Metrics metrics; @@ -615,7 +615,7 @@ private TransactionManager configureTransactionState(ProducerConfig config, final boolean enable2PC = config.getBoolean(ProducerConfig.TRANSACTION_TWO_PHASE_COMMIT_ENABLE_CONFIG); final int transactionTimeoutMs = config.getInt(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG); final long retryBackoffMs = config.getLong(ProducerConfig.RETRY_BACKOFF_MS_CONFIG); - + transactionManager = new TransactionManager( logContext, transactionalId, @@ -917,16 +917,16 @@ public void abortTransaction() throws ProducerFencedException { public void completeTransaction(PreparedTxnState preparedTxnState) throws ProducerFencedException { throwIfNoTransactionManager(); throwIfProducerClosed(); - + if (!transactionManager.isPrepared()) { throw new InvalidTxnStateException("Cannot complete transaction because no transaction has been prepared. " + "Call prepareTransaction() first, or make sure initTransaction(true) was called."); } - + // Get the current prepared transaction state ProducerIdAndEpoch currentProducerIdAndEpoch = transactionManager.preparedTransactionState(); PreparedTxnState currentPreparedState = new PreparedTxnState(currentProducerIdAndEpoch.producerId, currentProducerIdAndEpoch.epoch); - + // Compare the prepared transaction state token and commit or abort accordingly if (currentPreparedState.equals(preparedTxnState)) { commitTransaction(); @@ -1277,6 +1277,7 @@ private String getErrorMessage(Integer partitionsCount, String topic, Integer pa String.format("Partition %d of topic %s with partition count %d is not present in metadata after %d ms.", partition, topic, partitionsCount, maxWaitMs); } + /** * Validate that the record size isn't too large */ @@ -1414,7 +1415,7 @@ public List partitionsFor(String topic) { public void registerMetricForSubscription(KafkaMetric metric) { if (!metrics().containsKey(metric.metricName())) { clientTelemetryReporter.ifPresent(reporter -> reporter.metricChange(metric)); - } else { + } else { log.debug("Skipping registration for metric {}. Existing producer metrics cannot be overwritten.", metric.metricName()); } } @@ -1637,6 +1638,7 @@ String getClientId() { private static class ClusterAndWaitTime { final Cluster cluster; final long waitedOnMetadataMs; + ClusterAndWaitTime(Cluster cluster, long waitedOnMetadataMs) { this.cluster = cluster; this.waitedOnMetadataMs = waitedOnMetadataMs; 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 eb89f88f7d913..30d3552f812ef 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 @@ -215,7 +215,7 @@ public PreparedTxnState prepareTransaction() throws ProducerFencedException { verifyNotFenced(); verifyTransactionsInitialized(); verifyTransactionInFlight(); - + // Return a new PreparedTxnState with mock values for producerId and epoch // Using 1000L and (short)1 as arbitrary values for a valid PreparedTxnState return new PreparedTxnState(1000L, (short) 1); @@ -271,7 +271,7 @@ public void completeTransaction(PreparedTxnState preparedTxnState) throws Produc verifyNotClosed(); verifyNotFenced(); verifyTransactionsInitialized(); - + if (!this.transactionInFlight) { throw new IllegalStateException("There is no prepared transaction to complete."); } @@ -279,7 +279,7 @@ public void completeTransaction(PreparedTxnState preparedTxnState) throws Produc // For testing purposes, we'll consider a prepared state with producerId=1000L and epoch=1 as valid // This should match what's returned in prepareTransaction() PreparedTxnState currentState = new PreparedTxnState(1000L, (short) 1); - + if (currentState.equals(preparedTxnState)) { commitTransaction(); } else { diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java b/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java index 3e43f27ea2b87..6c264dbc6ab90 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java @@ -109,7 +109,7 @@ public ProducerRecord(String topic, Integer partition, Long timestamp, K key, V public ProducerRecord(String topic, Integer partition, K key, V value, Iterable

headers) { this(topic, partition, null, key, value, headers); } - + /** * Creates a record to be sent to a specified topic and partition * @@ -121,7 +121,7 @@ public ProducerRecord(String topic, Integer partition, K key, V value, Iterable< public ProducerRecord(String topic, Integer partition, K key, V value) { this(topic, partition, null, key, value, null); } - + /** * Create a record to be sent to Kafka * @@ -132,7 +132,7 @@ public ProducerRecord(String topic, Integer partition, K key, V value) { public ProducerRecord(String topic, K key, V value) { this(topic, null, null, key, value, null); } - + /** * Create a record with no key * diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/internals/ErrorLoggingCallback.java b/clients/src/main/java/org/apache/kafka/clients/producer/internals/ErrorLoggingCallback.java index 9ed09af3c78af..522e31d9c001c 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/internals/ErrorLoggingCallback.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/internals/ErrorLoggingCallback.java @@ -31,6 +31,7 @@ public class ErrorLoggingCallback implements Callback { private final int valueLength; private final boolean logAsString; private byte[] value; + public ErrorLoggingCallback(String topic, byte[] key, byte[] value, boolean logAsString) { this.topic = topic; this.key = key; diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/internals/RecordAccumulator.java b/clients/src/main/java/org/apache/kafka/clients/producer/internals/RecordAccumulator.java index 5bf497a413fe4..c9082892d00d2 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/internals/RecordAccumulator.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/internals/RecordAccumulator.java @@ -454,7 +454,7 @@ public void resetNextBatchExpiryTime() { } public void maybeUpdateNextBatchExpiryTime(ProducerBatch batch) { - if (batch.createdMs + deliveryTimeoutMs > 0) { + if (batch.createdMs + deliveryTimeoutMs > 0) { // the non-negative check is to guard us against potential overflow due to setting // a large value for deliveryTimeoutMs nextBatchExpiryTimeMs = Math.min(nextBatchExpiryTimeMs, batch.createdMs + deliveryTimeoutMs); diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/internals/SenderMetricsRegistry.java b/clients/src/main/java/org/apache/kafka/clients/producer/internals/SenderMetricsRegistry.java index f381e6948ddc0..d5fb94e2437cc 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/internals/SenderMetricsRegistry.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/internals/SenderMetricsRegistry.java @@ -40,7 +40,7 @@ public class SenderMetricsRegistry { public final MetricName recordQueueTimeAvg; public final MetricName recordQueueTimeMax; public final MetricName requestLatencyAvg; - public final MetricName requestLatencyMax; + public final MetricName requestLatencyMax; public final MetricName produceThrottleTimeAvg; public final MetricName produceThrottleTimeMax; public final MetricName recordSendRate; @@ -66,7 +66,7 @@ public class SenderMetricsRegistry { private final MetricNameTemplate topicRecordRetryTotal; private final MetricNameTemplate topicRecordErrorRate; private final MetricNameTemplate topicRecordErrorTotal; - + private final Metrics metrics; private final Set tags; private final LinkedHashSet topicTags; @@ -75,7 +75,7 @@ public SenderMetricsRegistry(Metrics metrics) { this.metrics = metrics; this.tags = this.metrics.config().tags().keySet(); this.allTemplates = new ArrayList<>(); - + /* Client level */ this.batchSizeAvg = createMetricName("batch-size-avg", @@ -89,35 +89,35 @@ public SenderMetricsRegistry(Metrics metrics) { "The average time in ms record batches spent in the send buffer."); this.recordQueueTimeMax = createMetricName("record-queue-time-max", "The maximum time in ms record batches spent in the send buffer."); - this.requestLatencyAvg = createMetricName("request-latency-avg", + this.requestLatencyAvg = createMetricName("request-latency-avg", "The average request latency in ms"); - this.requestLatencyMax = createMetricName("request-latency-max", + this.requestLatencyMax = createMetricName("request-latency-max", "The maximum request latency in ms"); - this.recordSendRate = createMetricName("record-send-rate", + this.recordSendRate = createMetricName("record-send-rate", "The average number of records sent per second."); - this.recordSendTotal = createMetricName("record-send-total", + this.recordSendTotal = createMetricName("record-send-total", "The total number of records sent."); this.recordsPerRequestAvg = createMetricName("records-per-request-avg", "The average number of records per request."); this.recordRetryRate = createMetricName("record-retry-rate", "The average per-second number of retried record sends"); - this.recordRetryTotal = createMetricName("record-retry-total", + this.recordRetryTotal = createMetricName("record-retry-total", "The total number of retried record sends"); this.recordErrorRate = createMetricName("record-error-rate", "The average per-second number of record sends that resulted in errors"); this.recordErrorTotal = createMetricName("record-error-total", "The total number of record sends that resulted in errors"); - this.recordSizeMax = createMetricName("record-size-max", + this.recordSizeMax = createMetricName("record-size-max", "The maximum record size"); - this.recordSizeAvg = createMetricName("record-size-avg", + this.recordSizeAvg = createMetricName("record-size-avg", "The average record size"); this.requestsInFlight = createMetricName("requests-in-flight", "The current number of in-flight requests awaiting a response."); this.metadataAge = createMetricName("metadata-age", "The age in seconds of the current producer metadata being used."); - this.batchSplitRate = createMetricName("batch-split-rate", + this.batchSplitRate = createMetricName("batch-split-rate", "The average number of batch splits per second"); - this.batchSplitTotal = createMetricName("batch-split-total", + this.batchSplitTotal = createMetricName("batch-split-total", "The total number of batch splits"); this.produceThrottleTimeAvg = createMetricName("produce-throttle-time-avg", @@ -136,7 +136,7 @@ public SenderMetricsRegistry(Metrics metrics) { "The total number of records sent for a topic."); this.topicByteRate = createTopicTemplate("byte-rate", "The average number of bytes sent per second for a topic."); - this.topicByteTotal = createTopicTemplate("byte-total", + this.topicByteTotal = createTopicTemplate("byte-total", "The total number of bytes sent for a topic."); this.topicCompressionRate = createTopicTemplate("compression-rate", "The average compression rate of record batches for a topic, defined as the average ratio " + diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java b/clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java index 64ee1cd79f6a9..c418fc9275d8c 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java @@ -205,13 +205,13 @@ private enum Priority { this.priority = priority; } } - + private enum TransactionOperation { SEND("send"), BEGIN_TRANSACTION("beginTransaction"), PREPARE_TRANSACTION("prepareTransaction"), SEND_OFFSETS_TO_TRANSACTION("sendOffsetsToTransaction"); - + final String displayName; TransactionOperation(String displayName) { @@ -868,7 +868,7 @@ synchronized void markSequenceUnresolved(ProducerBatch batch) { // Attempts to resolve unresolved sequences. If all in-flight requests are complete and some partitions are still // unresolved, either bump the epoch if possible, or transition to a fatal error synchronized void maybeResolveSequences() { - for (Iterator iter = partitionsWithUnresolvedSequences.keySet().iterator(); iter.hasNext(); ) { + for (Iterator iter = partitionsWithUnresolvedSequences.keySet().iterator(); iter.hasNext();) { TopicPartition topicPartition = iter.next(); if (!hasInflightBatches(topicPartition)) { // The partition has been fully drained. At this point, the last ack'd sequence should be one less than @@ -1137,7 +1137,7 @@ private void transitionTo(State target) { private void transitionTo(State target, RuntimeException error) { if (!currentState.isTransitionValid(currentState, target)) { - String idString = transactionalId == null ? "" : "TransactionalId " + transactionalId + ": "; + String idString = transactionalId == null ? "" : "TransactionalId " + transactionalId + ": "; String message = idString + "Invalid transition attempted from state " + currentState.name() + " to state " + target.name(); diff --git a/clients/src/main/java/org/apache/kafka/common/acl/AccessControlEntryData.java b/clients/src/main/java/org/apache/kafka/common/acl/AccessControlEntryData.java index ad7660d435517..57d4b2ca30fc5 100644 --- a/clients/src/main/java/org/apache/kafka/common/acl/AccessControlEntryData.java +++ b/clients/src/main/java/org/apache/kafka/common/acl/AccessControlEntryData.java @@ -75,9 +75,9 @@ public String findIndefiniteField() { @Override public String toString() { return "(principal=" + (principal == null ? "" : principal) + - ", host=" + (host == null ? "" : host) + - ", operation=" + operation + - ", permissionType=" + permissionType + ")"; + ", host=" + (host == null ? "" : host) + + ", operation=" + operation + + ", permissionType=" + permissionType + ")"; } /** diff --git a/clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java b/clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java index 39d015ec82cd0..253101a784255 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java +++ b/clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java @@ -65,7 +65,7 @@ public class AbstractConfig { public static final String AUTOMATIC_CONFIG_PROVIDERS_PROPERTY = "org.apache.kafka.automatic.config.providers"; public static final String CONFIG_PROVIDERS_CONFIG = "config.providers"; - public static final String CONFIG_PROVIDERS_DOC = + public static final String CONFIG_PROVIDERS_DOC = "Comma-separated alias names for classes implementing the ConfigProvider interface. " + "This enables loading configuration data (such as passwords, API keys, and other credentials) from external " + "sources. For example, see Configuration Providers."; diff --git a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java index efe7f0a1ecc1b..e88446e471813 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java +++ b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java @@ -565,12 +565,12 @@ public List validate(Map props) { public Map validateAll(Map props) { Map configValues = new HashMap<>(); - for (String name: configKeys.keySet()) { + for (String name : configKeys.keySet()) { configValues.put(name, new ConfigValue(name)); } List undefinedConfigKeys = undefinedDependentConfigs(); - for (String undefinedConfigKey: undefinedConfigKeys) { + for (String undefinedConfigKey : undefinedConfigKeys) { ConfigValue undefinedConfigValue = new ConfigValue(undefinedConfigKey); undefinedConfigValue.addErrorMessage(undefinedConfigKey + " is referred in the dependents, but not defined."); undefinedConfigValue.visible(false); @@ -585,7 +585,7 @@ public Map validateAll(Map props) { Map parseForValidate(Map props, Map configValues) { Map parsed = new HashMap<>(); Set configsWithNoParent = getConfigsWithNoParent(); - for (String name: configsWithNoParent) { + for (String name : configsWithNoParent) { parseForValidate(name, props, parsed, configValues); } return parsed; @@ -594,7 +594,7 @@ Map parseForValidate(Map props, Map validate(Map parsed, Map configValues) { Set configsWithNoParent = getConfigsWithNoParent(); - for (String name: configsWithNoParent) { + for (String name : configsWithNoParent) { validate(name, parsed, configValues); } return configValues; @@ -603,7 +603,7 @@ private Map validate(Map parsed, Map undefinedDependentConfigs() { Set undefinedConfigKeys = new HashSet<>(); for (ConfigKey configKey : configKeys.values()) { - for (String dependent: configKey.dependents) { + for (String dependent : configKey.dependents) { if (!configKeys.containsKey(dependent)) { undefinedConfigKeys.add(dependent); } @@ -619,7 +619,7 @@ Set getConfigsWithNoParent() { } Set configsWithParent = new HashSet<>(); - for (ConfigKey configKey: configKeys.values()) { + for (ConfigKey configKey : configKeys.values()) { List dependents = configKey.dependents; configsWithParent.addAll(dependents); } @@ -659,7 +659,7 @@ private void parseForValidate(String name, Map props, Map parsed, Map convertToStringMapWithPasswordValues(Map configs) { + public static Map convertToStringMapWithPasswordValues(Map configs) { Map result = new HashMap<>(); for (Map.Entry entry : configs.entrySet()) { Object value = entry.getValue(); @@ -1201,7 +1201,7 @@ public static CompositeValidator of(Validator... validators) { @Override public void ensureValid(String name, Object value) { - for (Validator validator: validators) { + for (Validator validator : validators) { validator.ensureValid(name, value); } } @@ -1210,7 +1210,7 @@ public void ensureValid(String name, Object value) { public String toString() { if (validators == null) return ""; StringBuilder desc = new StringBuilder(); - for (Validator v: validators) { + for (Validator v : validators) { if (desc.length() > 0) { desc.append(',').append(' '); } @@ -1594,7 +1594,7 @@ private void getConfigKeyRst(ConfigKey key, StringBuilder b) { private List sortedConfigs() { final Map groupOrd = new HashMap<>(groups.size()); int ord = 0; - for (String group: groups) { + for (String group : groups) { groupOrd.put(group, ord++); } diff --git a/clients/src/main/java/org/apache/kafka/common/config/SaslConfigs.java b/clients/src/main/java/org/apache/kafka/common/config/SaslConfigs.java index 01f7ad1f92718..27c3d2c7d8d95 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/SaslConfigs.java +++ b/clients/src/main/java/org/apache/kafka/common/config/SaslConfigs.java @@ -276,7 +276,7 @@ public class SaslConfigs { + " sasl.oauthbearer.assertion.* configurations are ignored.

"; public static final String SASL_OAUTHBEARER_ASSERTION_PRIVATE_KEY_FILE = "sasl.oauthbearer.assertion.private.key.file"; - public static final String SASL_OAUTHBEARER_ASSERTION_PRIVATE_KEY_FILE_DOC = "

File that contains a private key in the standard PEM format which is used to" + public static final String SASL_OAUTHBEARER_ASSERTION_PRIVATE_KEY_FILE_DOC = "

File that contains a private key in the standard PEM format which is used to" + " sign the JWT assertion sent to the identity provider.

" + "

The underlying implementation caches the file contents to avoid the performance hit of loading the file on each access. The caching mechanism will detect when" + " the file changes to allow for the file to be reloaded on modifications. This allows for "live" private key rotation without restarting the Kafka client.

" @@ -366,6 +366,7 @@ public class SaslConfigs { public static final boolean DEFAULT_SASL_OAUTHBEARER_HEADER_URLENCODE = false; public static final String SASL_OAUTHBEARER_HEADER_URLENCODE_DOC = "The (optional) setting to enable the OAuth client to URL-encode the client_id and client_secret in the authorization header" + " in accordance with RFC6749, see here for more details. The default value is set to 'false' for backward compatibility"; + public static void addClientSaslSupport(ConfigDef config) { config.define(SaslConfigs.SASL_KERBEROS_SERVICE_NAME, ConfigDef.Type.STRING, null, ConfigDef.Importance.MEDIUM, SaslConfigs.SASL_KERBEROS_SERVICE_NAME_DOC) .define(SaslConfigs.SASL_KERBEROS_KINIT_CMD, ConfigDef.Type.STRING, SaslConfigs.DEFAULT_KERBEROS_KINIT_CMD, ConfigDef.Importance.LOW, SaslConfigs.SASL_KERBEROS_KINIT_CMD_DOC) diff --git a/clients/src/main/java/org/apache/kafka/common/config/SslConfigs.java b/clients/src/main/java/org/apache/kafka/common/config/SslConfigs.java index 7675f75a9ab71..9f4c78256ccd6 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/SslConfigs.java +++ b/clients/src/main/java/org/apache/kafka/common/config/SslConfigs.java @@ -50,8 +50,8 @@ public class SslConfigs { public static final String SSL_ENABLED_PROTOCOLS_DOC = "The list of protocols enabled for SSL connections. " + "The default is 'TLSv1.2,TLSv1.3'. This means that clients and servers will prefer TLSv1.3 if both support it " + "and fallback to TLSv1.2 otherwise (assuming both support at least TLSv1.2). This default should be fine for most use " - + "cases. If this configuration is set to an empty list, Kafka will use the protocols enabled by default in the underlying SSLEngine, " - + "which may include additional protocols depending on the JVM version. " + + "cases. If this configuration is set to an empty list, Kafka will use the protocols enabled by default in the underlying SSLEngine, " + + "which may include additional protocols depending on the JVM version. " + "Also see the config documentation for ssl.protocol to understand how it can impact the TLS version negotiation behavior."; public static final String DEFAULT_SSL_ENABLED_PROTOCOLS = "TLSv1.2,TLSv1.3"; @@ -129,12 +129,12 @@ public static void addClientSslSupport(ConfigDef config) { .define(SslConfigs.SSL_CIPHER_SUITES_CONFIG, ConfigDef.Type.LIST, List.of(), ConfigDef.ValidList.anyNonDuplicateValues(true, false), ConfigDef.Importance.LOW, SslConfigs.SSL_CIPHER_SUITES_DOC) .define(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, ConfigDef.Type.LIST, SslConfigs.DEFAULT_SSL_ENABLED_PROTOCOLS, ConfigDef.ValidList.anyNonDuplicateValues(true, false), ConfigDef.Importance.MEDIUM, SslConfigs.SSL_ENABLED_PROTOCOLS_DOC) .define(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, ConfigDef.Type.STRING, SslConfigs.DEFAULT_SSL_KEYSTORE_TYPE, ConfigDef.Importance.MEDIUM, SslConfigs.SSL_KEYSTORE_TYPE_DOC) - .define(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, ConfigDef.Type.STRING, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_LOCATION_DOC) + .define(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, ConfigDef.Type.STRING, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_LOCATION_DOC) .define(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_PASSWORD_DOC) .define(SslConfigs.SSL_KEY_PASSWORD_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEY_PASSWORD_DOC) - .define(SslConfigs.SSL_KEYSTORE_KEY_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_KEY_DOC) - .define(SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_DOC) - .define(SslConfigs.SSL_TRUSTSTORE_CERTIFICATES_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_TRUSTSTORE_CERTIFICATES_DOC) + .define(SslConfigs.SSL_KEYSTORE_KEY_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_KEY_DOC) + .define(SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_DOC) + .define(SslConfigs.SSL_TRUSTSTORE_CERTIFICATES_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_TRUSTSTORE_CERTIFICATES_DOC) .define(SslConfigs.SSL_TRUSTSTORE_TYPE_CONFIG, ConfigDef.Type.STRING, SslConfigs.DEFAULT_SSL_TRUSTSTORE_TYPE, ConfigDef.Importance.MEDIUM, SslConfigs.SSL_TRUSTSTORE_TYPE_DOC) .define(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, ConfigDef.Type.STRING, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_TRUSTSTORE_LOCATION_DOC) .define(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, ConfigDef.Type.PASSWORD, null, ConfigDef.Importance.HIGH, SslConfigs.SSL_TRUSTSTORE_PASSWORD_DOC) diff --git a/clients/src/main/java/org/apache/kafka/common/config/TopicConfig.java b/clients/src/main/java/org/apache/kafka/common/config/TopicConfig.java index 7f873b25bc152..daf0025fe5940 100755 --- a/clients/src/main/java/org/apache/kafka/common/config/TopicConfig.java +++ b/clients/src/main/java/org/apache/kafka/common/config/TopicConfig.java @@ -169,7 +169,7 @@ public class TopicConfig { "not in the ISR set to be elected as leader as a last resort, even though doing so may result in data " + "loss.

Note: In KRaft mode, when enabling this config dynamically, it needs to wait for the unclean leader election" + "thread to trigger election periodically (default is 5 minutes). Please run kafka-leader-election.sh with unclean option " + - "to trigger the unclean leader election immediately if needed.

"; + "to trigger the unclean leader election immediately if needed.

"; public static final String MIN_IN_SYNC_REPLICAS_CONFIG = "min.insync.replicas"; public static final String MIN_IN_SYNC_REPLICAS_DOC = "Specifies the minimum number of in-sync replicas (including the leader) " + diff --git a/clients/src/main/java/org/apache/kafka/common/config/internals/BrokerSecurityConfigs.java b/clients/src/main/java/org/apache/kafka/common/config/internals/BrokerSecurityConfigs.java index ad714803e04fc..71ed9f8e64cb7 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/internals/BrokerSecurityConfigs.java +++ b/clients/src/main/java/org/apache/kafka/common/config/internals/BrokerSecurityConfigs.java @@ -139,7 +139,7 @@ public class BrokerSecurityConfigs { public static final String ALLOWED_SASL_OAUTHBEARER_FILES_CONFIG = "org.apache.kafka.sasl.oauthbearer.allowed.files"; public static final String ALLOWED_SASL_OAUTHBEARER_FILES_DEFAULT = ""; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() // General Security Configuration .define(BrokerSecurityConfigs.CONNECTIONS_MAX_REAUTH_MS_CONFIG, LONG, BrokerSecurityConfigs.DEFAULT_CONNECTIONS_MAX_REAUTH_MS, MEDIUM, BrokerSecurityConfigs.CONNECTIONS_MAX_REAUTH_MS_DOC) .define(BrokerSecurityConfigs.SASL_SERVER_MAX_RECEIVE_SIZE_CONFIG, INT, BrokerSecurityConfigs.DEFAULT_SASL_SERVER_MAX_RECEIVE_SIZE, MEDIUM, BrokerSecurityConfigs.SASL_SERVER_MAX_RECEIVE_SIZE_DOC) diff --git a/clients/src/main/java/org/apache/kafka/common/errors/InterruptException.java b/clients/src/main/java/org/apache/kafka/common/errors/InterruptException.java index fec66bb0ec821..c5924569593e2 100644 --- a/clients/src/main/java/org/apache/kafka/common/errors/InterruptException.java +++ b/clients/src/main/java/org/apache/kafka/common/errors/InterruptException.java @@ -24,12 +24,12 @@ public class InterruptException extends KafkaException { private static final long serialVersionUID = 1L; - + public InterruptException(InterruptedException cause) { super(cause); Thread.currentThread().interrupt(); } - + public InterruptException(String message, InterruptedException cause) { super(message, cause); Thread.currentThread().interrupt(); diff --git a/clients/src/main/java/org/apache/kafka/common/errors/TopicDeletionDisabledException.java b/clients/src/main/java/org/apache/kafka/common/errors/TopicDeletionDisabledException.java index 41577d2a288e7..20e7a564662b2 100644 --- a/clients/src/main/java/org/apache/kafka/common/errors/TopicDeletionDisabledException.java +++ b/clients/src/main/java/org/apache/kafka/common/errors/TopicDeletionDisabledException.java @@ -17,7 +17,7 @@ package org.apache.kafka.common.errors; -public class TopicDeletionDisabledException extends ApiException { +public class TopicDeletionDisabledException extends ApiException { private static final long serialVersionUID = 1L; public TopicDeletionDisabledException() { diff --git a/clients/src/main/java/org/apache/kafka/common/header/Headers.java b/clients/src/main/java/org/apache/kafka/common/header/Headers.java index 9cce54a5c5cc5..e056b159924ed 100644 --- a/clients/src/main/java/org/apache/kafka/common/header/Headers.java +++ b/clients/src/main/java/org/apache/kafka/common/header/Headers.java @@ -23,7 +23,7 @@ * The order of headers is preserved in the order they were added. */ public interface Headers extends Iterable
{ - + /** * Adds a header (key inside), to the end, returning if the operation succeeded. * diff --git a/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeader.java b/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeader.java index 3eee4d27da50a..4955ae7e74aba 100644 --- a/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeader.java +++ b/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeader.java @@ -39,7 +39,7 @@ public RecordHeader(ByteBuffer keyBuffer, ByteBuffer valueBuffer) { this.keyBuffer = Objects.requireNonNull(keyBuffer, "Null header keys are not permitted"); this.valueBuffer = valueBuffer; } - + public String key() { if (key == null) { synchronized (this) { diff --git a/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeaders.java b/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeaders.java index 543a23ceea3bf..e22772a31d15f 100644 --- a/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeaders.java +++ b/clients/src/main/java/org/apache/kafka/common/header/internals/RecordHeaders.java @@ -113,7 +113,7 @@ public boolean isReadOnly() { } public Header[] toArray() { - return headers.isEmpty() ? Record.EMPTY_HEADERS : headers.toArray(new Header[0]); + return headers.isEmpty() ? Record.EMPTY_HEADERS : headers.toArray(new Header[0]); } private void checkKey(String key) { diff --git a/clients/src/main/java/org/apache/kafka/common/internals/KafkaFutureImpl.java b/clients/src/main/java/org/apache/kafka/common/internals/KafkaFutureImpl.java index 803ec9eeeef45..8759f9254ea4a 100644 --- a/clients/src/main/java/org/apache/kafka/common/internals/KafkaFutureImpl.java +++ b/clients/src/main/java/org/apache/kafka/common/internals/KafkaFutureImpl.java @@ -258,7 +258,7 @@ public String toString() { // see https://bugs.openjdk.org/browse/JDK-8331987 if (e.getCause() instanceof CancellationException) { exception = e.getCause(); - } else { + } else { exception = e; } } catch (CompletionException e) { diff --git a/clients/src/main/java/org/apache/kafka/common/internals/Topic.java b/clients/src/main/java/org/apache/kafka/common/internals/Topic.java index ba19619410ff9..1bf94173fb90e 100644 --- a/clients/src/main/java/org/apache/kafka/common/internals/Topic.java +++ b/clients/src/main/java/org/apache/kafka/common/internals/Topic.java @@ -67,7 +67,7 @@ public static boolean isValid(String name) { public static void validate(String name, String logPrefix, Consumer throwableConsumer) { String reasonInvalid = detectInvalidTopic(name); if (reasonInvalid != null) { - throwableConsumer.accept(logPrefix + " is invalid: " + reasonInvalid); + throwableConsumer.accept(logPrefix + " is invalid: " + reasonInvalid); } } diff --git a/clients/src/main/java/org/apache/kafka/common/metrics/Metrics.java b/clients/src/main/java/org/apache/kafka/common/metrics/Metrics.java index 8cbd9996ed480..b85f9aa250771 100644 --- a/clients/src/main/java/org/apache/kafka/common/metrics/Metrics.java +++ b/clients/src/main/java/org/apache/kafka/common/metrics/Metrics.java @@ -256,14 +256,14 @@ public MetricName metricName(String name, String group, Map tags */ public static String toHtmlTable(String domain, Iterable allMetrics) { Map> beansAndAttributes = new TreeMap<>(); - + try (Metrics metrics = new Metrics()) { for (MetricNameTemplate template : allMetrics) { Map tags = new LinkedHashMap<>(); for (String s : template.tags()) { tags.put(s, "{" + s + "}"); } - + MetricName metricName = metrics.metricName(template.name(), template.group(), template.description(), tags); String mBeanName = JmxReporter.getMBeanName(domain, metricName); if (!beansAndAttributes.containsKey(mBeanName)) { @@ -661,14 +661,14 @@ public MetricName metricInstance(MetricNameTemplate template, Map runtimeTagKeys = new HashSet<>(tags.keySet()); runtimeTagKeys.addAll(config().tags().keySet()); - + Set templateTagKeys = template.tags(); - + if (!runtimeTagKeys.equals(templateTagKeys)) { throw new IllegalArgumentException("For '" + template.name() + "', runtime-defined metric tags do not match the tags in the template. " + "Runtime = " + runtimeTagKeys + " Template = " + templateTagKeys.toString()); } - + return this.metricName(template.name(), template.group(), template.description(), tags); } diff --git a/clients/src/main/java/org/apache/kafka/common/metrics/internals/IntGaugeSuite.java b/clients/src/main/java/org/apache/kafka/common/metrics/internals/IntGaugeSuite.java index 61ff49b0adfcc..837af9fd96f2d 100644 --- a/clients/src/main/java/org/apache/kafka/common/metrics/internals/IntGaugeSuite.java +++ b/clients/src/main/java/org/apache/kafka/common/metrics/internals/IntGaugeSuite.java @@ -213,8 +213,8 @@ private void performPendingMetricsOperations() { try { log.trace("{}: entering performPendingMetricsOperations", suiteName); for (PendingMetricsChange change = pending.pollLast(); - change != null; - change = pending.pollLast()) { + change != null; + change = pending.pollLast()) { if (change.provider == null) { if (log.isTraceEnabled()) { log.trace("{}: removing metric {}", suiteName, change.metricName); @@ -261,7 +261,7 @@ public synchronized void close() { } closed = true; int prevSize = 0; - for (Iterator iter = gauges.values().iterator(); iter.hasNext(); ) { + for (Iterator iter = gauges.values().iterator(); iter.hasNext();) { pending.push(new PendingMetricsChange(iter.next().metricName, null)); prevSize++; iter.remove(); diff --git a/clients/src/main/java/org/apache/kafka/common/metrics/stats/Rate.java b/clients/src/main/java/org/apache/kafka/common/metrics/stats/Rate.java index 17a4f6b113921..7292c1f7a34e8 100644 --- a/clients/src/main/java/org/apache/kafka/common/metrics/stats/Rate.java +++ b/clients/src/main/java/org/apache/kafka/common/metrics/stats/Rate.java @@ -58,7 +58,7 @@ public Rate(TimeUnit unit, SampledStat stat, long window) { if (window > 0) { this.timeWindowMs = TimeUnit.MILLISECONDS.convert(window, unit); this.stat.withTimeWindow(window, unit); - } else { + } else { this.timeWindowMs = -1; } } diff --git a/clients/src/main/java/org/apache/kafka/common/network/Authenticator.java b/clients/src/main/java/org/apache/kafka/common/network/Authenticator.java index 873c1f90df798..5129e839ae420 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/Authenticator.java +++ b/clients/src/main/java/org/apache/kafka/common/network/Authenticator.java @@ -152,7 +152,7 @@ default Long reauthenticationLatencyMs() { default Optional pollResponseReceivedDuringReauthentication() { return Optional.empty(); } - + /** * Return true if this is a server-side authenticator and the connected client * has indicated that it supports re-authentication, otherwise false diff --git a/clients/src/main/java/org/apache/kafka/common/network/ChannelState.java b/clients/src/main/java/org/apache/kafka/common/network/ChannelState.java index 5f6dfb92bd284..8e9d842149636 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/ChannelState.java +++ b/clients/src/main/java/org/apache/kafka/common/network/ChannelState.java @@ -84,7 +84,7 @@ public ChannelState(State state) { public ChannelState(State state, String remoteAddress) { this(state, null, remoteAddress); } - + public ChannelState(State state, AuthenticationException exception, String remoteAddress) { this.state = state; this.exception = exception; diff --git a/clients/src/main/java/org/apache/kafka/common/network/CipherInformation.java b/clients/src/main/java/org/apache/kafka/common/network/CipherInformation.java index d65aeb981c009..29b49a2b93af7 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/CipherInformation.java +++ b/clients/src/main/java/org/apache/kafka/common/network/CipherInformation.java @@ -23,8 +23,8 @@ public class CipherInformation { private final String protocol; public CipherInformation(String cipher, String protocol) { - this.cipher = cipher == null || cipher.isEmpty() ? "unknown" : cipher; - this.protocol = protocol == null || protocol.isEmpty() ? "unknown" : protocol; + this.cipher = cipher == null || cipher.isEmpty() ? "unknown" : cipher; + this.protocol = protocol == null || protocol.isEmpty() ? "unknown" : protocol; } public String cipher() { diff --git a/clients/src/main/java/org/apache/kafka/common/network/KafkaChannel.java b/clients/src/main/java/org/apache/kafka/common/network/KafkaChannel.java index 22c24f8408c89..1a64e70d004bc 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/KafkaChannel.java +++ b/clients/src/main/java/org/apache/kafka/common/network/KafkaChannel.java @@ -497,7 +497,7 @@ public int hashCode() { public String toString() { return super.toString() + " id=" + id; } - + /** * Return the number of times this instance has successfully authenticated. This * value can only exceed 1 when re-authentication is enabled and it has @@ -613,7 +613,7 @@ public boolean maybeBeginClientReauthentication(Supplier nowNanosSupplier) receive = null; return true; } - + /** * Return the number of milliseconds that elapsed while re-authenticating this * session from the perspective of this instance, if applicable, otherwise null. @@ -642,7 +642,7 @@ public boolean serverAuthenticationSessionExpired(long nowNanos) { Long serverSessionExpirationTimeNanos = authenticator.serverSessionExpirationTimeNanos(); return serverSessionExpirationTimeNanos != null && nowNanos - serverSessionExpirationTimeNanos > 0; } - + /** * Return the (always non-null but possibly empty) client-side * {@link NetworkReceive} response that arrived during re-authentication but @@ -658,7 +658,7 @@ public boolean serverAuthenticationSessionExpired(long nowNanos) { public Optional pollResponseReceivedDuringReauthentication() { return authenticator.pollResponseReceivedDuringReauthentication(); } - + /** * Return true if this is a server-side channel and the connected client has * indicated that it supports re-authentication, otherwise false diff --git a/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java b/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java index 9b3bff9b9faf2..3865e3b91a027 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java +++ b/clients/src/main/java/org/apache/kafka/common/network/SaslChannelBuilder.java @@ -250,7 +250,7 @@ public KafkaChannel buildChannel(String id, SelectionKey key, int maxReceiveSize } @Override - public void close() { + public void close() { for (LoginManager loginManager : loginManagers.values()) loginManager.release(); loginManagers.clear(); diff --git a/clients/src/main/java/org/apache/kafka/common/network/Selector.java b/clients/src/main/java/org/apache/kafka/common/network/Selector.java index 7acf88269ee14..c40a23bc60694 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/Selector.java +++ b/clients/src/main/java/org/apache/kafka/common/network/Selector.java @@ -846,7 +846,7 @@ private void clear() { this.disconnected.clear(); // Remove closed channels after all their buffered receives have been processed or if a send was requested - for (Iterator> it = closingChannels.entrySet().iterator(); it.hasNext(); ) { + for (Iterator> it = closingChannels.entrySet().iterator(); it.hasNext();) { KafkaChannel channel = it.next().getValue(); boolean sendFailed = failedSends.remove(channel.id()); boolean hasPending = false; @@ -1156,7 +1156,7 @@ public SelectorMetrics(Metrics metrics, String metricGrpPrefix, Map tag: metricTags.entrySet()) { + for (Map.Entry tag : metricTags.entrySet()) { tagsSuffix.append(tag.getKey()); tagsSuffix.append("-"); tagsSuffix.append(tag.getValue()); @@ -1274,12 +1274,12 @@ private Meter createMeter(Metrics metrics, String groupName, Map return new Meter(stat, rateMetricName, totalMetricName); } - private Meter createMeter(Metrics metrics, String groupName, Map metricTags, + private Meter createMeter(Metrics metrics, String groupName, Map metricTags, String baseName, String descriptiveName) { return createMeter(metrics, groupName, metricTags, null, baseName, descriptiveName); } - private Meter createIOThreadRatioMeter(Metrics metrics, String groupName, Map metricTags, + private Meter createIOThreadRatioMeter(Metrics metrics, String groupName, Map metricTags, String baseName, String action) { MetricName rateMetricName = metrics.metricName(baseName + "-ratio", groupName, String.format("The fraction of time the I/O thread spent %s", action), metricTags); diff --git a/clients/src/main/java/org/apache/kafka/common/network/SslChannelBuilder.java b/clients/src/main/java/org/apache/kafka/common/network/SslChannelBuilder.java index 249fcad163a79..eb37de4710f4c 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/SslChannelBuilder.java +++ b/clients/src/main/java/org/apache/kafka/common/network/SslChannelBuilder.java @@ -137,6 +137,7 @@ private SslAuthenticator(Map configs, SslTransportLayer transportLaye this.principalBuilder = ChannelBuilders.createPrincipalBuilder(configs, null, sslPrincipalMapper); this.listenerName = listenerName; } + /** * No-Op for plaintext authenticator */ diff --git a/clients/src/main/java/org/apache/kafka/common/network/SslTransportLayer.java b/clients/src/main/java/org/apache/kafka/common/network/SslTransportLayer.java index cc1c8bd807454..53748ae7d1f5b 100644 --- a/clients/src/main/java/org/apache/kafka/common/network/SslTransportLayer.java +++ b/clients/src/main/java/org/apache/kafka/common/network/SslTransportLayer.java @@ -466,7 +466,7 @@ private void handshakeFinished() throws IOException { log.debug("SSL handshake completed successfully with peerHost '{}' peerPort {} peerPrincipal '{}' protocol '{}' cipherSuite '{}'", session.getPeerHost(), session.getPeerPort(), peerPrincipal(), session.getProtocol(), session.getCipherSuite()); metadataRegistry.registerCipherInformation( - new CipherInformation(session.getCipherSuite(), session.getProtocol())); + new CipherInformation(session.getCipherSuite(), session.getProtocol())); } log.trace("SSLHandshake FINISHED channelId {}, appReadBuffer pos {}, netReadBuffer pos {}, netWriteBuffer pos {} ", diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/Errors.java b/clients/src/main/java/org/apache/kafka/common/protocol/Errors.java index a27a7fcf23c77..5afb9dc271918 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/Errors.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/Errors.java @@ -382,7 +382,7 @@ public enum Errors { INVALID_UPDATE_VERSION(95, "The given update version was invalid.", InvalidUpdateVersionException::new), FEATURE_UPDATE_FAILED(96, "Unable to update finalized features due to an unexpected server error.", FeatureUpdateFailedException::new), PRINCIPAL_DESERIALIZATION_FAILURE(97, "Request principal deserialization failed during forwarding. " + - "This indicates an internal error on the broker cluster security setup.", PrincipalDeserializationException::new), + "This indicates an internal error on the broker cluster security setup.", PrincipalDeserializationException::new), SNAPSHOT_NOT_FOUND(98, "Requested snapshot was not found.", SnapshotNotFoundException::new), POSITION_OUT_OF_RANGE(99, "Requested position is not greater than or equal to zero, and less than the size of the snapshot.", PositionOutOfRangeException::new), UNKNOWN_TOPIC_ID(100, "This server does not host this topic ID.", UnknownTopicIdException::new), diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/Protocol.java b/clients/src/main/java/org/apache/kafka/common/protocol/Protocol.java index e9d7609403ca2..76539d23879a8 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/Protocol.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/Protocol.java @@ -43,7 +43,7 @@ private static void schemaToBnfHtml(Schema schema, StringBuilder b, int indentSi b.append(schema.leftBracket()); b.append(" "); // Top level fields - for (BoundField field: schema.fields()) { + for (BoundField field : schema.fields()) { Type type = field.def.type; if (type.isArray()) { b.append(type.leftBracket()); @@ -82,7 +82,7 @@ private static void schemaToBnfHtml(Schema schema, StringBuilder b, int indentSi b.append("\n"); // Sub Types/Schemas - for (Map.Entry entry: subTypes.entrySet()) { + for (Map.Entry entry : subTypes.entrySet()) { if (entry.getValue() instanceof Schema) { // Complex Schema Type b.append(indentStr); @@ -101,7 +101,7 @@ private static void schemaToBnfHtml(Schema schema, StringBuilder b, int indentSi } private static void populateSchemaFields(Schema schema, Set fields) { - for (BoundField field: schema.fields()) { + for (BoundField field : schema.fields()) { fields.add(field); if (field.def.type.isArray()) { Type innerType = field.def.type.arrayElementType().get(); diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/Readable.java b/clients/src/main/java/org/apache/kafka/common/protocol/Readable.java index 52420e0bddde6..c7094b236cb39 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/Readable.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/Readable.java @@ -28,15 +28,25 @@ public interface Readable { byte readByte(); + short readShort(); + int readInt(); + long readLong(); + double readDouble(); + byte[] readArray(int length); + int readUnsignedVarint(); + ByteBuffer readByteBuffer(int length); + int readVarint(); + long readVarlong(); + int remaining(); /** diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/Writable.java b/clients/src/main/java/org/apache/kafka/common/protocol/Writable.java index d1aed6d9f6f48..e3bcc980b8c10 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/Writable.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/Writable.java @@ -26,14 +26,23 @@ public interface Writable { void writeByte(byte val); + void writeShort(short val); + void writeInt(int val); + void writeLong(long val); + void writeDouble(double val); + void writeByteArray(byte[] arr); + void writeUnsignedVarint(int i); + void writeByteBuffer(ByteBuffer buf); + void writeVarint(int i); + void writeVarlong(long i); default void writeRecords(BaseRecords records) { diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/types/BoundField.java b/clients/src/main/java/org/apache/kafka/common/protocol/types/BoundField.java index e40931bc7ed3b..b031b4fce8200 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/types/BoundField.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/types/BoundField.java @@ -29,7 +29,7 @@ public BoundField(Field def, Schema schema, int index) { this.schema = schema; this.index = index; } - + @Override public String toString() { return def.name + ":" + def.type; diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/types/NullableSchema.java b/clients/src/main/java/org/apache/kafka/common/protocol/types/NullableSchema.java index 0c4c92f58bda4..1e7645f5ad871 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/types/NullableSchema.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/types/NullableSchema.java @@ -87,7 +87,7 @@ public String leftBracket() { public String rightBracket() { return "}"; } - + @Override public String documentation() { return "A nullable struct is named by a string with a capitalized first letter and consists of one or more fields. " + @@ -95,7 +95,7 @@ public String documentation() { "For non-null values, the first byte has value 1, " + "followed by the serialization of each field in the order they are defined. " + "A null value is encoded as a byte with value -1 and there are no following bytes." + - "In protocol documentation a nullable struct containing multiple fields is enclosed by " + + "In protocol documentation a nullable struct containing multiple fields is enclosed by " + leftBracket() + " and " + rightBracket() + "."; } } diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/types/Schema.java b/clients/src/main/java/org/apache/kafka/common/protocol/types/Schema.java index 628e01737c18b..ad9972a04c689 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/types/Schema.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/types/Schema.java @@ -231,8 +231,8 @@ public String typeName() { @Override public String documentation() { return "A struct is named by a string with a capitalized first letter and consists of one or more fields. " + - "It represents a composite object encoded as the serialization of each field in the order they are defined." + - "In protocol documentation a struct containing multiple fields is enclosed by " + + "It represents a composite object encoded as the serialization of each field in the order they are defined." + + "In protocol documentation a struct containing multiple fields is enclosed by " + leftBracket() + " and " + rightBracket() + "."; } @@ -260,6 +260,7 @@ private static void handleNode(Type node, Visitor visitor) { */ public abstract static class Visitor { public void visit(Schema schema) {} + public void visit(Type field) {} } } diff --git a/clients/src/main/java/org/apache/kafka/common/protocol/types/Struct.java b/clients/src/main/java/org/apache/kafka/common/protocol/types/Struct.java index c75c220929268..7376459c99db4 100644 --- a/clients/src/main/java/org/apache/kafka/common/protocol/types/Struct.java +++ b/clients/src/main/java/org/apache/kafka/common/protocol/types/Struct.java @@ -265,7 +265,7 @@ public int hashCode() { if (f.def.type.isArray()) { if (this.get(f) != null) { Object[] arrayObject = (Object[]) this.get(f); - for (Object arrayItem: arrayObject) + for (Object arrayItem : arrayObject) result = prime * result + arrayItem.hashCode(); } } else { diff --git a/clients/src/main/java/org/apache/kafka/common/record/internal/DefaultRecordBatch.java b/clients/src/main/java/org/apache/kafka/common/record/internal/DefaultRecordBatch.java index 9935514b9358a..1e9d2d8beb87c 100644 --- a/clients/src/main/java/org/apache/kafka/common/record/internal/DefaultRecordBatch.java +++ b/clients/src/main/java/org/apache/kafka/common/record/internal/DefaultRecordBatch.java @@ -308,10 +308,12 @@ protected Record readNext(long baseOffset, long baseTimestamp, int baseSequence, throw new InvalidRecordException("Incorrect declared batch size, premature EOF reached"); } } + @Override protected boolean ensureNoneRemaining() { return !buffer.hasRemaining(); } + @Override public void close() {} }; diff --git a/clients/src/main/java/org/apache/kafka/common/record/internal/MemoryRecords.java b/clients/src/main/java/org/apache/kafka/common/record/internal/MemoryRecords.java index 7c7f23ee06b14..f4d1f7d692378 100644 --- a/clients/src/main/java/org/apache/kafka/common/record/internal/MemoryRecords.java +++ b/clients/src/main/java/org/apache/kafka/common/record/internal/MemoryRecords.java @@ -249,6 +249,7 @@ private static class BatchFilterResult { private final boolean writeOriginalBatch; private final boolean containsTombstones; private final long maxOffset; + private BatchFilterResult(List retainedRecords, final boolean writeOriginalBatch, final boolean containsTombstones, @@ -367,6 +368,7 @@ public RecordFilter(final long currentTime, final long deleteRetentionMs) { public static class BatchRetentionResult { public final BatchRetention batchRetention; public final boolean containsMarkerForEmptyTxn; + public BatchRetentionResult(final BatchRetention batchRetention, final boolean containsMarkerForEmptyTxn) { this.batchRetention = batchRetention; diff --git a/clients/src/main/java/org/apache/kafka/common/replica/ReplicaSelector.java b/clients/src/main/java/org/apache/kafka/common/replica/ReplicaSelector.java index 601bd6ce22ae4..b2b5805bdb0a0 100644 --- a/clients/src/main/java/org/apache/kafka/common/replica/ReplicaSelector.java +++ b/clients/src/main/java/org/apache/kafka/common/replica/ReplicaSelector.java @@ -40,6 +40,7 @@ public interface ReplicaSelector extends Configurable, Closeable { Optional select(TopicPartition topicPartition, ClientMetadata clientMetadata, PartitionView partitionView); + @Override default void close() throws IOException { // No-op by default diff --git a/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequest.java index ec8b848f4593e..32cd74b129fe1 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequest.java @@ -47,14 +47,14 @@ public class AddPartitionsToTxnRequest extends AbstractRequest { public static class Builder extends AbstractRequest.Builder { public final AddPartitionsToTxnRequestData data; - + public static Builder forClient(String transactionalId, long producerId, short producerEpoch, List partitions) { AddPartitionsToTxnTopicCollection topics = buildTxnTopicCollection(partitions); - + return new Builder(ApiKeys.ADD_PARTITIONS_TO_TXN.oldestVersion(), LAST_CLIENT_VERSION, new AddPartitionsToTxnRequestData() .setV3AndBelowTransactionalId(transactionalId) @@ -62,13 +62,13 @@ public static Builder forClient(String transactionalId, .setV3AndBelowProducerEpoch(producerEpoch) .setV3AndBelowTopics(topics)); } - + public static Builder forBroker(AddPartitionsToTxnTransactionCollection transactions) { return new Builder(EARLIEST_BROKER_VERSION, ApiKeys.ADD_PARTITIONS_TO_TXN.latestVersion(), new AddPartitionsToTxnRequestData() .setTransactions(transactions)); } - + private Builder(short minVersion, short maxVersion, AddPartitionsToTxnRequestData data) { super(ApiKeys.ADD_PARTITIONS_TO_TXN, minVersion, maxVersion); @@ -173,14 +173,14 @@ private AddPartitionsToTxnTransactionCollection singletonTransaction() { .setTopics(data.v3AndBelowTopics())); return singleTxn; } - + public AddPartitionsToTxnResult errorResponseForTransaction(String transactionalId, Errors e) { AddPartitionsToTxnResult txnResult = new AddPartitionsToTxnResult().setTransactionalId(transactionalId); AddPartitionsToTxnTopicResultCollection topicResults = errorResponseForTopics(data.transactions().find(transactionalId).topics(), e); txnResult.setTopicResults(topicResults); return txnResult; } - + private AddPartitionsToTxnTopicResultCollection errorResponseForTopics(AddPartitionsToTxnTopicCollection topics, Errors e) { AddPartitionsToTxnTopicResultCollection topicResults = new AddPartitionsToTxnTopicResultCollection(); for (AddPartitionsToTxnTopic topic : topics) { diff --git a/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponse.java b/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponse.java index 645fd667186b8..b917192676c5e 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponse.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponse.java @@ -77,7 +77,7 @@ public Map> errors() { for (AddPartitionsToTxnResult result : this.data.resultsByTransaction()) { errorsMap.put(result.transactionalId(), errorsForTransaction(result.topicResults())); } - + return errorsMap; } @@ -137,8 +137,8 @@ public Map errorCounts() { if (this.data.resultsByTopicV3AndBelow().isEmpty()) { allErrors.add(Errors.forCode(data.errorCode())); } - - errors().forEach((txnId, errors) -> + + errors().forEach((txnId, errors) -> allErrors.addAll(errors.values()) ); return errorCounts(allErrors); diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DeleteTopicsRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/DeleteTopicsRequest.java index dac9f21c169d7..34face375ae10 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DeleteTopicsRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DeleteTopicsRequest.java @@ -45,7 +45,7 @@ public DeleteTopicsRequest build(short version) { } return new DeleteTopicsRequest(data, version); } - + private List groupByTopic(List topics) { List topicStates = new ArrayList<>(); for (String topic : topics) { @@ -87,11 +87,11 @@ public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) { } return new DeleteTopicsResponse(response); } - + public List topicNames() { if (version() >= 6) return data.topics().stream().map(DeleteTopicState::name).collect(Collectors.toList()); - return data.topicNames(); + return data.topicNames(); } public int numberOfTopics() { @@ -99,17 +99,17 @@ public int numberOfTopics() { return data.topics().size(); return data.topicNames().size(); } - + public List topicIds() { if (version() >= 6) return data.topics().stream().map(DeleteTopicState::topicId).collect(Collectors.toList()); return List.of(); } - + public List topics() { if (version() >= 6) return data.topics(); - return data.topicNames().stream().map(name -> new DeleteTopicState().setName(name)).collect(Collectors.toList()); + return data.topicNames().stream().map(name -> new DeleteTopicState().setName(name)).collect(Collectors.toList()); } public static DeleteTopicsRequest parse(Readable readable, short version) { diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DescribeAclsRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/DescribeAclsRequest.java index 8bbeeceabbfbb..e6e727034f730 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DescribeAclsRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DescribeAclsRequest.java @@ -111,7 +111,7 @@ public AclBindingFilter filter() { ResourceType.fromCode(data.resourceTypeFilter()), data.resourceNameFilter(), PatternType.fromCode(data.patternTypeFilter())); - AccessControlEntryFilter acef = new AccessControlEntryFilter( + AccessControlEntryFilter acef = new AccessControlEntryFilter( data.principalFilter(), data.hostFilter(), AclOperation.fromCode(data.operation()), diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsRequest.java index 8b03cb6246faf..4e6a6fc5c3a7e 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsRequest.java @@ -62,7 +62,7 @@ public DescribeConfigsResponse getErrorResponse(int throttleTimeMs, Throwable e) .setErrorMessage(error.message()) .setResourceName(result.resourceName()) .setResourceType(result.resourceType())) - .collect(Collectors.toList()) + .collect(Collectors.toList()) )); } diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsResponse.java b/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsResponse.java index f291af273b84a..4f40e9afe2478 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsResponse.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsResponse.java @@ -200,9 +200,11 @@ public ConfigSynonym(String name, String value, ConfigSource source) { public String name() { return name; } + public String value() { return value; } + public ConfigSource source() { return source; } diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DescribeGroupsResponse.java b/clients/src/main/java/org/apache/kafka/common/requests/DescribeGroupsResponse.java index b97526d0dd5f4..8c4f0c4341b1f 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DescribeGroupsResponse.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DescribeGroupsResponse.java @@ -81,7 +81,7 @@ public static DescribedGroup groupMetadata( .setProtocolData(protocol) .setMembers(members) .setAuthorizedOperations(Utils.to32BitField(authorizedOperations)); - return groupMetadata; + return groupMetadata; } public static DescribedGroup groupMetadata( diff --git a/clients/src/main/java/org/apache/kafka/common/requests/FetchRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/FetchRequest.java index 8bce0c775e270..2565bfb4f5439 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/FetchRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/FetchRequest.java @@ -164,7 +164,7 @@ public static class Builder extends AbstractRequest.Builder { public static Builder forConsumer(short maxVersion, int maxWait, int minBytes, Map fetchData) { return new Builder(ApiKeys.FETCH.oldestVersion(), maxVersion, - CONSUMER_REPLICA_ID, -1, maxWait, minBytes, fetchData); + CONSUMER_REPLICA_ID, -1, maxWait, minBytes, fetchData); } public static Builder forReplica(short allowedVersion, int replicaId, long replicaEpoch, int maxWait, int minBytes, diff --git a/clients/src/main/java/org/apache/kafka/common/requests/FetchSnapshotRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/FetchSnapshotRequest.java index 47b654c4acc14..fde8171c3cf0e 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/FetchSnapshotRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/FetchSnapshotRequest.java @@ -74,7 +74,7 @@ public static FetchSnapshotRequest parse(Readable readable, short version) { public static class Builder extends AbstractRequest.Builder { private final FetchSnapshotRequestData data; - public Builder(FetchSnapshotRequestData data) { + public Builder(FetchSnapshotRequestData data) { super(ApiKeys.FETCH_SNAPSHOT); this.data = data; } diff --git a/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupRequest.java index 4a97c05037b9e..48dede268d269 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupRequest.java @@ -73,9 +73,9 @@ public LeaveGroupRequest build(short version) { @Override public String toString() { return "(type=LeaveGroupRequest" + - ", groupId=" + groupId + - ", members=" + MessageUtil.deepToString(members.iterator()) + - ")"; + ", groupId=" + groupId + + ", members=" + MessageUtil.deepToString(members.iterator()) + + ")"; } } private final LeaveGroupRequestData data; diff --git a/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupResponse.java b/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupResponse.java index 7cae507d4c2a7..dc29810a7fc98 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupResponse.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/LeaveGroupResponse.java @@ -160,7 +160,7 @@ public boolean shouldClientThrottle(short version) { @Override public boolean equals(Object other) { return other instanceof LeaveGroupResponse && - ((LeaveGroupResponse) other).data.equals(this.data); + ((LeaveGroupResponse) other).data.equals(this.data); } @Override diff --git a/clients/src/main/java/org/apache/kafka/common/requests/ListOffsetsRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/ListOffsetsRequest.java index 5862ebdfafc67..d763e2238f5a8 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/ListOffsetsRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/ListOffsetsRequest.java @@ -151,7 +151,7 @@ public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) { .setErrorCode(errorCode) .setPartitionIndex(partition.partitionIndex()); partitionResponse.setOffset(ListOffsetsResponse.UNKNOWN_OFFSET) - .setTimestamp(ListOffsetsResponse.UNKNOWN_TIMESTAMP); + .setTimestamp(ListOffsetsResponse.UNKNOWN_TIMESTAMP); partitions.add(partitionResponse); } topicResponse.setPartitions(partitions); diff --git a/clients/src/main/java/org/apache/kafka/common/requests/MetadataRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/MetadataRequest.java index 392bf2a9105e3..ed17416ae2a85 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/MetadataRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/MetadataRequest.java @@ -76,7 +76,7 @@ private static MetadataRequestData requestTopicIds(Set topicIds) { } public Builder(List topics, boolean allowAutoTopicCreation) { - this(topics, allowAutoTopicCreation, ApiKeys.METADATA.oldestVersion(), ApiKeys.METADATA.latestVersion()); + this(topics, allowAutoTopicCreation, ApiKeys.METADATA.oldestVersion(), ApiKeys.METADATA.latestVersion()); } public static Builder allTopics() { diff --git a/clients/src/main/java/org/apache/kafka/common/requests/PushTelemetryResponse.java b/clients/src/main/java/org/apache/kafka/common/requests/PushTelemetryResponse.java index dcd12b42bb68c..e57bb755e4b7c 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/PushTelemetryResponse.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/PushTelemetryResponse.java @@ -25,7 +25,7 @@ import java.util.EnumMap; import java.util.Map; -public class PushTelemetryResponse extends AbstractResponse { +public class PushTelemetryResponse extends AbstractResponse { private final PushTelemetryResponseData data; diff --git a/clients/src/main/java/org/apache/kafka/common/requests/TxnOffsetCommitRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/TxnOffsetCommitRequest.java index 0e1d90058093c..cba9f34354679 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/TxnOffsetCommitRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/TxnOffsetCommitRequest.java @@ -106,8 +106,8 @@ public TxnOffsetCommitRequest build(short version) { private boolean groupMetadataSet() { return !data.memberId().equals(JoinGroupRequest.UNKNOWN_MEMBER_ID) || - data.generationId() != JoinGroupRequest.UNKNOWN_GENERATION_ID || - data.groupInstanceId() != null; + data.generationId() != JoinGroupRequest.UNKNOWN_GENERATION_ID || + data.groupInstanceId() != null; } @Override @@ -248,8 +248,8 @@ public boolean equals(Object other) { CommittedOffset otherOffset = (CommittedOffset) other; return this.offset == otherOffset.offset - && this.leaderEpoch.equals(otherOffset.leaderEpoch) - && Objects.equals(this.metadata, otherOffset.metadata); + && this.leaderEpoch.equals(otherOffset.leaderEpoch) + && Objects.equals(this.metadata, otherOffset.metadata); } @Override diff --git a/clients/src/main/java/org/apache/kafka/common/requests/WriteTxnMarkersRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/WriteTxnMarkersRequest.java index cf7e771c55083..1153f4db5624f 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/WriteTxnMarkersRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/WriteTxnMarkersRequest.java @@ -81,13 +81,13 @@ public short transactionVersion() { @Override public String toString() { return "TxnMarkerEntry{" + - "producerId=" + producerId + - ", producerEpoch=" + producerEpoch + - ", coordinatorEpoch=" + coordinatorEpoch + - ", result=" + result + - ", partitions=" + partitions + - ", transactionVersion=" + transactionVersion + - '}'; + "producerId=" + producerId + + ", producerEpoch=" + producerEpoch + + ", coordinatorEpoch=" + coordinatorEpoch + + ", result=" + result + + ", partitions=" + partitions + + ", transactionVersion=" + transactionVersion + + '}'; } @Override @@ -96,11 +96,11 @@ public boolean equals(final Object o) { if (o == null || getClass() != o.getClass()) return false; final TxnMarkerEntry that = (TxnMarkerEntry) o; return producerId == that.producerId && - producerEpoch == that.producerEpoch && - coordinatorEpoch == that.coordinatorEpoch && - result == that.result && - transactionVersion == that.transactionVersion && - Objects.equals(partitions, that.partitions); + producerEpoch == that.producerEpoch && + coordinatorEpoch == that.coordinatorEpoch && + result == that.result && + transactionVersion == that.transactionVersion && + Objects.equals(partitions, that.partitions); } @Override diff --git a/clients/src/main/java/org/apache/kafka/common/security/JaasConfig.java b/clients/src/main/java/org/apache/kafka/common/security/JaasConfig.java index b3d31fcc178be..481d46d834bf2 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/JaasConfig.java +++ b/clients/src/main/java/org/apache/kafka/common/security/JaasConfig.java @@ -77,7 +77,7 @@ public AppConfigurationEntry[] getAppConfigurationEntry(String name) { if (this.loginContextName.equals(name)) return configEntries.toArray(new AppConfigurationEntry[0]); else - return null; + return null; } private LoginModuleControlFlag loginModuleControlFlag(String flag) { diff --git a/clients/src/main/java/org/apache/kafka/common/security/JaasContext.java b/clients/src/main/java/org/apache/kafka/common/security/JaasContext.java index 865762c5c364c..6654a188186d6 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/JaasContext.java +++ b/clients/src/main/java/org/apache/kafka/common/security/JaasContext.java @@ -106,7 +106,7 @@ else if (contextModules.length != 1) @SuppressWarnings("deprecation") // Visible for testing - static void throwIfLoginModuleIsNotAllowed(AppConfigurationEntry appConfigurationEntry) { + static void throwIfLoginModuleIsNotAllowed(AppConfigurationEntry appConfigurationEntry) { String disallowedProperty = System.getProperty(DISALLOWED_LOGIN_MODULES_CONFIG); if (disallowedProperty != null) { LOG.warn("System property '{}' is deprecated and will be removed in a future release. Use '{}' instead.", diff --git a/clients/src/main/java/org/apache/kafka/common/security/authenticator/AbstractLogin.java b/clients/src/main/java/org/apache/kafka/common/security/authenticator/AbstractLogin.java index da381421dcca4..1f7a085b38d42 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/authenticator/AbstractLogin.java +++ b/clients/src/main/java/org/apache/kafka/common/security/authenticator/AbstractLogin.java @@ -97,7 +97,7 @@ public void handle(Callback[] callbacks) throws UnsupportedCallbackException { nc.setName(nc.getDefaultName()); } else if (callback instanceof PasswordCallback) { String errorMessage = "Could not login: the client is being asked for a password, but the Kafka" + - " client code does not currently support obtaining a password from the user."; + " client code does not currently support obtaining a password from the user."; throw new UnsupportedCallbackException(callback, errorMessage); } else if (callback instanceof RealmCallback) { RealmCallback rc = (RealmCallback) callback; diff --git a/clients/src/main/java/org/apache/kafka/common/security/authenticator/LoginManager.java b/clients/src/main/java/org/apache/kafka/common/security/authenticator/LoginManager.java index 636ee939e6db7..6f34b18a30f0a 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/authenticator/LoginManager.java +++ b/clients/src/main/java/org/apache/kafka/common/security/authenticator/LoginManager.java @@ -214,7 +214,7 @@ private static Class configuredClassOrDefault(Map co String saslMechanism, String configName, Class defaultClass) { - String prefix = jaasContext.type() == JaasContext.Type.SERVER ? ListenerName.saslMechanismPrefix(saslMechanism) : ""; + String prefix = jaasContext.type() == JaasContext.Type.SERVER ? ListenerName.saslMechanismPrefix(saslMechanism) : ""; @SuppressWarnings("unchecked") Class clazz = (Class) configs.get(prefix + configName); if (clazz != null && jaasContext.configurationEntries().size() != 1) { diff --git a/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslClientCallbackHandler.java b/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslClientCallbackHandler.java index c2257f3b6b85d..3da1445345e15 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslClientCallbackHandler.java +++ b/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslClientCallbackHandler.java @@ -50,7 +50,7 @@ public class SaslClientCallbackHandler implements AuthenticateCallbackHandler { @Override public void configure(Map configs, String saslMechanism, List jaasConfigEntries) { - this.mechanism = saslMechanism; + this.mechanism = saslMechanism; } @Override @@ -69,7 +69,7 @@ public void handle(Callback[] callbacks) throws UnsupportedCallbackException { ((PasswordCallback) callback).setPassword(password); } else { String errorMessage = "Could not login: the client is being asked for a password, but the Kafka" + - " client code does not currently support obtaining a password from the user."; + " client code does not currently support obtaining a password from the user."; throw new UnsupportedCallbackException(callback, errorMessage); } } else if (callback instanceof RealmCallback) { @@ -94,7 +94,7 @@ public void handle(Callback[] callbacks) throws UnsupportedCallbackException { SaslExtensions extensions = subject.getPublicCredentials(SaslExtensions.class).iterator().next(); ((SaslExtensionsCallback) callback).extensions(extensions); } - } else { + } else { throw new UnsupportedCallbackException(callback, "Unrecognized SASL ClientCallback"); } } diff --git a/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticator.java b/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticator.java index b84b5dc2abc94..0388b0b05946a 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticator.java +++ b/clients/src/main/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticator.java @@ -715,6 +715,6 @@ public Long reauthenticationLatencyMs() { private long zeroIfNegative(long value) { return Math.max(0L, value); - } + } } } diff --git a/clients/src/main/java/org/apache/kafka/common/security/kerberos/BadFormatString.java b/clients/src/main/java/org/apache/kafka/common/security/kerberos/BadFormatString.java index 3f9070b147a98..d06a5b1cb1c0b 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/kerberos/BadFormatString.java +++ b/clients/src/main/java/org/apache/kafka/common/security/kerberos/BadFormatString.java @@ -22,6 +22,7 @@ public class BadFormatString extends IOException { BadFormatString(String msg) { super(msg); } + BadFormatString(String msg, Throwable err) { super(msg, err); } diff --git a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosClientCallbackHandler.java b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosClientCallbackHandler.java index 0154be08f8fd9..5b7f7b4373095 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosClientCallbackHandler.java +++ b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosClientCallbackHandler.java @@ -49,11 +49,11 @@ public void handle(Callback[] callbacks) throws UnsupportedCallbackException { nc.setName(nc.getDefaultName()); } else if (callback instanceof PasswordCallback) { String errorMessage = "Could not login: the client is being asked for a password, but the Kafka" + - " client code does not currently support obtaining a password from the user."; + " client code does not currently support obtaining a password from the user."; errorMessage += " Make sure -Djava.security.auth.login.config property passed to JVM and" + - " the client is configured to use a ticket cache (using" + - " the JAAS configuration setting 'useTicketCache=true)'. Make sure you are using" + - " FQDN of the Kafka broker you are trying to connect to."; + " the client is configured to use a ticket cache (using" + + " the JAAS configuration setting 'useTicketCache=true)'. Make sure you are using" + + " FQDN of the Kafka broker you are trying to connect to."; throw new UnsupportedCallbackException(callback, errorMessage); } else if (callback instanceof RealmCallback) { RealmCallback rc = (RealmCallback) callback; @@ -65,7 +65,7 @@ public void handle(Callback[] callbacks) throws UnsupportedCallbackException { ac.setAuthorized(authId.equals(authzId)); if (ac.isAuthorized()) ac.setAuthorizedID(authzId); - } else { + } else { throw new UnsupportedCallbackException(callback, "Unrecognized SASL ClientCallback"); } } diff --git a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosRule.java b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosRule.java index 91280ca65a347..1f82168a5ad77 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosRule.java +++ b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosRule.java @@ -188,7 +188,7 @@ String apply(String[] params) throws IOException { if (fromPattern == null) { result = base; } else { - result = replaceSubstitution(base, fromPattern, toPattern, repeat); + result = replaceSubstitution(base, fromPattern, toPattern, repeat); } } } diff --git a/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerExtensionsValidatorCallback.java b/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerExtensionsValidatorCallback.java index 7874833e27ae1..af15f272226ef 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerExtensionsValidatorCallback.java +++ b/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerExtensionsValidatorCallback.java @@ -104,6 +104,7 @@ public void valid(String extensionName) { throw new IllegalArgumentException(String.format("Extension %s was not found in the original extensions", extensionName)); validatedExtensions.put(extensionName, inputExtensions.map().get(extensionName)); } + /** * Set the error value for a specific extension key-value pair if validation has failed * diff --git a/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerLoginModule.java b/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerLoginModule.java index ddbbd1a787a1a..0c575333302ac 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerLoginModule.java +++ b/clients/src/main/java/org/apache/kafka/common/security/oauthbearer/OAuthBearerLoginModule.java @@ -343,7 +343,7 @@ private void identifyExtensions() throws LoginException { extensionsRequiringCommit = EMPTY_EXTENSIONS; log.debug("CallbackHandler {} does not support SASL extensions. No extensions will be added", callbackHandler.getClass().getName()); } - if (extensionsRequiringCommit == null) { + if (extensionsRequiringCommit == null) { log.error("SASL Extensions cannot be null. Check whether your callback handler is explicitly setting them as null."); throw new LoginException("Extensions cannot be null."); } @@ -360,7 +360,7 @@ public boolean logout() { } if (myCommittedToken != null) { log.trace("Logging out my token; current committed token count = {}", committedTokenCount()); - for (Iterator iterator = subject.getPrivateCredentials().iterator(); iterator.hasNext(); ) { + for (Iterator iterator = subject.getPrivateCredentials().iterator(); iterator.hasNext();) { Object privateCredential = iterator.next(); if (privateCredential == myCommittedToken) { iterator.remove(); diff --git a/clients/src/main/java/org/apache/kafka/common/security/plain/internals/PlainServerCallbackHandler.java b/clients/src/main/java/org/apache/kafka/common/security/plain/internals/PlainServerCallbackHandler.java index 7930fed033bd3..d98ef16f47bd5 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/plain/internals/PlainServerCallbackHandler.java +++ b/clients/src/main/java/org/apache/kafka/common/security/plain/internals/PlainServerCallbackHandler.java @@ -46,7 +46,7 @@ public void configure(Map configs, String mechanism, List extensions) { this.saslName = saslName; this.nonce = nonce; this.extensions = new ScramExtensions(extensions); this.authorizationId = ""; // Optional authzid not specified in gs2-header } + public String saslName() { return saslName; } + public String nonce() { return nonce; } + public String authorizationId() { return authorizationId; } + public String gs2Header() { return "n," + authorizationId + ","; } + public ScramExtensions extensions() { return extensions; } @@ -121,6 +128,7 @@ public String clientFirstMessageBare() { else return String.format("n=%s,r=%s,%s", saslName, nonce, extensionStr); } + String toMessage() { return gs2Header() + clientFirstMessageBare(); } @@ -144,6 +152,7 @@ public static class ServerFirstMessage extends AbstractScramMessage { private final String nonce; private final byte[] salt; private final int iterations; + public ServerFirstMessage(byte[] messageBytes) throws SaslException { String message = toMessage(messageBytes); Matcher matcher = PATTERN.matcher(message); @@ -160,20 +169,25 @@ public ServerFirstMessage(byte[] messageBytes) throws SaslException { String salt = matcher.group("salt"); this.salt = Base64.getDecoder().decode(salt); } + public ServerFirstMessage(String clientNonce, String serverNonce, byte[] salt, int iterations) { this.nonce = clientNonce + serverNonce; this.salt = salt; this.iterations = iterations; } + public String nonce() { return nonce; } + public byte[] salt() { return salt; } + public int iterations() { return iterations; } + String toMessage() { return String.format("r=%s,s=%s,i=%d", nonce, Base64.getEncoder().encodeToString(salt), iterations); } @@ -196,6 +210,7 @@ public static class ClientFinalMessage extends AbstractScramMessage { private final byte[] channelBinding; private final String nonce; private byte[] proof; + public ClientFinalMessage(byte[] messageBytes) throws SaslException { String message = toMessage(messageBytes); Matcher matcher = PATTERN.matcher(message); @@ -206,27 +221,34 @@ public ClientFinalMessage(byte[] messageBytes) throws SaslException { this.nonce = matcher.group("nonce"); this.proof = Base64.getDecoder().decode(matcher.group("proof")); } + public ClientFinalMessage(byte[] channelBinding, String nonce) { this.channelBinding = channelBinding; this.nonce = nonce; } + public byte[] channelBinding() { return channelBinding; } + public String nonce() { return nonce; } + public byte[] proof() { return proof; } + public void proof(byte[] proof) { this.proof = proof; } + public String clientFinalMessageWithoutProof() { return String.format("c=%s,r=%s", Base64.getEncoder().encodeToString(channelBinding), nonce); } + String toMessage() { return String.format("%s,p=%s", clientFinalMessageWithoutProof(), @@ -249,6 +271,7 @@ public static class ServerFinalMessage extends AbstractScramMessage { private final String error; private final byte[] serverSignature; + public ServerFinalMessage(byte[] messageBytes) throws SaslException { String message = toMessage(messageBytes); Matcher matcher = PATTERN.matcher(message); @@ -268,16 +291,20 @@ public ServerFinalMessage(byte[] messageBytes) throws SaslException { this.error = error; } } + public ServerFinalMessage(String error, byte[] serverSignature) { this.error = error; this.serverSignature = serverSignature; } + public String error() { return error; } + public byte[] serverSignature() { return serverSignature; } + String toMessage() { if (error != null) return "e=" + error; diff --git a/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslClient.java b/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslClient.java index 9afcd6c07e37b..b20ea309c3e03 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslClient.java +++ b/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslClient.java @@ -125,7 +125,7 @@ public byte[] evaluateChallenge(byte[] challenge) throws SaslException { if (!serverFirstMessage.nonce().startsWith(clientNonce)) throw new SaslException("Invalid server nonce: does not start with client nonce"); if (serverFirstMessage.iterations() < mechanism.minIterations()) - throw new SaslException("Requested iterations " + serverFirstMessage.iterations() + " is less than the minimum " + mechanism.minIterations() + " for " + mechanism); + throw new SaslException("Requested iterations " + serverFirstMessage.iterations() + " is less than the minimum " + mechanism.minIterations() + " for " + mechanism); PasswordCallback passwordCallback = new PasswordCallback("Password:", false); try { callbackHandler.handle(new Callback[]{passwordCallback}); diff --git a/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslServer.java b/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslServer.java index e8576e03798de..35a33e6ce4c51 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslServer.java +++ b/clients/src/main/java/org/apache/kafka/common/security/scram/internals/ScramSaslServer.java @@ -131,7 +131,7 @@ public byte[] evaluateResponse(byte[] response) throws SaslException, SaslAuthen throw new SaslAuthenticationException("Authentication failed: Client requested an authorization id that is different from username"); if (scramCredential.iterations() < mechanism.minIterations()) - throw new SaslException("Iterations " + scramCredential.iterations() + " is less than the minimum " + mechanism.minIterations() + " for " + mechanism); + throw new SaslException("Iterations " + scramCredential.iterations() + " is less than the minimum " + mechanism.minIterations() + " for " + mechanism); this.serverFirstMessage = new ServerFirstMessage(clientFirstMessage.nonce(), serverNonce, scramCredential.salt(), diff --git a/clients/src/main/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapper.java b/clients/src/main/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapper.java index a7b16906d5d16..6c8bf77f01f23 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapper.java +++ b/clients/src/main/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapper.java @@ -48,6 +48,7 @@ import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; import javax.security.auth.x500.X500Principal; + /** * A wrapper around the original trust manager factory for creating common name logging trust managers. * These trust managers log the common name of an expired but otherwise valid (client) certificate before rejecting the connection attempt. @@ -67,6 +68,7 @@ class CommonNameLoggingTrustManagerFactoryWrapper { protected CommonNameLoggingTrustManagerFactoryWrapper(String kmfAlgorithm) throws NoSuchAlgorithmException { this.origTmf = TrustManagerFactory.getInstance(kmfAlgorithm); } + /** * Factory for creating a wrapped trust manager factory * @param kmfAlgorithm the algorithm @@ -103,6 +105,7 @@ public TrustManager[] getTrustManagers() { } return wrappedTrustManagers; } + /** * A trust manager which logs the common name of an expired but otherwise valid (client) certificate before rejecting the connection attempt. * This allows to identify misconfigured clients in complex network environments, where the IP address is not sufficient. @@ -184,7 +187,7 @@ public static ByteBuffer calcDigestForCertificateChain(X509Certificate[] chain) } catch (NoSuchAlgorithmException e) { return null; } - for (X509Certificate cert: chain) { + for (X509Certificate cert : chain) { md.update(cert.getEncoded()); } return ByteBuffer.wrap(md.digest()); @@ -207,7 +210,7 @@ public void checkServerTrusted(X509Certificate[] chain, String authType) public X509Certificate[] getAcceptedIssuers() { return this.origTm.getAcceptedIssuers(); } - + /** * This method sorts the certificate chain from end to root certificate and wraps the end certificate to make it "never-expireing" * @param origChain The original (unsorted) certificate chain @@ -224,7 +227,7 @@ public static X509Certificate[] sortChainAnWrapEndCertificate(X509Certificate[] HashMap principalToCertMap = new HashMap<>(); // First, create a map from principal of issuer (!) to certificate for easily finding the right certificates HashMap issuedbyPrincipalToCertificatesMap = new HashMap<>(); - for (X509Certificate cert: origChain) { + for (X509Certificate cert : origChain) { X500Principal principal = cert.getSubjectX500Principal(); X500Principal issuerPrincipal = cert.getIssuerX500Principal(); if (issuerPrincipal.equals(principal)) { @@ -239,7 +242,7 @@ public static X509Certificate[] sortChainAnWrapEndCertificate(X509Certificate[] } // Thus, expect certificate chain to be broken, e.g. containing multiple enbd certificates Set endCertificates = new HashSet<>(); - for (X509Certificate cert: origChain) { + for (X509Certificate cert : origChain) { X500Principal subjectPrincipal = cert.getSubjectX500Principal(); if (!issuedbyPrincipalToCertificatesMap.containsKey(subjectPrincipal)) { // We found a certificate which is not an issuer of another certificate. We consider it to be an end certificate diff --git a/clients/src/main/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactory.java b/clients/src/main/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactory.java index a5068dc83abce..f0e61059ea9ff 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactory.java +++ b/clients/src/main/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactory.java @@ -211,6 +211,7 @@ private SSLEngine createSslEngine(ConnectionMode connectionMode, String peerHost } return sslEngine; } + private static SslClientAuth createSslClientAuth(String key) { SslClientAuth auth = SslClientAuth.forConfig(key); if (auth != null) { @@ -329,7 +330,9 @@ else if (password != null) interface SecurityStore { KeyStore get(); + char[] keyPassword(); + boolean modified(); } @@ -565,7 +568,7 @@ static class PemParser { String encodingParams = "\\s*[^\\r\\n]*:[^\\r\\n]*[\\r\\n]+"; String base64Pattern = "([a-zA-Z0-9/+=\\s]*)"; - String patternStr = String.format(beginOrEndFormat, "BEGIN", nameIgnoreSpace) + + String patternStr = String.format(beginOrEndFormat, "BEGIN", nameIgnoreSpace) + String.format("(?:%s)*", encodingParams) + base64Pattern + String.format(beginOrEndFormat, "END", nameIgnoreSpace); @@ -574,7 +577,7 @@ static class PemParser { private List pemEntries(String pem) { Matcher matcher = pattern.matcher(pem + "\n"); // allow last newline to be omitted in value - List entries = new ArrayList<>(); + List entries = new ArrayList<>(); while (matcher.find()) { String base64Str = matcher.group(1).replaceAll("\\s", ""); entries.add(Base64.getDecoder().decode(base64Str)); diff --git a/clients/src/main/java/org/apache/kafka/common/security/ssl/SslFactory.java b/clients/src/main/java/org/apache/kafka/common/security/ssl/SslFactory.java index 9f9d23686d4b7..29e9cc315f376 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/ssl/SslFactory.java +++ b/clients/src/main/java/org/apache/kafka/common/security/ssl/SslFactory.java @@ -305,7 +305,7 @@ static List create(KeyStore keystore) throws GeneralSecurity List entries = new ArrayList<>(); while (aliases.hasMoreElements()) { String alias = aliases.nextElement(); - Certificate cert = keystore.getCertificate(alias); + Certificate cert = keystore.getCertificate(alias); if (cert instanceof X509Certificate) entries.add(new CertificateEntries(alias, (X509Certificate) cert)); } @@ -450,6 +450,7 @@ private SslEngineValidator(SSLEngine engine) { void beginHandshake() throws SSLException { sslEngine.beginHandshake(); } + void handshake(SslEngineValidator peerValidator) throws SSLException { SSLEngineResult.HandshakeStatus handshakeStatus = sslEngine.getHandshakeStatus(); while (true) { diff --git a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/TokenInformation.java b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/TokenInformation.java index 0b639d345c7f6..259c2ee5c0839 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/TokenInformation.java +++ b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/TokenInformation.java @@ -47,9 +47,9 @@ public TokenInformation(String tokenId, KafkaPrincipal owner, KafkaPrincipal tok this.owner = owner; this.tokenRequester = tokenRequester; this.renewers = renewers; - this.issueTimestamp = issueTimestamp; - this.maxTimestamp = maxTimestamp; - this.expiryTimestamp = expiryTimestamp; + this.issueTimestamp = issueTimestamp; + this.maxTimestamp = maxTimestamp; + this.expiryTimestamp = expiryTimestamp; } // Convert record elements into a TokenInformation diff --git a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCache.java b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCache.java index af11e091bbad5..67e2f6dacee6c 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCache.java +++ b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCache.java @@ -59,7 +59,7 @@ public String owner(String tokenId) { public void updateCache(DelegationToken token, Map scramCredentialMap) { //Update TokenCache - String tokenId = token.tokenInfo().tokenId(); + String tokenId = token.tokenInfo().tokenId(); addToken(tokenId, token.tokenInfo()); String hmac = token.hmacAsBase64String(); //Update Scram Credentials diff --git a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCredentialCallback.java b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCredentialCallback.java index 5d9eee986a1bd..2b071aef064a8 100644 --- a/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCredentialCallback.java +++ b/clients/src/main/java/org/apache/kafka/common/security/token/delegation/internals/DelegationTokenCredentialCallback.java @@ -29,7 +29,7 @@ public void tokenOwner(String tokenOwner) { public String tokenOwner() { return tokenOwner; } - + public void tokenExpiryTimestamp(Long tokenExpiryTimestamp) { this.tokenExpiryTimestamp = tokenExpiryTimestamp; } diff --git a/clients/src/main/java/org/apache/kafka/common/serialization/BooleanSerializer.java b/clients/src/main/java/org/apache/kafka/common/serialization/BooleanSerializer.java index ad4722a8d8074..1b304d0d8f656 100644 --- a/clients/src/main/java/org/apache/kafka/common/serialization/BooleanSerializer.java +++ b/clients/src/main/java/org/apache/kafka/common/serialization/BooleanSerializer.java @@ -20,6 +20,7 @@ public class BooleanSerializer implements Serializer { private static final byte TRUE = 0x01; private static final byte FALSE = 0x00; + @Override public byte[] serialize(final String topic, final Boolean data) { if (data == null) { diff --git a/clients/src/main/java/org/apache/kafka/common/serialization/ListDeserializer.java b/clients/src/main/java/org/apache/kafka/common/serialization/ListDeserializer.java index c2cfce62c3869..10ceb125c1799 100644 --- a/clients/src/main/java/org/apache/kafka/common/serialization/ListDeserializer.java +++ b/clients/src/main/java/org/apache/kafka/common/serialization/ListDeserializer.java @@ -58,7 +58,7 @@ public class ListDeserializer implements Deserializer> { public ListDeserializer() {} - public > ListDeserializer(Class listClass, Deserializer inner) { + public >ListDeserializer(Class listClass, Deserializer inner) { if (listClass == null || inner == null) { log.error("Could not construct ListDeserializer as not all required parameters were present -- listClass: {}, inner: {}", listClass, inner); throw new IllegalArgumentException("ListDeserializer requires both \"listClass\" and \"innerDeserializer\" parameters to be provided during initialization"); diff --git a/clients/src/main/java/org/apache/kafka/common/serialization/Serdes.java b/clients/src/main/java/org/apache/kafka/common/serialization/Serdes.java index 600d046a61c3b..a6baa921b8bec 100644 --- a/clients/src/main/java/org/apache/kafka/common/serialization/Serdes.java +++ b/clients/src/main/java/org/apache/kafka/common/serialization/Serdes.java @@ -147,7 +147,7 @@ public ListSerde() { super(new ListSerializer<>(), new ListDeserializer<>()); } - public > ListSerde(Class listClass, Serde serde) { + public >ListSerde(Class listClass, Serde serde) { super(new ListSerializer<>(serde.serializer()), new ListDeserializer<>(listClass, serde.deserializer())); } diff --git a/clients/src/main/java/org/apache/kafka/common/utils/AppInfoParser.java b/clients/src/main/java/org/apache/kafka/common/utils/AppInfoParser.java index 9148e82418ca9..a1ec309421678 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/AppInfoParser.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/AppInfoParser.java @@ -126,7 +126,9 @@ private static void unregisterMetrics(Metrics metrics, String clientId) { public interface AppInfoMBean { String getVersion(); + String getCommitId(); + Long getStartTimeMs(); } diff --git a/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java b/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java index 0c8876ebd6a6a..ad8f3652b956f 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java @@ -55,7 +55,7 @@ public class SecurityUtils { NAME_TO_OPERATIONS.put(operationName.toUpperCase(Locale.ROOT), operation); } for (AclPermissionType permissionType : AclPermissionType.values()) { - String permissionName = toPascalCase(permissionType.name()); + String permissionName = toPascalCase(permissionType.name()); NAME_TO_PERMISSION_TYPES.put(permissionName, permissionType); NAME_TO_PERMISSION_TYPES.put(permissionName.toUpperCase(Locale.ROOT), permissionType); } diff --git a/clients/src/main/java/org/apache/kafka/common/utils/Time.java b/clients/src/main/java/org/apache/kafka/common/utils/Time.java index b2277d24bac07..e6b642e0bd830 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/Time.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/Time.java @@ -100,7 +100,7 @@ default Timer timer(Duration timeout) { default T waitForFuture( Future future, long deadlineNs - ) throws TimeoutException, InterruptedException, ExecutionException { + ) throws TimeoutException, InterruptedException, ExecutionException { TimeoutException timeoutException = null; while (true) { long nowNs = nanoseconds(); diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/ByteUtils.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/ByteUtils.java index 9a20b8cb91fa2..28b472ba98a55 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/ByteUtils.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/ByteUtils.java @@ -205,7 +205,7 @@ public static void writeUnsignedIntLE(byte[] buffer, int offset, int value) { buffer[offset] = (byte) value; buffer[offset + 1] = (byte) (value >>> 8); buffer[offset + 2] = (byte) (value >>> 16); - buffer[offset + 3] = (byte) (value >>> 24); + buffer[offset + 3] = (byte) (value >>> 24); } /** @@ -354,13 +354,13 @@ public static long readVarlong(InputStream in) throws IOException { * * @throws IllegalArgumentException if variable-length value does not terminate after 10 bytes have been read */ - public static long readVarlong(ByteBuffer buffer) { - long raw = readUnsignedVarlong(buffer); + public static long readVarlong(ByteBuffer buffer) { + long raw = readUnsignedVarlong(buffer); return (raw >>> 1) ^ -(raw & 1); } // visible for testing - static long readUnsignedVarlong(ByteBuffer buffer) { + static long readUnsignedVarlong(ByteBuffer buffer) { long value = 0L; int i = 0; long b; diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/Checksums.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/Checksums.java index 908d5cde0ac68..218ec0f2eccd0 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/Checksums.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/Checksums.java @@ -66,7 +66,7 @@ public static void update(Checksum checksum, ByteBuffer buffer, int offset, int } } } - + public static void updateInt(Checksum checksum, int input) { checksum.update((byte) (input >> 24)); checksum.update((byte) (input >> 16)); diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/ChunkedBytesStream.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/ChunkedBytesStream.java index c3537d27a228c..d0ea658899f1f 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/ChunkedBytesStream.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/ChunkedBytesStream.java @@ -213,7 +213,7 @@ public int read(byte[] b, int off, int len) throws IOException { } int n = 0; - for (; ; ) { + for (;;) { int nread = read1(b, off + n, len - n); if (nread <= 0) return (n == 0) ? nread : n; diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollection.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollection.java index 284e1055b41f9..16198d8d10175 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollection.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollection.java @@ -57,9 +57,13 @@ public class ImplicitLinkedHashCollection iter = iterator(); iter.hasNext(); ) { + for (Iterator iter = iterator(); iter.hasNext();) { Element element = iter.next(); iter.remove(); int newSlot = addInternal(element, newElements); diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/KafkaThread.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/KafkaThread.java index b1a591fde5bf9..cb8419848052a 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/KafkaThread.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/KafkaThread.java @@ -25,7 +25,7 @@ public class KafkaThread extends Thread { private static final Logger log = LoggerFactory.getLogger(KafkaThread.class); - + public static KafkaThread daemon(final String name, Runnable runnable) { return new KafkaThread(name, runnable, true); } diff --git a/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java b/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java index 450e604bf3d76..eba40ea2e0424 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java @@ -22,7 +22,7 @@ public final class OperatingSystem { private OperatingSystem() { } - + public static final String NAME; public static final boolean IS_WINDOWS; diff --git a/clients/src/main/java/org/apache/kafka/server/authorizer/Authorizer.java b/clients/src/main/java/org/apache/kafka/server/authorizer/Authorizer.java index 68f1aaf678d1d..63e138f498d55 100644 --- a/clients/src/main/java/org/apache/kafka/server/authorizer/Authorizer.java +++ b/clients/src/main/java/org/apache/kafka/server/authorizer/Authorizer.java @@ -202,14 +202,14 @@ op, new ResourcePattern(resourceType, "hardcode", PatternType.LITERAL), EnumMap> denyPatterns = new EnumMap<>(PatternType.class) {{ - put(PatternType.LITERAL, new HashSet<>()); - put(PatternType.PREFIXED, new HashSet<>()); - }}; + put(PatternType.LITERAL, new HashSet<>()); + put(PatternType.PREFIXED, new HashSet<>()); + }}; EnumMap> allowPatterns = new EnumMap<>(PatternType.class) {{ - put(PatternType.LITERAL, new HashSet<>()); - put(PatternType.PREFIXED, new HashSet<>()); - }}; + put(PatternType.LITERAL, new HashSet<>()); + put(PatternType.PREFIXED, new HashSet<>()); + }}; boolean hasWildCardAllow = false; diff --git a/clients/src/test/java/org/apache/kafka/clients/ClientUtilsTest.java b/clients/src/test/java/org/apache/kafka/clients/ClientUtilsTest.java index fac5cd8ee0934..79880b7160720 100644 --- a/clients/src/test/java/org/apache/kafka/clients/ClientUtilsTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/ClientUtilsTest.java @@ -76,7 +76,7 @@ public void testParseAndValidateAddressesWithReverseLookup() { inetAddress.when(() -> InetAddress.getAllByName(hostname)) .thenReturn(new InetAddress[]{inetAddress1, inetAddress2}); try (MockedConstruction inetSocketAddress = - mockConstruction( + mockConstruction( InetSocketAddress.class, (mock, context) -> { when(mock.isUnresolved()).thenReturn(false); @@ -140,7 +140,7 @@ public void testInvalidPort() { @Test public void testOnlyBadHostname() { try (MockedConstruction inetSocketAddress = - mockConstruction( + mockConstruction( InetSocketAddress.class, (mock, context) -> when(mock.isUnresolved()).thenReturn(true) ) diff --git a/clients/src/test/java/org/apache/kafka/clients/ClusterConnectionStatesTest.java b/clients/src/test/java/org/apache/kafka/clients/ClusterConnectionStatesTest.java index 9812f490ddd7f..724ebfb0cab92 100644 --- a/clients/src/test/java/org/apache/kafka/clients/ClusterConnectionStatesTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/ClusterConnectionStatesTest.java @@ -439,7 +439,7 @@ public void testSkipLastAttemptedIp() throws UnknownHostException { InetAddress addr2 = connectionStates.currentAddress(nodeId1); assertNotSame(addr1, addr2); } - + private void setupMultipleIPs() { this.connectionStates = new ClusterConnectionStates(reconnectBackoffMs, reconnectBackoffMax, connectionSetupTimeoutMs, connectionSetupTimeoutMaxMs, new LogContext(), this.multipleIPHostResolver); diff --git a/clients/src/test/java/org/apache/kafka/clients/CommonClientConfigsTest.java b/clients/src/test/java/org/apache/kafka/clients/CommonClientConfigsTest.java index b9c8aacc9e213..62abd60304ddc 100644 --- a/clients/src/test/java/org/apache/kafka/clients/CommonClientConfigsTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/CommonClientConfigsTest.java @@ -97,17 +97,17 @@ public void testExponentialBackoffDefaults() { defaultConf.getLong(CommonClientConfigs.RECONNECT_BACKOFF_MAX_MS_CONFIG)); TestConfig bothSetConfig = new TestConfig(new HashMap() {{ - put(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG, "123"); - put(CommonClientConfigs.RECONNECT_BACKOFF_MAX_MS_CONFIG, "12345"); - }}); + put(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG, "123"); + put(CommonClientConfigs.RECONNECT_BACKOFF_MAX_MS_CONFIG, "12345"); + }}); assertEquals(Long.valueOf(123L), bothSetConfig.getLong(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG)); assertEquals(Long.valueOf(12345L), bothSetConfig.getLong(CommonClientConfigs.RECONNECT_BACKOFF_MAX_MS_CONFIG)); TestConfig reconnectBackoffSetConf = new TestConfig(new HashMap() {{ - put(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG, "123"); - }}); + put(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG, "123"); + }}); assertEquals(Long.valueOf(123L), reconnectBackoffSetConf.getLong(CommonClientConfigs.RECONNECT_BACKOFF_MS_CONFIG)); assertEquals(Long.valueOf(123L), diff --git a/clients/src/test/java/org/apache/kafka/clients/FetchSessionHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/FetchSessionHandlerTest.java index 1c50666c6afd0..0478979192ee3 100644 --- a/clients/src/test/java/org/apache/kafka/clients/FetchSessionHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/FetchSessionHandlerTest.java @@ -371,8 +371,8 @@ public void testIncrementalPartitionRemoval() { // A FETCH_SESSION_ID_NOT_FOUND response triggers us to close the session. // The next request is a session establishing FULL request. - FetchResponse resp2 = FetchResponse.of(Errors.FETCH_SESSION_ID_NOT_FOUND, 0, INVALID_SESSION_ID, - respMap(), + FetchResponse resp2 = FetchResponse.of(Errors.FETCH_SESSION_ID_NOT_FOUND, 0, INVALID_SESSION_ID, + respMap(), List.of()); handler.handleResponse(resp2, version); diff --git a/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java b/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java index 9ac7519100465..74bffa67df541 100644 --- a/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java @@ -325,7 +325,7 @@ public void testClusterListenerGetsNotifiedOfUpdate() { public void testRequestUpdate() { assertFalse(metadata.updateRequested()); - int[] epochs = {42, 42, 41, 41, 42, 43, 43, 42, 41, 44}; + int[] epochs = {42, 42, 41, 41, 42, 43, 43, 42, 41, 44}; boolean[] updateResult = {true, false, false, false, false, true, false, false, false, true}; TopicPartition tp = new TopicPartition("topic", 0); @@ -643,11 +643,11 @@ public void testPartialMetadataUpdate() { Time time = new MockTime(); metadata = new Metadata(refreshBackoffMs, refreshBackoffMaxMs, metadataExpireMs, new LogContext(), new ClusterResourceListeners()) { - @Override - protected MetadataRequest.Builder newMetadataRequestBuilderForNewTopics() { - return newMetadataRequestBuilder(); - } - }; + @Override + protected MetadataRequest.Builder newMetadataRequestBuilderForNewTopics() { + return newMetadataRequestBuilder(); + } + }; assertFalse(metadata.updateRequested()); @@ -918,11 +918,11 @@ public void testMetadataMerge() { final AtomicReference> retainTopics = new AtomicReference<>(new HashSet<>()); metadata = new Metadata(refreshBackoffMs, refreshBackoffMaxMs, metadataExpireMs, new LogContext(), new ClusterResourceListeners()) { - @Override - protected boolean retainTopic(String topic, boolean isInternal, long nowMs) { - return retainTopics.get().contains(topic); - } - }; + @Override + protected boolean retainTopic(String topic, boolean isInternal, long nowMs) { + return retainTopics.get().contains(topic); + } + }; // Initialize a metadata instance with two topic variants "old" and "keep". Both will be retained. String oldClusterId = "oldClusterId"; diff --git a/clients/src/test/java/org/apache/kafka/clients/MockClient.java b/clients/src/test/java/org/apache/kafka/clients/MockClient.java index fca0a9ca2121b..055e95c89b64a 100644 --- a/clients/src/test/java/org/apache/kafka/clients/MockClient.java +++ b/clients/src/test/java/org/apache/kafka/clients/MockClient.java @@ -224,7 +224,7 @@ public void send(ClientRequest request, long now) { // Check if the request is directed to a node with a pending authentication error. for (Iterator> authErrorIter = - pendingAuthenticationErrors.entrySet().iterator(); authErrorIter.hasNext(); ) { + pendingAuthenticationErrors.entrySet().iterator(); authErrorIter.hasNext();) { Map.Entry entry = authErrorIter.next(); Node node = entry.getKey(); long backoffMs = entry.getValue(); @@ -681,6 +681,7 @@ public void update(Time time, MetadataUpdate update) { private static class StaticMetadataUpdater extends NoOpMetadataUpdater { private final List nodes; + public StaticMetadataUpdater(List nodes) { this.nodes = nodes; } diff --git a/clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java b/clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java index 948834cff3456..505bff6ea92b8 100644 --- a/clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java @@ -303,7 +303,7 @@ public void testInflightRequestsDuringRebootstrap() { long rebootstrapTriggerMs = 1000; int defaultRequestTimeoutMs = 5000; AtomicInteger rebootstrapCount = new AtomicInteger(); - Metadata metadata = new Metadata(refreshBackoffMs, refreshBackoffMs, 5000, new LogContext(), new ClusterResourceListeners()) { + Metadata metadata = new Metadata(refreshBackoffMs, refreshBackoffMs, 5000, new LogContext(), new ClusterResourceListeners()) { @Override public synchronized void rebootstrap() { super.rebootstrap(); @@ -1454,10 +1454,10 @@ public void onComplete(ClientResponse response) { @Test public void testStickyNodeDoesNotUseStaleIpOnReconnect() throws UnknownHostException { String staleIp = "10.200.20.100"; - String freshIp = "10.200.20.200"; + String freshIp = "10.200.20.200"; // Both nodes share the same id to simulate a broker whose IP changed (e.g. pod replacement). - Node staleNode = new Node(0, staleIp, 9092); - Node freshNode = new Node(0, freshIp, 9092); + Node staleNode = new Node(0, staleIp, 9092); + Node freshNode = new Node(0, freshIp, 9092); List connectAttempts = new ArrayList<>(); // boolean array so the anonymous subclass can mutate it diff --git a/clients/src/test/java/org/apache/kafka/clients/NodeApiVersionsTest.java b/clients/src/test/java/org/apache/kafka/clients/NodeApiVersionsTest.java index 8b22bc7963dee..dc21aa3324565 100644 --- a/clients/src/test/java/org/apache/kafka/clients/NodeApiVersionsTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/NodeApiVersionsTest.java @@ -155,7 +155,7 @@ public void testUsableVersionLatestVersions(ApiMessageType.ListenerType scope) { .setMinVersion((short) 0) .setMaxVersion((short) 1)); NodeApiVersions versions = new NodeApiVersions(versionList, Collections.emptyList()); - for (ApiKeys apiKey: ApiKeys.apisForListener(scope)) { + for (ApiKeys apiKey : ApiKeys.apisForListener(scope)) { assertEquals(apiKey.latestVersion(), versions.latestUsableVersion(apiKey)); } } diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java b/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java index ca1c5e9be30d6..3a66e5864e78d 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java @@ -721,7 +721,7 @@ private static MetadataResponse prepareMetadataResponse(Cluster cluster, Errors for (String topic : cluster.topics()) { List pms = new ArrayList<>(); for (PartitionInfo pInfo : cluster.availablePartitionsForTopic(topic)) { - MetadataResponsePartition pm = new MetadataResponsePartition() + MetadataResponsePartition pm = new MetadataResponsePartition() .setErrorCode(partitionError.code()) .setPartitionIndex(pInfo.partition()) .setLeaderId(pInfo.leader().id()) @@ -1565,7 +1565,7 @@ public void testDescribeTopicPartitionsApiWithAuthorizedOps() throws ExecutionEx try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); String topicName0 = "test-0"; - Uuid topicId = Uuid.randomUuid(); + Uuid topicId = Uuid.randomUuid(); int authorisedOperations = Utils.to32BitField(Set.of(AclOperation.DESCRIBE.code(), AclOperation.ALTER.code())); env.kafkaClient().prepareResponse( @@ -1602,7 +1602,7 @@ public void testDescribeTopicPartitionsApiWithoutAuthorizedOps() throws Executio try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); String topicName0 = "test-0"; - Uuid topicId = Uuid.randomUuid(); + Uuid topicId = Uuid.randomUuid(); int authorisedOperations = Utils.to32BitField(Set.of(AclOperation.DESCRIBE.code(), AclOperation.ALTER.code())); env.kafkaClient().prepareResponse( @@ -2052,7 +2052,7 @@ public void testDeleteAcls() throws Exception { } @Test - public void testElectLeaders() throws Exception { + public void testElectLeaders() throws Exception { TopicPartition topic1 = new TopicPartition("topic", 0); TopicPartition topic2 = new TopicPartition("topic", 2); try (AdminClientUnitTestEnv env = mockClientEnv()) { @@ -4391,8 +4391,8 @@ public void testDescribeConsumerGroups() throws Exception { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); @@ -5255,7 +5255,7 @@ public void testBatchedListStreamsGroupOffsetsWithNoOffsetFetchBatching() throws private Map batchedListConsumerGroupOffsetsSpec() { Set groupAPartitions = Collections.singleton(new TopicPartition("A", 1)); - Set groupBPartitions = Collections.singleton(new TopicPartition("B", 2)); + Set groupBPartitions = Collections.singleton(new TopicPartition("B", 2)); ListConsumerGroupOffsetsSpec groupASpec = new ListConsumerGroupOffsetsSpec().topicPartitions(groupAPartitions); ListConsumerGroupOffsetsSpec groupBSpec = new ListConsumerGroupOffsetsSpec().topicPartitions(groupBPartitions); @@ -5264,7 +5264,7 @@ private Map batchedListConsumerGroupOffset private Map batchedListStreamsGroupOffsetsSpec() { Set groupAPartitions = Collections.singleton(new TopicPartition("A", 1)); - Set groupBPartitions = Collections.singleton(new TopicPartition("B", 2)); + Set groupBPartitions = Collections.singleton(new TopicPartition("B", 2)); ListStreamsGroupOffsetsSpec groupASpec = new ListStreamsGroupOffsetsSpec().topicPartitions(groupAPartitions); ListStreamsGroupOffsetsSpec groupBSpec = new ListStreamsGroupOffsetsSpec().topicPartitions(groupBPartitions); @@ -5548,7 +5548,7 @@ public void testDeleteConsumerGroupsWithOlderBroker() throws Exception { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create(asList(findCoordinatorV3, describeGroups))); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); @@ -5644,7 +5644,7 @@ public void testDeleteStreamsGroupsWithOlderBroker() throws Exception { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create(asList(findCoordinatorV3, describeGroups))); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareOldFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); @@ -6261,7 +6261,7 @@ public void testDeleteConsumerGroupOffsetsFindCoordinatorNonRetriableErrors() th env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); env.kafkaClient().prepareResponse( - prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); + prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); final DeleteConsumerGroupOffsetsResult errorResult = env.adminClient() .deleteConsumerGroupOffsets(GROUP_ID, Stream.of(tp1).collect(Collectors.toSet())); @@ -6281,7 +6281,7 @@ public void testDeleteStreamsGroupOffsetsFindCoordinatorNonRetriableErrors() thr env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); env.kafkaClient().prepareResponse( - prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); + prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); final DeleteStreamsGroupOffsetsResult errorResult = env.adminClient() .deleteStreamsGroupOffsets(GROUP_ID, Stream.of(tp1).collect(Collectors.toSet())); @@ -6297,8 +6297,8 @@ public void testDescribeStreamsGroups() throws Exception { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); StreamsGroupDescribeResponseData data = new StreamsGroupDescribeResponseData(); @@ -6700,15 +6700,15 @@ public void testListStreamsGroupsWithStatesOlderBrokerVersion() { TestUtils.assertFutureThrows(UnsupportedVersionException.class, result.all()); } } - + @Test public void testDescribeShareGroups() throws Exception { try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(mockCluster(1, 0))) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); ShareGroupDescribeResponseData data = new ShareGroupDescribeResponseData(); @@ -7117,8 +7117,8 @@ public void testDescribeClassicGroups() throws Exception { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); // Retriable FindCoordinatorResponse errors should be retried - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); - env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_NOT_AVAILABLE, Node.noNode())); + env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.COORDINATOR_LOAD_IN_PROGRESS, Node.noNode())); env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.NONE, env.cluster().controller())); DescribeGroupsResponseData data = new DescribeGroupsResponseData(); @@ -7283,12 +7283,12 @@ public void testDescribeMultipleClassicGroups() { } @Test - public void testIncrementalAlterConfigs() throws Exception { + public void testIncrementalAlterConfigs() throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); //test error scenarios - IncrementalAlterConfigsResponseData responseData = new IncrementalAlterConfigsResponseData(); + IncrementalAlterConfigsResponseData responseData = new IncrementalAlterConfigsResponseData(); responseData.responses().add(new AlterConfigsResourceResponse() .setResourceName("") .setResourceType(ConfigResource.Type.BROKER.id()) @@ -7349,7 +7349,7 @@ public void testIncrementalAlterConfigs() throws Exception { TestUtils.assertFutureThrows(InvalidConfigurationException.class, result.values().get(groupResource)); // Test a call where there are no errors. - responseData = new IncrementalAlterConfigsResponseData(); + responseData = new IncrementalAlterConfigsResponseData(); responseData.responses().add(new AlterConfigsResourceResponse() .setResourceName("") .setResourceType(ConfigResource.Type.BROKER.id()) @@ -7377,12 +7377,12 @@ public void testIncrementalAlterConfigs() throws Exception { } @Test - public void testIncrementalAlterConfigsToController() throws Exception { + public void testIncrementalAlterConfigsToController() throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv(AdminClientConfig.BOOTSTRAP_CONTROLLERS_CONFIG, "dummy")) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); //test NOT_CONTROLLER error scenarios - IncrementalAlterConfigsResponseData responseData = new IncrementalAlterConfigsResponseData(); + IncrementalAlterConfigsResponseData responseData = new IncrementalAlterConfigsResponseData(); responseData.responses().add(new AlterConfigsResourceResponse() .setResourceName("") .setResourceType(ConfigResource.Type.BROKER.id()) @@ -7401,7 +7401,7 @@ public void testIncrementalAlterConfigsToController() throws Exception { true) ); - IncrementalAlterConfigsResponseData responseData2 = new IncrementalAlterConfigsResponseData(); + IncrementalAlterConfigsResponseData responseData2 = new IncrementalAlterConfigsResponseData(); responseData2.responses().add(new AlterConfigsResourceResponse() .setResourceName("") .setResourceType(ConfigResource.Type.BROKER.id()) @@ -8156,7 +8156,7 @@ public void testAlterConsumerGroupOffsetsNonRetriableErrors() throws Exception { env.kafkaClient().prepareResponse(prepareOffsetCommitResponse(tp1, error)); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); AlterConsumerGroupOffsetsResult errorResult = env.adminClient() .alterConsumerGroupOffsets(GROUP_ID, offsets); @@ -8184,7 +8184,7 @@ public void testAlterStreamsGroupOffsetsNonRetriableErrors() throws Exception { env.kafkaClient().prepareResponse(prepareOffsetCommitResponse(tp1, error)); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); AlterStreamsGroupOffsetsResult errorResult = env.adminClient() .alterStreamsGroupOffsets(GROUP_ID, offsets); @@ -8215,7 +8215,7 @@ public void testAlterConsumerGroupOffsetsFindCoordinatorRetriableErrors() throws prepareOffsetCommitResponse(tp1, Errors.NONE)); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); final AlterConsumerGroupOffsetsResult result = env.adminClient() .alterConsumerGroupOffsets(GROUP_ID, offsets); @@ -8245,7 +8245,7 @@ public void testAlterStreamsGroupOffsetsFindCoordinatorRetriableErrors() throws prepareOffsetCommitResponse(tp1, Errors.NONE)); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); final AlterStreamsGroupOffsetsResult result = env.adminClient() .alterStreamsGroupOffsets(GROUP_ID, offsets); @@ -8264,10 +8264,10 @@ public void testAlterConsumerGroupOffsetsFindCoordinatorNonRetriableErrors() thr env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); env.kafkaClient().prepareResponse( - prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); + prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); final AlterConsumerGroupOffsetsResult errorResult = env.adminClient() .alterConsumerGroupOffsets(GROUP_ID, offsets); @@ -8286,10 +8286,10 @@ public void testAlterStreamsGroupOffsetsFindCoordinatorNonRetriableErrors() thro env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); env.kafkaClient().prepareResponse( - prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); + prepareFindCoordinatorResponse(Errors.GROUP_AUTHORIZATION_FAILED, Node.noNode())); Map offsets = new HashMap<>(); - offsets.put(tp1, new OffsetAndMetadata(123L)); + offsets.put(tp1, new OffsetAndMetadata(123L)); final AlterStreamsGroupOffsetsResult errorResult = env.adminClient() .alterStreamsGroupOffsets(GROUP_ID, offsets); @@ -8540,9 +8540,9 @@ public void testListOffsetsMaxTimestampUnsupportedMultipleOffsetSpec() throws Ex new ListOffsetsResponse(responseData), node); ListOffsetsResult result = env.adminClient().listOffsets(new HashMap<>() {{ - put(tp0, OffsetSpec.maxTimestamp()); - put(tp1, OffsetSpec.latest()); - }}); + put(tp0, OffsetSpec.maxTimestamp()); + put(tp1, OffsetSpec.latest()); + }}); TestUtils.assertFutureThrows(UnsupportedVersionException.class, result.partitionResult(tp0)); @@ -8802,8 +8802,8 @@ public void testListOffsetsEarliestPendingUploadSpecSpecMinVersion() throws Exce private Map makeTestFeatureUpdates() { return Map.of( - "test_feature_1", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), - "test_feature_2", new FeatureUpdate((short) 3, FeatureUpdate.UpgradeType.SAFE_DOWNGRADE)); + "test_feature_1", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), + "test_feature_2", new FeatureUpdate((short) 3, FeatureUpdate.UpgradeType.SAFE_DOWNGRADE)); } private void testUpdateFeatures(Map featureUpdates, @@ -8872,8 +8872,8 @@ public void testUpdateFeaturesHandleNotControllerException(short version) throws env.cluster().nodeById(controllerId)); final KafkaFuture future = env.adminClient().updateFeatures( Map.of( - "test_feature_1", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), - "test_feature_2", new FeatureUpdate((short) 3, FeatureUpdate.UpgradeType.SAFE_DOWNGRADE)), + "test_feature_1", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), + "test_feature_2", new FeatureUpdate((short) 3, FeatureUpdate.UpgradeType.SAFE_DOWNGRADE)), new UpdateFeaturesOptions().timeoutMs(10000) ).all(); future.get(); @@ -8895,8 +8895,8 @@ public void testUpdateFeaturesShouldFailRequestForInvalidFeatureName() { assertThrows( IllegalArgumentException.class, () -> env.adminClient().updateFeatures( - Map.of("feature", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), - "", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE)))); + Map.of("feature", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE), + "", new FeatureUpdate((short) 2, FeatureUpdate.UpgradeType.UPGRADE)))); } } @@ -8904,7 +8904,7 @@ public void testUpdateFeaturesShouldFailRequestForInvalidFeatureName() { public void testUpdateFeaturesShouldFailRequestInClientWhenDowngradeFlagIsNotSetDuringDeletion() { assertThrows( IllegalArgumentException.class, - () -> new FeatureUpdate((short) 0, FeatureUpdate.UpgradeType.UPGRADE)); + () -> new FeatureUpdate((short) 0, FeatureUpdate.UpgradeType.UPGRADE)); } @Test @@ -9840,7 +9840,7 @@ public void testAlterUserScramCredentials() { AlterUserScramCredentialsResponseData responseData = new AlterUserScramCredentialsResponseData(); responseData.setResults(Stream.of(user0Name, user1Name, user2Name).map(u -> new AlterUserScramCredentialsResponseData.AlterUserScramCredentialsResult() - .setUser(u).setErrorCode(Errors.NONE.code())).collect(Collectors.toList())); + .setUser(u).setErrorCode(Errors.NONE.code())).collect(Collectors.toList())); env.kafkaClient().prepareResponse(new AlterUserScramCredentialsResponse(responseData)); @@ -10671,7 +10671,7 @@ public void testClientInstanceId() { ClientTelemetryReporter clientTelemetryReporter = mock(ClientTelemetryReporter.class); clientTelemetryReporter.configure(any()); mockedCommonClientConfigs.when(() -> CommonClientConfigs.telemetryReporter(anyString(), any())).thenReturn(Optional.of(clientTelemetryReporter)); - + try (AdminClientUnitTestEnv env = mockClientEnv(AdminClientConfig.ENABLE_METRICS_PUSH_CONFIG, "true")) { ClientTelemetrySender clientTelemetrySender = mock(ClientTelemetrySender.class); Uuid expectedUuid = Uuid.randomUuid(); @@ -11006,7 +11006,7 @@ boolean callHasExpired(KafkaAdminClient.Call call) { } @ParameterizedTest - @CsvSource({ "false, false", "false, true", "true, false", "true, true" }) + @CsvSource({"false, false", "false, true", "true, false", "true, true"}) public void testAddRaftVoterRequest(boolean fail, boolean sendClusterId) throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv(AdminClientConfig.BOOTSTRAP_CONTROLLERS_CONFIG, "dummy")) { AddRaftVoterResponseData responseData = new AddRaftVoterResponseData(); @@ -11092,7 +11092,7 @@ public void testAddRaftVoterRequest(boolean fail, boolean sendClusterId) throws } @ParameterizedTest - @CsvSource({ "false, false", "false, true", "true, false", "true, true" }) + @CsvSource({"false, false", "false, true", "true, false", "true, true"}) public void testRemoveRaftVoterRequest(boolean fail, boolean sendClusterId) throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv(AdminClientConfig.BOOTSTRAP_CONTROLLERS_CONFIG, "dummy")) { RemoveRaftVoterResponseData responseData = new RemoveRaftVoterResponseData(); diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/MockAdminClient.java b/clients/src/test/java/org/apache/kafka/clients/admin/MockAdminClient.java index bb460855df01a..35c6700944ed5 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/MockAdminClient.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/MockAdminClient.java @@ -698,7 +698,7 @@ public synchronized ExpireDelegationTokenResult expireDelegationToken(byte[] hma if (tokenFound) { allTokens.removeAll(tokensToRemove); future.complete(expiryTimestamp); - } else { + } else { future.completeExceptionally(new DelegationTokenNotFoundException("")); } @@ -900,7 +900,7 @@ public synchronized AlterConfigsResult incrementalAlterConfigs( AlterConfigsOptions options) { Map> futures = new HashMap<>(); for (Map.Entry> entry : - configs.entrySet()) { + configs.entrySet()) { ConfigResource resource = entry.getKey(); KafkaFutureImpl future = new KafkaFutureImpl<>(); futures.put(resource, future); @@ -1145,7 +1145,7 @@ public synchronized AlterPartitionReassignmentsResult alterPartitionReassignment AlterPartitionReassignmentsOptions options) { Map> futures = new HashMap<>(); for (Map.Entry> entry : - newReassignments.entrySet()) { + newReassignments.entrySet()) { TopicPartition partition = entry.getKey(); Optional newReassignment = entry.getValue(); KafkaFutureImpl future = new KafkaFutureImpl<>(); @@ -1474,7 +1474,7 @@ public synchronized DeleteShareGroupsResult deleteShareGroups(Collection public synchronized DescribeStreamsGroupsResult describeStreamsGroups(Collection groupIds, DescribeStreamsGroupsOptions options) { throw new UnsupportedOperationException("Not implemented yet"); } - + @Override public synchronized DescribeClassicGroupsResult describeClassicGroups(Collection groupIds, DescribeClassicGroupsOptions options) { throw new UnsupportedOperationException("Not implemented yet"); diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/internals/AdminApiDriverTest.java b/clients/src/test/java/org/apache/kafka/clients/admin/internals/AdminApiDriverTest.java index c4ffc657914cd..18b30cdbf45f0 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/internals/AdminApiDriverTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/internals/AdminApiDriverTest.java @@ -552,7 +552,7 @@ private static void assertMappedKey( TestContext context, String key, Integer expectedBrokerId - ) { + ) { OptionalInt brokerIdOpt = context.driver.keyToBrokerId(key); assertEquals(OptionalInt.of(expectedBrokerId), brokerIdOpt); } diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeConsumerGroupsHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeConsumerGroupsHandlerTest.java index 8b92b429ac4b1..5bd5b40974b6f 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeConsumerGroupsHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeConsumerGroupsHandlerTest.java @@ -83,7 +83,7 @@ public class DescribeConsumerGroupsHandlerTest { private final Node coordinator = new Node(1, "host", 1234); private final Set tps = Set.of( new TopicPartition("foo", 0), - new TopicPartition("bar", 1) + new TopicPartition("bar", 1) ); @ParameterizedTest diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeProducersHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeProducersHandlerTest.java index 3a2ab50624918..58df7f2d412ff 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeProducersHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/internals/DescribeProducersHandlerTest.java @@ -62,7 +62,7 @@ private DescribeProducersHandler newHandler( new LogContext() ); } - + @Test public void testBrokerIdSetInOptions() { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/ConsumerPartitionAssignorTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/ConsumerPartitionAssignorTest.java index c08c7766ec1c7..234d6f80f84c6 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/ConsumerPartitionAssignorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/ConsumerPartitionAssignorTest.java @@ -78,7 +78,7 @@ public void shouldThrowKafkaExceptionOnAssignorNotFound() { public void shouldInstantiateFromClassType() { List classTypes = initConsumerConfigWithClassTypes(Collections.singletonList(StickyAssignor.class)) - .getList(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG); + .getList(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG); List assignors = getAssignorInstances(classTypes, Collections.emptyMap()); assertInstanceOf(StickyAssignor.class, assignors.get(0)); } @@ -99,7 +99,7 @@ public void shouldInstantiateFromListOfClassTypes() { public void shouldThrowKafkaExceptionOnListWithNonAssignorClassType() { List classTypes = initConsumerConfigWithClassTypes(Arrays.asList(StickyAssignor.class, String.class)) - .getList(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG); + .getList(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG); assertThrows(KafkaException.class, () -> getAssignorInstances(classTypes, Collections.emptyMap())); } diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java index da4a799fa5e70..e0f6abae7c190 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java @@ -536,6 +536,7 @@ private StringDeserializer mockErrorDeserializer(int recordNumber) { int recordIndex = recordNumber - 1; return new StringDeserializer() { int i = 0; + @Override public String deserialize(String topic, byte[] data) { if (i == recordIndex) { @@ -878,7 +879,7 @@ public void testInterceptorConstructorConfigurationWithExceptionShouldCloseRemai Properties props = new Properties(); props.setProperty(ConsumerConfig.GROUP_PROTOCOL_CONFIG, groupProtocol.name()); props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); - props.setProperty(ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, + props.setProperty(ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, CloseInterceptor.class.getName() + "," + MockConsumerInterceptor.class.getName()); MockConsumerInterceptor.setThrowOnConfigExceptionThreshold(targetInterceptor); @@ -917,7 +918,7 @@ public void testPause(GroupProtocol groupProtocol) { @ParameterizedTest @EnumSource(GroupProtocol.class) - public void testConsumerJmxPrefix(GroupProtocol groupProtocol) throws Exception { + public void testConsumerJmxPrefix(GroupProtocol groupProtocol) throws Exception { Map config = new HashMap<>(); config.put(ConsumerConfig.GROUP_PROTOCOL_CONFIG, groupProtocol.name()); config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); @@ -1773,7 +1774,7 @@ public void testSubscriptionChangesWithAutoCommitDisabled(GroupProtocol groupPro assertEquals(Set.of(tp0), consumer.assignment()); // the auto commit is disabled, so no offset commit request should be sent - for (ClientRequest req: client.requests()) + for (ClientRequest req : client.requests()) assertNotSame(ApiKeys.OFFSET_COMMIT, req.requestBuilder().apiKey()); // subscription change @@ -1784,7 +1785,7 @@ public void testSubscriptionChangesWithAutoCommitDisabled(GroupProtocol groupPro assertEquals(Collections.emptySet(), consumer.assignment()); // the auto commit is disabled, so no offset commit request should be sent - for (ClientRequest req: client.requests()) + for (ClientRequest req : client.requests()) assertNotSame(ApiKeys.OFFSET_COMMIT, req.requestBuilder().apiKey()); client.requests().clear(); @@ -3611,7 +3612,7 @@ public void testPollTimeMetrics(GroupProtocol groupProtocol) { @ParameterizedTest @EnumSource(GroupProtocol.class) -public void testPollIdleRatio(GroupProtocol groupProtocol) { + public void testPollIdleRatio(GroupProtocol groupProtocol) { ConsumerMetadata metadata = createMetadata(subscription); MockClient client = new MockClient(time, metadata); initMetadata(client, Map.of(topic, 1)); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaShareConsumerMetricsTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaShareConsumerMetricsTest.java index 502cee9ae624e..aee61a5b804da 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaShareConsumerMetricsTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaShareConsumerMetricsTest.java @@ -372,6 +372,7 @@ private ShareConsumerConfig newConsumerConfig(String groupId, return new ShareConsumerConfig(configs); } + private void initMetadata(MockClient mockClient, Map partitionCounts) { Map metadataIds = new HashMap<>(); for (String name : partitionCounts.keySet()) { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/MockConsumerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/MockConsumerTest.java index 6968b45a57b66..77ab306b45b53 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/MockConsumerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/MockConsumerTest.java @@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class MockConsumerTest { - + private final MockConsumer consumer = new MockConsumer<>(AutoOffsetResetStrategy.EARLIEST.name()); @Test @@ -187,7 +187,7 @@ public void onPartitionsAssigned(Collection partitions) { assertEquals(1, revoked.size()); assertTrue(revoked.contains(topicPartitionList.get(0))); } - + @Test public void testRe2JPatternSubscription() { assertThrows(IllegalArgumentException.class, () -> consumer.subscribe((SubscriptionPattern) null)); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/OffsetAndMetadataTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/OffsetAndMetadataTest.java index c1a13c054eea4..c5be891d8b361 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/OffsetAndMetadataTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/OffsetAndMetadataTest.java @@ -46,7 +46,7 @@ public void testSerializationRoundtrip() throws IOException, ClassNotFoundExcept } private void checkSerde(OffsetAndMetadata offsetAndMetadata) throws IOException, ClassNotFoundException { - byte[] bytes = Serializer.serialize(offsetAndMetadata); + byte[] bytes = Serializer.serialize(offsetAndMetadata); OffsetAndMetadata deserialized = (OffsetAndMetadata) Serializer.deserialize(bytes); assertEquals(offsetAndMetadata, deserialized); } diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/RangeAssignorTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/RangeAssignorTest.java index 5737553dc1a49..a04ebb575cdcf 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/RangeAssignorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/RangeAssignorTest.java @@ -345,7 +345,7 @@ public void testRackAwareStaticMemberRangeAssignmentPersistentAfterMemberIdChang int replicationFactor = 2; int numBrokerRacks = 3; partitionsPerTopic.put(topic1, AbstractPartitionAssignorTest.partitionInfos(topic1, 5, replicationFactor, numBrokerRacks, 0)); - partitionsPerTopic.put(topic2, AbstractPartitionAssignorTest.partitionInfos(topic2, 5, replicationFactor, numBrokerRacks, 0)); + partitionsPerTopic.put(topic2, AbstractPartitionAssignorTest.partitionInfos(topic2, 5, replicationFactor, numBrokerRacks, 0)); List staticMemberInfos = new ArrayList<>(); staticMemberInfos.add(new MemberInfo(consumer1, Optional.of(instance1), Optional.of(ALL_RACKS[0]))); staticMemberInfos.add(new MemberInfo(consumer2, Optional.of(instance2), Optional.of(ALL_RACKS[1]))); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinatorTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinatorTest.java index 18563b1ff9b30..bbc06ad543a1f 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinatorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinatorTest.java @@ -701,7 +701,7 @@ public void testNoGenerationWillNotTriggerProtocolNameCheck() { SyncGroupRequest syncGroupRequest = (SyncGroupRequest) body; return syncGroupRequest.data().protocolType().equals(PROTOCOL_TYPE) - && syncGroupRequest.data().protocolName().equals(PROTOCOL_NAME); + && syncGroupRequest.data().protocolName().equals(PROTOCOL_NAME); }, syncGroupResponse(Errors.NONE, PROTOCOL_TYPE, wrongProtocolName)); // let the retry to complete successfully to break out of the while loop @@ -1127,7 +1127,7 @@ private static Stream groupInstanceIdAndMembershipOperationMatrix() { ); } - private void checkLeaveGroupRequestSent(Optional groupInstanceId) { + private void checkLeaveGroupRequestSent(Optional groupInstanceId) { checkLeaveGroupRequestSent(groupInstanceId, CloseOptions.GroupMembershipOperation.DEFAULT, Optional.empty()); } @@ -1339,6 +1339,7 @@ public void testWakeupAfterJoinGroupSent() throws Exception { mockClient.prepareResponse(groupCoordinatorResponse(node, Errors.NONE)); mockClient.prepareResponse(new MockClient.RequestMatcher() { private int invocations = 0; + @Override public boolean matches(AbstractRequest body) { invocations++; @@ -1377,6 +1378,7 @@ public void testWakeupAfterJoinGroupSentExternalCompletion() throws Exception { mockClient.prepareResponse(groupCoordinatorResponse(node, Errors.NONE)); mockClient.prepareResponse(new MockClient.RequestMatcher() { private int invocations = 0; + @Override public boolean matches(AbstractRequest body) { invocations++; @@ -1483,6 +1485,7 @@ public void testWakeupAfterSyncGroupSentExternalCompletion() throws Exception { mockClient.prepareResponse(joinGroupFollowerResponse(1, memberId, leaderId, Errors.NONE)); mockClient.prepareResponse(new MockClient.RequestMatcher() { private int invocations = 0; + @Override public boolean matches(AbstractRequest body) { invocations++; diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignorTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignorTest.java index c7b0c909477a3..d25eed7149076 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignorTest.java @@ -856,7 +856,7 @@ public void testSubscriptionNotEqualAndAssignSamePartitionWith3Generation() { Map> assign = assignor.assignPartitions(partitionsPerTopic, subscriptions); assertEquals(assign.values().stream().mapToInt(List::size).sum(), assign.values().stream().flatMap(List::stream).collect(Collectors.toSet()).size()); - for (List list: assign.values()) { + for (List list : assign.values()) { assertTrue(list.size() >= 1 && list.size() <= 2); } } @@ -976,7 +976,7 @@ public void testStickiness(RackConfig rackConfig) { Map partitionsAssigned = new HashMap<>(); Set>> assignments = assignment.entrySet(); - for (Map.Entry> entry: assignments) { + for (Map.Entry> entry : assignments) { String consumer = entry.getKey(); List topicPartitions = entry.getValue(); int size = topicPartitions.size(); @@ -1000,7 +1000,7 @@ public void testStickiness(RackConfig rackConfig) { verifyValidityAndBalance(subscriptions, assignment, partitionsPerTopic); assignments = assignment.entrySet(); - for (Map.Entry> entry: assignments) { + for (Map.Entry> entry : assignments) { String consumer = entry.getKey(); List topicPartitions = entry.getValue(); assertEquals(1, topicPartitions.size(), "Consumer " + consumer + " is assigned more topic partitions than expected."); @@ -1451,7 +1451,7 @@ protected Subscription subscription(List topics, int consumerIndex) { protected static boolean isFullyBalanced(Map> assignment) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; - for (List topicPartitions: assignment.values()) { + for (List topicPartitions : assignment.values()) { int size = topicPartitions.size(); if (size < min) min = size; @@ -1497,7 +1497,7 @@ protected void verifyValidityAndBalance(Map subscriptions, for (int i = 0; i < size; ++i) { String consumer = consumers.get(i); List partitions = assignments.get(consumer); - for (TopicPartition partition: partitions) + for (TopicPartition partition : partitions) assertTrue(subscriptions.get(consumer).topics().contains(partition.topic()), "Error: Partition " + partition + "is assigned to c" + i + ", but it is not subscribed to Topic t" + partition.topic() + "\nSubscriptions: " + subscriptions + "\nAssignments: " + assignments); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AcknowledgementCommitCallbackHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AcknowledgementCommitCallbackHandlerTest.java index d06e495dde3ca..9111f0b22e31e 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AcknowledgementCommitCallbackHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AcknowledgementCommitCallbackHandlerTest.java @@ -153,6 +153,7 @@ public void onComplete(Map> offsetsMap, Exception ex private static class TopicPartitionAndOffset { TopicIdPartition topicIdPartition; Long offset; + TopicPartitionAndOffset(TopicIdPartition topicIdPartition, Long offset) { this.topicIdPartition = topicIdPartition; this.offset = offset; diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ApplicationEventHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ApplicationEventHandlerTest.java index 54d056b3b15c2..d6a949a0a8fca 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ApplicationEventHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ApplicationEventHandlerTest.java @@ -47,7 +47,7 @@ public class ApplicationEventHandlerTest { private final Time time = new MockTime(); private final int initializationTimeoutMs = 50; - private final BlockingQueue applicationEventsQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue applicationEventsQueue = new LinkedBlockingQueue<>(); private final ApplicationEventProcessor applicationEventProcessor = mock(ApplicationEventProcessor.class); private final NetworkClientDelegate networkClientDelegate = mock(NetworkClientDelegate.class); private final RequestManagers requestManagers = mock(RequestManagers.class); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumerTest.java index a8736329e4dfa..56d35b0595718 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumerTest.java @@ -2368,7 +2368,7 @@ private void markOffsetsReadyForCommitEvent() { public void testCloseInvokesStreamsRebalanceListenerOnTasksRevokedWhenMemberEpochPositive() { final String groupId = "streamsGroup"; final StreamsRebalanceData streamsRebalanceData = new StreamsRebalanceData(UUID.randomUUID(), Optional.empty(), Optional.empty(), Map.of(), Map.of()); - + try (final MockedStatic requestManagers = mockStatic(RequestManagers.class)) { consumer = newConsumerWithStreamRebalanceData(requiredConsumerConfigAndGroupId(groupId), streamsRebalanceData); StreamsRebalanceListener mockStreamsListener = mock(StreamsRebalanceListener.class); @@ -2377,18 +2377,18 @@ public void testCloseInvokesStreamsRebalanceListenerOnTasksRevokedWhenMemberEpoc final int memberEpoch = 42; final String memberId = "memberId"; groupMetadataUpdateListener.onMemberEpochUpdated(Optional.of(memberEpoch), memberId); - + consumer.close(CloseOptions.timeout(Duration.ZERO)); - + verify(mockStreamsListener).onTasksRevoked(any()); } } - + @Test public void testCloseInvokesStreamsRebalanceListenerOnAllTasksLostWhenMemberEpochZeroOrNegative() { final String groupId = "streamsGroup"; final StreamsRebalanceData streamsRebalanceData = new StreamsRebalanceData(UUID.randomUUID(), Optional.empty(), Optional.empty(), Map.of(), Map.of()); - + try (final MockedStatic requestManagers = mockStatic(RequestManagers.class)) { consumer = newConsumerWithStreamRebalanceData(requiredConsumerConfigAndGroupId(groupId), streamsRebalanceData); StreamsRebalanceListener mockStreamsListener = mock(StreamsRebalanceListener.class); @@ -2397,18 +2397,18 @@ public void testCloseInvokesStreamsRebalanceListenerOnAllTasksLostWhenMemberEpoc final int memberEpoch = 0; final String memberId = "memberId"; groupMetadataUpdateListener.onMemberEpochUpdated(Optional.of(memberEpoch), memberId); - + consumer.close(CloseOptions.timeout(Duration.ZERO)); - + verify(mockStreamsListener).onAllTasksLost(); } } - + @Test public void testCloseWrapsStreamsRebalanceListenerException() { final String groupId = "streamsGroup"; final StreamsRebalanceData streamsRebalanceData = new StreamsRebalanceData(UUID.randomUUID(), Optional.empty(), Optional.empty(), Map.of(), Map.of()); - + try (final MockedStatic requestManagers = mockStatic(RequestManagers.class)) { consumer = newConsumerWithStreamRebalanceData(requiredConsumerConfigAndGroupId(groupId), streamsRebalanceData); StreamsRebalanceListener mockStreamsListener = mock(StreamsRebalanceListener.class); @@ -2419,8 +2419,8 @@ public void testCloseWrapsStreamsRebalanceListenerException() { final int memberEpoch = 1; final String memberId = "memberId"; groupMetadataUpdateListener.onMemberEpochUpdated(Optional.of(memberEpoch), memberId); - - KafkaException thrownException = assertThrows(KafkaException.class, + + KafkaException thrownException = assertThrows(KafkaException.class, () -> consumer.close(CloseOptions.timeout(Duration.ZERO))); assertInstanceOf(RuntimeException.class, thrownException.getCause()); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/BackgroundEventHandlerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/BackgroundEventHandlerTest.java index 7a999e51163aa..4f6ad5da6b59e 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/BackgroundEventHandlerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/BackgroundEventHandlerTest.java @@ -33,7 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class BackgroundEventHandlerTest { - private final BlockingQueue backgroundEventsQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue backgroundEventsQueue = new LinkedBlockingQueue<>(); @ParameterizedTest @MethodSource("org.apache.kafka.clients.consumer.internals.metrics.AsyncConsumerMetricsTest#groupNameProvider") diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CompletedFetchTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CompletedFetchTest.java index 6795bc30185d0..599138011667a 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CompletedFetchTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CompletedFetchTest.java @@ -68,7 +68,7 @@ public void testSimple() { int startingOffset = 10; int numRecords = 11; // Records for 10-20 FetchResponseData.PartitionData partitionData = new FetchResponseData.PartitionData() - .setRecords(newRecords(startingOffset, numRecords, fetchOffset)); + .setRecords(newRecords(startingOffset, numRecords, fetchOffset)); Deserializers deserializers = newStringDeserializers(); FetchConfig fetchConfig = newFetchConfig(IsolationLevel.READ_UNCOMMITTED, true); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinatorTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinatorTest.java index 4ce2b2c77877e..c9e2bad3b17d4 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinatorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinatorTest.java @@ -1815,8 +1815,8 @@ private boolean validateLeaveGroup(String groupId, LeaveGroupRequest leaveRequest) { List members = leaveRequest.data().members(); return leaveRequest.data().groupId().equals(groupId) && - members.size() == 1 && - members.get(0).memberId().equals(consumerId); + members.size() == 1 && + members.get(0).memberId().equals(consumerId); } /** @@ -3314,7 +3314,7 @@ public void run() { // Wait for the metric poller to observe the final assignment change or raise an error TestUtils.waitForCondition( () -> observedSize.get() == totalPartitions || - exceptionHolder.get() != null, "Failed to observe expected assignment change"); + exceptionHolder.get() != null, "Failed to observe expected assignment change"); doStop.set(true); poller.join(); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerHeartbeatRequestManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerHeartbeatRequestManagerTest.java index 3ef1d712c9667..1d07821e7c397 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerHeartbeatRequestManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerHeartbeatRequestManagerTest.java @@ -936,7 +936,7 @@ public void testSendingLeaveGroupHeartbeatWhenPreviousOneInFlight(final short ve NetworkClientDelegate.PollResult pollAgain = heartbeatRequestManager.poll(time.milliseconds()); assertEquals(0, pollAgain.unsentRequests.size()); } - + @ParameterizedTest @ApiKeyVersionsSource(apiKey = ApiKeys.CONSUMER_GROUP_HEARTBEAT) public void testConsumerAcksReconciledAssignmentAfterAckLost(final short version) { @@ -947,28 +947,28 @@ public void testConsumerAcksReconciledAssignmentAfterAckLost(final short version Map> testAssignment = Collections.singletonMap( topicId, mkSortedSet(partition) ); - + // complete reconciliation createHeartbeatStateAndRequestManager(); when(subscriptions.subscription()).thenReturn(topics); subscriptions.subscribe(topics, Optional.empty()); mockReconcilingMemberData(testAssignment); - + // send heartbeat1 to ack assignment tp0 time.sleep(DEFAULT_HEARTBEAT_INTERVAL_MS); NetworkClientDelegate.PollResult result = heartbeatRequestManager.poll(time.milliseconds()); - + // HB1 times out assertFalse(result.unsentRequests.isEmpty()); result.unsentRequests.get(0) .handler() .onFailure(time.milliseconds(), new TimeoutException("timeout")); - + // heartbeat request manager resets the sentFields to null HeartbeatState.reset() time.sleep(DEFAULT_MAX_POLL_INTERVAL_MS); assertHeartbeat(heartbeatRequestManager, DEFAULT_HEARTBEAT_INTERVAL_MS); verify(heartbeatRequestState).reset(); - + // following HB will include tp0 (and act as ack), tp0 != null result = heartbeatRequestManager.poll(time.milliseconds()); NetworkClientDelegate.UnsentRequest request = result.unsentRequests.get(0); @@ -977,7 +977,7 @@ topicId, mkSortedSet(partition) assertEquals(Collections.singletonList(topic), heartbeatRequest.data().subscribedTopicNames()); assertEquals(testAssignment.size(), heartbeatRequest.data().topicPartitions().size()); - ConsumerGroupHeartbeatRequestData.TopicPartitions topicPartitions = + ConsumerGroupHeartbeatRequestData.TopicPartitions topicPartitions = heartbeatRequest.data().topicPartitions().get(0); assertEquals(topicId, topicPartitions.topicId()); assertEquals(Collections.singletonList(partition), topicPartitions.partitions()); @@ -1246,7 +1246,7 @@ private void mockStableMemberData(String instanceId) { when(membershipManager.memberEpoch()).thenReturn(DEFAULT_MEMBER_EPOCH); when(membershipManager.serverAssignor()).thenReturn(Optional.of(DEFAULT_REMOTE_ASSIGNOR)); } - + private void mockReconcilingMemberData(Map> assignment) { when(membershipManager.state()).thenReturn(MemberState.RECONCILING); when(membershipManager.currentAssignment()).thenReturn(new LocalAssignment(0, assignment)); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerInterceptorsTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerInterceptorsTest.java index e6b091e2fd20f..382f9f27f7656 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerInterceptorsTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerInterceptorsTest.java @@ -109,7 +109,7 @@ public void injectOnCommitError(boolean on) { @Test public void testOnConsumeChain() { - List> interceptorList = new ArrayList<>(); + List> interceptorList = new ArrayList<>(); // we are testing two different interceptors by configuring the same interceptor differently, which is not // how it would be done in KafkaConsumer, but ok for testing interceptor callbacks FilterConsumerInterceptor interceptor1 = new FilterConsumerInterceptor<>(filterPartition1); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerMembershipManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerMembershipManagerTest.java index 914f0a26fb79e..4eed13a732b69 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerMembershipManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerMembershipManagerTest.java @@ -641,7 +641,7 @@ public void testDelayedReconciliationResultDiscardedAfterCommitIfMemberRejoins() CompletableFuture commitResult = mockNewAssignmentAndRevocationStuckOnCommit(membershipManager, topicId1, topic1, Arrays.asList(1, 2), true); - Map> assignment1 = topicIdPartitionsMap(topicId1, 1, 2); + Map> assignment1 = topicIdPartitionsMap(topicId1, 1, 2); assertEquals(assignment1, membershipManager.topicPartitionsAwaitingReconciliation()); // Get fenced and rejoin while still reconciling. Get new assignment to reconcile after @@ -678,7 +678,7 @@ public void testDelayedReconciliationResultDiscardedAfterPartitionsRevokedCallba ConsumerRebalanceListenerCallbackCompletedEvent callbackCompletedEvent = mockNewAssignmentStuckOnPartitionsRevokedCallback(membershipManager, topicId1, topic1, Arrays.asList(1, 2), owned.get(0).topicPartition(), invoker); - Map> assignment1 = topicIdPartitionsMap(topicId1, 1, 2); + Map> assignment1 = topicIdPartitionsMap(topicId1, 1, 2); assertEquals(assignment1, membershipManager.topicPartitionsAwaitingReconciliation()); // Get fenced and rejoin while still reconciling. Get new assignment to reconcile after rejoining. @@ -712,7 +712,7 @@ public void testDelayedReconciliationResultDiscardedAfterPartitionsAssignedCallb ConsumerRebalanceListenerCallbackCompletedEvent callbackCompletedEvent = mockNewAssignmentStuckOnPartitionsAssignedCallback(membershipManager, topicId1, topic1, newPartition, invoker); - Map> assignment1 = topicIdPartitionsMap(topicId1, newPartition); + Map> assignment1 = topicIdPartitionsMap(topicId1, newPartition); assertEquals(assignment1, membershipManager.topicPartitionsAwaitingReconciliation()); // Get fenced and rejoin while still reconciling. Get new assignment to reconcile after rejoining. @@ -886,7 +886,7 @@ public void testDelayedReconciliationResultAppliedWhenTargetChangedWithMetadataU // Pending assignment that was discovered in metadata should be ready to reconcile in the // next reconciliation loop. - Map> topic2Assignment = topicIdPartitionsMap(topicId2, 1, 2); + Map> topic2Assignment = topicIdPartitionsMap(topicId2, 1, 2); assertEquals(topic2Assignment, membershipManager.topicPartitionsAwaitingReconciliation()); // After acknowledging the assignment, we should be back to RECONCILING, because we have not @@ -3212,6 +3212,7 @@ private static class SleepyRebalanceListener implements ConsumerRebalanceListene private long sleepMs; private final long sleepDurationMs; private final Time time; + SleepyRebalanceListener(long sleepDurationMs, Time time) { this.sleepDurationMs = sleepDurationMs; this.time = time; diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerNetworkClientTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerNetworkClientTest.java index 1f5551e7df121..56c027f2b916e 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerNetworkClientTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ConsumerNetworkClientTest.java @@ -318,6 +318,7 @@ public boolean ready(Node node, long now) { else return false; } + @Override public boolean connectionFailed(Node node) { return disconnected.get(); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CoordinatorRequestManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CoordinatorRequestManagerTest.java index c22af52cf89c8..9499cd2fc7733 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CoordinatorRequestManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/CoordinatorRequestManagerTest.java @@ -253,7 +253,7 @@ public void testClearFatalErrorWhenReceivingSuccessfulResponse(Errors error) { } private void expectFindCoordinatorRequest( - CoordinatorRequestManager coordinatorManager, + CoordinatorRequestManager coordinatorManager, Errors error ) { NetworkClientDelegate.PollResult res = coordinatorManager.poll(time.milliseconds()); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetchRequestManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetchRequestManagerTest.java index 6212a720c1f58..ed226cbe691c4 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetchRequestManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetchRequestManagerTest.java @@ -931,6 +931,7 @@ public void testFetchedRecordsRaisesOnSerializationErrors() { // so that we can verify that our position does not advance after raising ByteArrayDeserializer deserializer = new ByteArrayDeserializer() { int i = 0; + @Override public byte[] deserialize(String topic, byte[] data) { if (i++ % 2 == 1) { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetcherTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetcherTest.java index 8a102057a562f..5e8e816882ea2 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetcherTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/FetcherTest.java @@ -870,6 +870,7 @@ public void testFetchedRecordsRaisesOnSerializationErrors() { // so that we can verify that our position does not advance after raising ByteArrayDeserializer deserializer = new ByteArrayDeserializer() { int i = 0; + @Override public byte[] deserialize(String topic, byte[] data) { if (i++ % 2 == 1) { @@ -2869,7 +2870,7 @@ public void handleError(Throwable t) { verifySessionPartitions(); handler.handleError(t); } - + @Override public Map sessionTopicNames() { return handler.sessionTopicNames(); @@ -3655,7 +3656,7 @@ public void testWhenFetchResponseReturnsALeaderShipChangeErrorAndNewLeaderInform // Validate subscription is still valid & fetch-able for tp1. assertTrue(subscriptions.isFetchable(tp1)); } - + @Test public void testFetcherDontCacheAnyData() { short version = 17; diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetchTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetchTest.java index f0dfc7e5b5fa9..a1d8749e608a8 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetchTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetchTest.java @@ -374,7 +374,7 @@ public void testMixedRecordsAndGaps() { acquiredRecords.add(acquiredRecords(10L, 5).get(0)); ShareFetchResponseData.PartitionData partitionData = new ShareFetchResponseData.PartitionData() - .setRecords(newRecords(startingOffset, 10)) + .setRecords(newRecords(startingOffset, 10)) .setAcquiredRecords(acquiredRecords); // Acquire only records 0-4 and 10-14 Deserializers deserializers = newStringDeserializers(); @@ -547,11 +547,11 @@ public void testOverlappingAcquiredRecordsLogsErrorAndRetainsFirstOccurrence() { // Fetch records and verify that only 15 unique records are returned (0-14) ShareInFlightBatch batch = completedFetch.fetchRecords(deserializers, 20, true); List> records = batch.getInFlightRecords(); - + // Should get 15 unique records: 0-9 from first range (with deliveryCount=1) // and 10-14 from second range (with deliveryCount=2) assertEquals(15, records.size()); - + // Verify first occurrence (offset 5 should have deliveryCount=1 from first range) ConsumerRecord record5 = records.stream() .filter(r -> r.offset() == 5L) @@ -559,7 +559,7 @@ public void testOverlappingAcquiredRecordsLogsErrorAndRetainsFirstOccurrence() { .orElse(null); assertNotNull(record5); assertEquals(Optional.of((short) 1), record5.deliveryCount()); - + // Verify offset 10 has deliveryCount=2 from second range ConsumerRecord record10 = records.stream() .filter(r -> r.offset() == 10L) @@ -567,7 +567,7 @@ public void testOverlappingAcquiredRecordsLogsErrorAndRetainsFirstOccurrence() { .orElse(null); assertNotNull(record10); assertEquals(Optional.of((short) 2), record10.deliveryCount()); - + // Verify all offsets are unique Set offsetSet = new HashSet<>(); for (ConsumerRecord record : records) { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareConsumerImplTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareConsumerImplTest.java index aef8cf4ee5bda..f192cea86f10f 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareConsumerImplTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareConsumerImplTest.java @@ -285,7 +285,7 @@ public void testControlRecordsOnEmptyFetch() { final ShareInFlightBatch batch = new ShareInFlightBatch<>(0, tip, DEFAULT_ACQUISITION_LOCK_TIMEOUT_MS); // Add GAP without adding any records batch.addGap(1); - + final ShareFetch fetchWithOnlyGap = ShareFetch.empty(); fetchWithOnlyGap.add(tip, batch); doReturn(fetchWithOnlyGap).when(fetchCollector).collect(any(ShareFetchBuffer.class)); @@ -298,7 +298,7 @@ public void testControlRecordsOnEmptyFetch() { return false; } ShareAcknowledgeAsyncEvent shareAcknowledgeAsyncEvent = (ShareAcknowledgeAsyncEvent) event; - + // Acknowledgements map should contain the GAP for offset 1 Map controlRecordAcks = shareAcknowledgeAsyncEvent.acknowledgementsMap(); return controlRecordAcks.containsKey(tip) && @@ -476,14 +476,14 @@ public void testExplicitModeUnacknowledgedRecords() { // Verify that after acknowledging all records, poll succeeds consumer.acknowledge(iterator.next()); - + // Set up second fetch to return new records ShareFetch secondFetch = ShareFetch.empty(); ShareInFlightBatch newBatch = new ShareInFlightBatch<>(2, tip, DEFAULT_ACQUISITION_LOCK_TIMEOUT_MS); newBatch.addRecord(new ConsumerRecord<>(topic, partition, 2, "key3", "value3")); newBatch.addRecord(new ConsumerRecord<>(topic, partition, 3, "key4", "value4")); secondFetch.add(tip, newBatch); - + // Reset mock to return new records doReturn(secondFetch) .when(fetchCollector) @@ -866,7 +866,7 @@ public void testCloseWithBackgroundQueueErrorsAfterUnsubscribe(Errors error) { // Complete the acknowledge on close event successfully completeShareAcknowledgeOnCloseApplicationEventSuccessfully(); - + // Complete the unsubscribe event successfully completeShareUnsubscribeApplicationEventSuccessfully(subscriptions); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareFetchMetricsManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareFetchMetricsManagerTest.java index 79b5deecadb56..d34c55378b971 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareFetchMetricsManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/ShareFetchMetricsManagerTest.java @@ -132,13 +132,13 @@ public void testCloseRemovesAllSensors() throws IOException { // Define all sensor names that should be created and removed String[] sensorNames = { "fetch-throttle-time", - "bytes-fetched", + "bytes-fetched", "records-fetched", "fetch-latency", "sent-acknowledgements", "failed-acknowledgements" }; - + // Verify that sensors exist before closing for (String sensorName : sensorNames) { assertNotNull(metrics.getSensor(sensorName), "Sensor " + sensorName + " should exist before closing"); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManagerTest.java index 3faaf6e05e62c..a8349d0fa8af2 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/StreamsGroupHeartbeatRequestManagerTest.java @@ -310,7 +310,7 @@ public void testPropagateCoordinatorFatalErrorToApplicationThread() { public void testSendingHeartbeatIfMemberIsLeaving(final boolean requestInFlight) { final long heartbeatIntervalMs = 1234; try ( - final MockedConstruction heartbeatRequestStateMockedConstruction = mockConstruction( + final MockedConstruction heartbeatRequestStateMockedConstruction = mockConstruction( HeartbeatRequestState.class, (mock, context) -> { when(mock.canSendRequest(time.milliseconds())).thenReturn(false); @@ -337,7 +337,7 @@ public void testSendingHeartbeatIfMemberIsLeaving(final boolean requestInFlight) public void testSendingHeartbeatIfMemberIsJoiningOrAcknowledging(final MemberState memberState) { final long heartbeatIntervalMs = 1234; try ( - final MockedConstruction heartbeatRequestStateMockedConstruction = mockConstruction( + final MockedConstruction heartbeatRequestStateMockedConstruction = mockConstruction( HeartbeatRequestState.class, (mock, context) -> { when(mock.canSendRequest(time.milliseconds())).thenReturn(false); @@ -1565,7 +1565,7 @@ public void testResetPollTimerWhenExpired() { @Test public void testStreamsRebalanceDataHeartbeatIntervalMsUpdatedOnSuccess() { try ( - final MockedConstruction ignored = mockConstruction( + final MockedConstruction ignored = mockConstruction( HeartbeatRequestState.class, (mock, context) -> when(mock.canSendRequest(time.milliseconds())).thenReturn(true)) ) { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/SubscriptionStateTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/SubscriptionStateTest.java index 0e89fe4e5a13f..8f5d0407de497 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/SubscriptionStateTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/SubscriptionStateTest.java @@ -611,8 +611,8 @@ public void testPreferredReadReplicaLease() { // Set the preferred replica with lease state.updatePreferredReadReplica(tp0, 42, () -> 10L); - TestUtils.assertOptional(state.preferredReadReplica(tp0, 9L), value -> assertEquals(42, value.intValue())); - TestUtils.assertOptional(state.preferredReadReplica(tp0, 10L), value -> assertEquals(42, value.intValue())); + TestUtils.assertOptional(state.preferredReadReplica(tp0, 9L), value -> assertEquals(42, value.intValue())); + TestUtils.assertOptional(state.preferredReadReplica(tp0, 10L), value -> assertEquals(42, value.intValue())); assertFalse(state.preferredReadReplica(tp0, 11L).isPresent()); // Unset the preferred replica @@ -622,13 +622,13 @@ public void testPreferredReadReplicaLease() { // Set to new preferred replica with lease state.updatePreferredReadReplica(tp0, 43, () -> 20L); - TestUtils.assertOptional(state.preferredReadReplica(tp0, 11L), value -> assertEquals(43, value.intValue())); - TestUtils.assertOptional(state.preferredReadReplica(tp0, 20L), value -> assertEquals(43, value.intValue())); + TestUtils.assertOptional(state.preferredReadReplica(tp0, 11L), value -> assertEquals(43, value.intValue())); + TestUtils.assertOptional(state.preferredReadReplica(tp0, 20L), value -> assertEquals(43, value.intValue())); assertFalse(state.preferredReadReplica(tp0, 21L).isPresent()); // Set to new preferred replica without clearing first state.updatePreferredReadReplica(tp0, 44, () -> 30L); - TestUtils.assertOptional(state.preferredReadReplica(tp0, 30L), value -> assertEquals(44, value.intValue())); + TestUtils.assertOptional(state.preferredReadReplica(tp0, 30L), value -> assertEquals(44, value.intValue())); assertFalse(state.preferredReadReplica(tp0, 31L).isPresent()); } diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/WakeupTriggerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/WakeupTriggerTest.java index ad3a50714800a..2d0d36128e28c 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/WakeupTriggerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/WakeupTriggerTest.java @@ -48,7 +48,7 @@ public class WakeupTriggerTest { public void setup() { this.wakeupTrigger = new WakeupTrigger(); } - + @Test public void testEnsureActiveFutureCanBeWakeUp() { CompletableFuture task = new CompletableFuture<>(); diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/metrics/ConsumerRebalanceMetricsManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/metrics/ConsumerRebalanceMetricsManagerTest.java index e3fea75ef8101..ff65c9efe70fb 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/internals/metrics/ConsumerRebalanceMetricsManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/internals/metrics/ConsumerRebalanceMetricsManagerTest.java @@ -173,7 +173,7 @@ public void testFailedRebalanceMetrics() { // Start a rebalance but don't complete it metricsManager.recordRebalanceStarted(time.milliseconds()); time.sleep(10); - + metricsManager.maybeRecordRebalanceFailed(); assertEquals(1.0d, metrics.metric(metricsManager.failedRebalanceTotal).metricValue(), "Failed rebalance count should increment to 1 after recording failure"); @@ -182,7 +182,7 @@ public void testFailedRebalanceMetrics() { metricsManager.recordRebalanceStarted(time.milliseconds()); time.sleep(10); metricsManager.recordRebalanceEnded(time.milliseconds()); - + metricsManager.maybeRecordRebalanceFailed(); assertEquals(1.0d, metrics.metric(metricsManager.failedRebalanceTotal).metricValue(), "Failed count should not increment after successful rebalance completes"); @@ -237,22 +237,22 @@ public void testLastRebalanceSecondsAgoMetric() { @Test public void testRebalanceStartedFlag() { - assertFalse(metricsManager.rebalanceStarted(), + assertFalse(metricsManager.rebalanceStarted(), "Initially, no rebalance should be in progress"); metricsManager.recordRebalanceStarted(time.milliseconds()); - assertTrue(metricsManager.rebalanceStarted(), + assertTrue(metricsManager.rebalanceStarted(), "Rebalance should be marked as started after recordRebalanceStarted()"); time.sleep(10); metricsManager.recordRebalanceEnded(time.milliseconds()); - assertFalse(metricsManager.rebalanceStarted(), + assertFalse(metricsManager.rebalanceStarted(), "Rebalance should not be in progress after recordRebalanceEnded()"); // Start another rebalance - advance time first time.sleep(100); metricsManager.recordRebalanceStarted(time.milliseconds()); - assertTrue(metricsManager.rebalanceStarted(), + assertTrue(metricsManager.rebalanceStarted(), "New rebalance should be marked as started"); } @@ -268,7 +268,7 @@ public void testMultipleConsecutiveFailures() { assertEquals(5.0d, metrics.metric(metricsManager.failedRebalanceTotal).metricValue(), "Should have recorded 5 consecutive failed rebalances"); - + assertEquals(0.0d, metrics.metric(metricsManager.rebalanceTotal).metricValue(), "Successful rebalance count should remain 0 when only failures occur"); } @@ -282,24 +282,24 @@ public void testMixedSuccessAndFailureScenarios() { time.sleep(20); metricsManager.recordRebalanceEnded(time.milliseconds()); assertEquals(1.0d, metrics.metric(metricsManager.rebalanceTotal).metricValue()); - + // First failure time.sleep(10); metricsManager.recordRebalanceStarted(time.milliseconds()); assertTrue(metricsManager.rebalanceStarted(), "First failure rebalance should be in progress"); time.sleep(30); metricsManager.maybeRecordRebalanceFailed(); - + double failedAfterFirst = (Double) metrics.metric(metricsManager.failedRebalanceTotal).metricValue(); assertEquals(1.0d, failedAfterFirst, "Should have recorded one failed rebalance after first failure"); - + // Second success time.sleep(10); metricsManager.recordRebalanceStarted(time.milliseconds()); time.sleep(40); metricsManager.recordRebalanceEnded(time.milliseconds()); assertEquals(2.0d, metrics.metric(metricsManager.rebalanceTotal).metricValue()); - + // Second failure time.sleep(10); metricsManager.recordRebalanceStarted(time.milliseconds()); @@ -311,7 +311,7 @@ public void testMixedSuccessAndFailureScenarios() { "Should have 2 successful rebalances in mixed scenario"); assertEquals(2.0d, metrics.metric(metricsManager.failedRebalanceTotal).metricValue(), "Should have 2 failed rebalances in mixed scenario"); - + assertEquals(30.0d, metrics.metric(metricsManager.rebalanceLatencyAvg).metricValue(), "Average latency should only include successful rebalances: (20 + 40) / 2 = 30ms"); assertEquals(40.0d, metrics.metric(metricsManager.rebalanceLatencyMax).metricValue(), diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java index 98ffd66270c5a..372d0df5b4d68 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java @@ -179,7 +179,7 @@ public class KafkaProducerTest { "InitTransactions timed out - " + "did not complete coordinator discovery or " + "receive the InitProducerId response within max.block.ms."; - + private final String topic = "topic"; private final Collection nodes = Collections.singletonList(NODE); private final Cluster emptyCluster = new Cluster( @@ -251,10 +251,10 @@ public void testAcksAndIdempotenceForIdempotentProducers() { Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "0"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "0"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + }}; ProducerConfig config = new ProducerConfig(validProps); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -265,9 +265,9 @@ public void testAcksAndIdempotenceForIdempotentProducers() { "acks should be overwritten"); Properties validProps2 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; config = new ProducerConfig(validProps2); assertTrue( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -278,10 +278,10 @@ public void testAcksAndIdempotenceForIdempotentProducers() { "acks should be set with the default value"); Properties validProps3 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "all"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "all"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + }}; config = new ProducerConfig(validProps3); assertFalse(config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), "idempotence should be overwritten"); @@ -291,9 +291,9 @@ public void testAcksAndIdempotenceForIdempotentProducers() { "acks should be overwritten"); Properties validProps4 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "0"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "0"); + }}; config = new ProducerConfig(validProps4); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -304,9 +304,9 @@ public void testAcksAndIdempotenceForIdempotentProducers() { "acks should be set with overridden value"); Properties validProps5 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "1"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "1"); + }}; config = new ProducerConfig(validProps5); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -317,32 +317,32 @@ public void testAcksAndIdempotenceForIdempotentProducers() { "acks should be set with overridden value"); Properties invalidProps = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "0"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "0"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps), "Cannot set a transactional.id without also enabling idempotence"); Properties invalidProps2 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "1"); - // explicitly enabling idempotence should still throw exception - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "1"); + // explicitly enabling idempotence should still throw exception + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps2), "Must set acks to all in order to use the idempotent producer"); Properties invalidProps3 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.ACKS_CONFIG, "0"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.ACKS_CONFIG, "0"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps3), @@ -354,10 +354,10 @@ public void testRetriesAndIdempotenceForIdempotentProducers() { Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.RETRIES_CONFIG, "0"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.RETRIES_CONFIG, "0"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + }}; ProducerConfig config = new ProducerConfig(validProps); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -368,9 +368,9 @@ public void testRetriesAndIdempotenceForIdempotentProducers() { "retries should be overwritten"); Properties validProps2 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.RETRIES_CONFIG, "0"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.RETRIES_CONFIG, "0"); + }}; config = new ProducerConfig(validProps2); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -381,32 +381,32 @@ public void testRetriesAndIdempotenceForIdempotentProducers() { "retries should be set with overridden value"); Properties invalidProps = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.RETRIES_CONFIG, "0"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.RETRIES_CONFIG, "0"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps), "Cannot set a transactional.id without also enabling idempotence"); Properties invalidProps2 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.RETRIES_CONFIG, "0"); - // explicitly enabling idempotence should still throw exception - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.RETRIES_CONFIG, "0"); + // explicitly enabling idempotence should still throw exception + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps2), "Must set retries to non-zero when using the idempotent producer."); Properties invalidProps3 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.RETRIES_CONFIG, "0"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.RETRIES_CONFIG, "0"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps3), @@ -426,10 +426,10 @@ public void testInflightRequestsAndIdempotenceForIdempotentProducers() { Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + }}; ProducerConfig config = new ProducerConfig(validProps); assertFalse( config.getBoolean(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG), @@ -440,41 +440,41 @@ public void testInflightRequestsAndIdempotenceForIdempotentProducers() { "max.in.flight.requests.per.connection should be overwritten"); Properties invalidProps1 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); + }}; ConfigException configException = assertThrows(ConfigException.class, () -> new ProducerConfig(invalidProps1)); assertEquals("To use the idempotent producer, " + ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION + " must be set to at most 5. Current value is 6.", configException.getMessage()); Properties invalidProps2 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "5"); - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "5"); + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "false"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps2), "Cannot set a transactional.id without also enabling idempotence"); Properties invalidProps3 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); - // explicitly enabling idempotence should still throw exception - setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); + // explicitly enabling idempotence should still throw exception + setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps3), "Must set max.in.flight.requests.per.connection to at most 5 when using the idempotent producer."); Properties invalidProps4 = new Properties() {{ - putAll(baseProps); - setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); - setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); - }}; + putAll(baseProps); + setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "6"); + setProperty(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactionalId"); + }}; assertThrows( ConfigException.class, () -> new ProducerConfig(invalidProps4), @@ -1213,7 +1213,7 @@ public void testFlushCompleteSendOfInflightBatches() { private static Double getMetricValue(final KafkaProducer producer, final String name) { Metrics metrics = producer.metrics; - Metric metric = metrics.metric(metrics.metricName(name, "producer-metrics")); + Metric metric = metrics.metric(metrics.metricName(name, "producer-metrics")); return (Double) metric.metricValue(); } @@ -1363,7 +1363,7 @@ public void testInitTransactionTimeout() { client.prepareResponse( request -> request instanceof FindCoordinatorRequest && - ((FindCoordinatorRequest) request).data().keyType() == FindCoordinatorRequest.CoordinatorType.TRANSACTION.id(), + ((FindCoordinatorRequest) request).data().keyType() == FindCoordinatorRequest.CoordinatorType.TRANSACTION.id(), FindCoordinatorResponse.prepareResponse(Errors.NONE, "bad-transaction", NODE)); client.prepareResponse(initProducerIdResponse(1L, (short) 5, Errors.NONE)); @@ -1960,7 +1960,7 @@ public void testCommitTransactionWithSendToInvalidTopic() { List topicMetadata = new ArrayList<>(); topicMetadata.add(new MetadataResponse.TopicMetadata(Errors.INVALID_TOPIC_EXCEPTION, invalidTopicName, false, Collections.emptyList())); - MetadataResponse updateResponse = RequestTestUtils.metadataResponse( + MetadataResponse updateResponse = RequestTestUtils.metadataResponse( new ArrayList<>(initialUpdateResponse.brokers()), initialUpdateResponse.clusterId(), initialUpdateResponse.controller().id(), @@ -2403,7 +2403,7 @@ public void testSendToInvalidTopic() { List topicMetadata = new ArrayList<>(); topicMetadata.add(new MetadataResponse.TopicMetadata(Errors.INVALID_TOPIC_EXCEPTION, invalidTopicName, false, Collections.emptyList())); - MetadataResponse updateResponse = RequestTestUtils.metadataResponse( + MetadataResponse updateResponse = RequestTestUtils.metadataResponse( new ArrayList<>(initialUpdateResponse.brokers()), initialUpdateResponse.clusterId(), initialUpdateResponse.controller().id(), @@ -2571,7 +2571,7 @@ public void testCloseIsForcedOnPendingAddOffsetRequest() throws InterruptedExcep } @Test - public void testProducerJmxPrefix() throws Exception { + public void testProducerJmxPrefix() throws Exception { Map props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); props.put("client.id", "client-1"); diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/MockProducerTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/MockProducerTest.java index 7f100af302287..effde8ebb234a 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/MockProducerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/MockProducerTest.java @@ -442,7 +442,7 @@ public void shouldIgnoreEmptyOffsetsWhenSendOffsetsToTransactionByGroupMetadata( producer.sendOffsetsToTransaction(Collections.emptyMap(), new ConsumerGroupMetadata("groupId")); assertFalse(producer.sentOffsets()); } - + @Test public void shouldAddOffsetsWhenSendOffsetsToTransactionByGroupMetadata() { buildMockProducer(true); diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/internals/BufferPoolTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/internals/BufferPoolTest.java index 727368e8edd1b..125956f58644d 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/internals/BufferPoolTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/internals/BufferPoolTest.java @@ -338,7 +338,7 @@ protected ByteBuffer allocateByteBuffer(int size) { public static class StressTestThread extends Thread { private final int iterations; private final BufferPool pool; - private final long maxBlockTimeMs = 20_000; + private final long maxBlockTimeMs = 20_000; public final AtomicBoolean success = new AtomicBoolean(false); public StressTestThread(BufferPool pool, int iterations) { diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/internals/BuiltInPartitionerTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/internals/BuiltInPartitionerTest.java index e511cad61e6af..6ae044a5d00fa 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/internals/BuiltInPartitionerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/internals/BuiltInPartitionerTest.java @@ -90,7 +90,7 @@ public void testStickyPartitioning() { // Check that switching works even when there is one partition. BuiltInPartitioner builtInPartitionerB = new SequentialPartitioner(logContext, TOPIC_B, 1, rackAware, clientRackId); - for (int c = 10; c-- > 0; ) { + for (int c = 10; c-- > 0;) { partitionInfo = builtInPartitionerB.peekCurrentPartitionInfo(testCluster); assertEquals(0, partitionInfo.partition()); builtInPartitionerB.updatePartitionInfo(partitionInfo, 1, testCluster); diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/internals/RecordAccumulatorTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/internals/RecordAccumulatorTest.java index 71ef3ba89f651..2250947b6542a 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/internals/RecordAccumulatorTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/internals/RecordAccumulatorTest.java @@ -667,8 +667,8 @@ public void testFlush() throws Exception { Map> results = accum.drain(metadataCache, result.readyNodes, Integer.MAX_VALUE, time.milliseconds()); assertTrue(accum.hasIncomplete()); - for (List batches: results.values()) - for (ProducerBatch batch: batches) + for (List batches : results.values()) + for (ProducerBatch batch : batches) accum.completeAndDeallocateBatch(batch); // should be complete with no unsent records. @@ -804,7 +804,7 @@ private void doExpireBatchSingle(int deliveryTimeoutMs) throws InterruptedExcept batchSize + DefaultRecordBatch.RECORD_BATCH_OVERHEAD, 10 * batchSize, Compression.NONE, lingerMs); // Make the batches ready due to linger. These batches are not in retry - for (Boolean mute: muteStates) { + for (Boolean mute : muteStates) { if (time.milliseconds() < System.currentTimeMillis()) time.setCurrentTimeMs(System.currentTimeMillis()); accum.append(topic, partition1, 0L, key, value, Record.EMPTY_HEADERS, null, maxBlockTimeMs, time.milliseconds(), cluster); @@ -1321,7 +1321,7 @@ BuiltInPartitioner createBuiltInPartitioner(LogContext logContext, String topic, int[] expectedFrequencies = new int[queueSizes.length]; for (int i = 0; i < queueSizes.length; i++) { expectedFrequencies[i] = 8 - queueSizes[i]; // 8 is max(queueSizes) + 1 - for (int c = queueSizes[i]; c-- > 0; ) { + for (int c = queueSizes[i]; c-- > 0;) { // Add large records to each partition, so that each record creates a batch. accum.append(topic, i, 0L, null, largeValue, Record.EMPTY_HEADERS, null, maxBlockTimeMs, time.milliseconds(), cluster); @@ -1380,7 +1380,7 @@ public void onCompletion(RecordMetadata metadata, Exception exception) { accum.append(topic, RecordMetadata.UNKNOWN_PARTITION, 0L, null, largeValue, Record.EMPTY_HEADERS, callbacks, maxBlockTimeMs, time.milliseconds(), cluster); - for (int c = 10; c-- > 0; ) { + for (int c = 10; c-- > 0;) { accum.append(topic, RecordMetadata.UNKNOWN_PARTITION, 0L, null, largeValue, Record.EMPTY_HEADERS, callbacks, maxBlockTimeMs, time.milliseconds(), cluster); assertEquals(partition3, partition.get()); @@ -1398,9 +1398,9 @@ public void testBuiltInPartitionerFractionalBatches() throws Exception { RecordAccumulator accum = createTestRecordAccumulator(batchSize, totalSize, Compression.NONE, 10); byte[] value = new byte[valSize]; - for (int c = 10; c-- > 0; ) { + for (int c = 10; c-- > 0;) { // Produce about 2/3 of the batch size. - for (int recCount = batchSize * 2 / 3 / valSize; recCount-- > 0; ) { + for (int recCount = batchSize * 2 / 3 / valSize; recCount-- > 0;) { accum.append(topic, RecordMetadata.UNKNOWN_PARTITION, 0, null, value, Record.EMPTY_HEADERS, null, maxBlockTimeMs, time.milliseconds(), cluster); } @@ -1428,7 +1428,7 @@ public void testBuiltInPartitionerFractionalBatches() throws Exception { public void testReadyAndDrainWhenABatchIsBeingRetried() throws InterruptedException { int part1LeaderEpoch = 100; // Create cluster metadata, partition1 being hosted by node1 - PartitionMetadata part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); + PartitionMetadata part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); MetadataSnapshot metadataCache = new MetadataSnapshot(null, nodes, Collections.singletonList(part1Metadata), Collections.emptySet(), Collections.emptySet(), Collections.emptySet(), null, Collections.emptyMap()); int batchSize = 10; @@ -1481,7 +1481,7 @@ public void testReadyAndDrainWhenABatchIsBeingRetried() throws InterruptedExcept now += 1; part1LeaderEpoch++; // Create cluster metadata, with new leader epoch. - part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); + part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); metadataCache = new MetadataSnapshot(null, nodes, Collections.singletonList(part1Metadata), Collections.emptySet(), Collections.emptySet(), Collections.emptySet(), null, Collections.emptyMap()); RecordAccumulator.ReadyCheckResult result = accum.ready(metadataCache, now); assertTrue(result.readyNodes.contains(node1), "Node1 is ready"); @@ -1501,7 +1501,7 @@ public void testReadyAndDrainWhenABatchIsBeingRetried() throws InterruptedExcept { now += 2 * retryBackoffMaxMs; // Create cluster metadata, with new leader epoch. - part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); + part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); metadataCache = new MetadataSnapshot(null, nodes, Collections.singletonList(part1Metadata), Collections.emptySet(), Collections.emptySet(), Collections.emptySet(), null, Collections.emptyMap()); RecordAccumulator.ReadyCheckResult result = accum.ready(metadataCache, now); assertTrue(result.readyNodes.contains(node1), "Node1 is ready"); @@ -1522,7 +1522,7 @@ public void testReadyAndDrainWhenABatchIsBeingRetried() throws InterruptedExcept now += 2 * retryBackoffMaxMs; part1LeaderEpoch++; // Create cluster metadata, with new leader epoch. - part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); + part1Metadata = new PartitionMetadata(Errors.NONE, tp1, Optional.of(node1.id()), Optional.of(part1LeaderEpoch), null, null, null); metadataCache = new MetadataSnapshot(null, nodes, Collections.singletonList(part1Metadata), Collections.emptySet(), Collections.emptySet(), Collections.emptySet(), null, Collections.emptyMap()); RecordAccumulator.ReadyCheckResult result = accum.ready(metadataCache, now); assertTrue(result.readyNodes.contains(node1), "Node1 is ready"); @@ -1629,6 +1629,7 @@ private byte[] bytesWithPoorCompression(Random random, int size) { private static class BatchDrainedResult { final int numSplit; final int numBatches; + BatchDrainedResult(int numSplit, int numBatches) { this.numBatches = numBatches; this.numSplit = numSplit; diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/internals/SenderTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/internals/SenderTest.java index 52dd2e08e588c..cab790c08859c 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/internals/SenderTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/internals/SenderTest.java @@ -3334,7 +3334,7 @@ public void testProducerBatchRetriesWhenPartitionLeaderChanges() throws Exceptio tp -> { if (tp0.equals(tp)) { return epoch; - } else if (tp1.equals(tp)) { + } else if (tp1.equals(tp)) { return 0; } else { throw new RuntimeException("unexpected tp " + tp); @@ -3450,7 +3450,7 @@ public void testWhenProduceResponseReturnsWithALeaderShipChangeErrorButNoNewLead tp -> { if (tp0.equals(tp)) { return tp0LeaderEpoch; - } else if (tp1.equals(tp)) { + } else if (tp1.equals(tp)) { return tp1LeaderEpoch; } else if (tp2.equals(tp)) { return tp2LeaderEpoch; @@ -3530,7 +3530,7 @@ public void testWhenProduceResponseReturnsWithALeaderShipChangeErrorAndNewLeader tp -> { if (tp0.equals(tp)) { return tp0LeaderEpoch; - } else if (tp1.equals(tp)) { + } else if (tp1.equals(tp)) { return tp1LeaderEpoch; } else if (tp2.equals(tp)) { return tp2LeaderEpoch; @@ -3820,7 +3820,7 @@ private ProduceResponse produceResponse(TopicPartition tp, long offset, Errors e private TransactionManager createTransactionManager() { return new TransactionManager(new LogContext(), null, 0, RETRY_BACKOFF_MS, new ApiVersions(), false); } - + private void setupWithTransactionState(TransactionManager transactionManager) { setupWithTransactionState(transactionManager, false, null, true, Integer.MAX_VALUE, 0); } @@ -3959,6 +3959,7 @@ private void assertFutureFailure(Future future, Class ex private void createMockClientWithMaxFlightOneMetadataPending() { client = new MockClient(time, metadata) { volatile boolean canSendMore = true; + @Override public LeastLoadedNode leastLoadedNode(long now) { for (Node node : metadata.fetch().nodes()) { @@ -3995,7 +3996,7 @@ private void waitForProducerId(TransactionManager transactionManager, ProducerId assertTrue(transactionManager.hasProducerId()); assertEquals(producerIdAndEpoch, transactionManager.producerIdAndEpoch()); } - + private AddPartitionsToTxnResponse buildAddPartitionsToTxnResponseData(int throttleMs, Map errors) { AddPartitionsToTxnResponseData.AddPartitionsToTxnResult result = AddPartitionsToTxnResponse.resultForTransaction( AddPartitionsToTxnResponse.V3_AND_BELOW_TXN_ID, errors); diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/internals/TransactionManagerTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/internals/TransactionManagerTest.java index a13e44a5e16df..8943bd1e0bbdd 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/internals/TransactionManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/internals/TransactionManagerTest.java @@ -135,7 +135,7 @@ public class TransactionManagerTest { private static final String SENDER_TIMEOUT_MSG = "The request has not been sent, or no server response has been received yet."; private static final String TEST_TIMEOUT_MSG = "Unexpected time out during the test."; - + private final String topic = "test"; private static final Uuid TOPIC_ID = Uuid.fromString("y2J9jXHhfIkQ1wK8mMKXx1"); private final TopicPartition tp0 = new TopicPartition(topic, 0); @@ -1663,7 +1663,7 @@ public void testRetryAbortTransactionAfterTimeout() throws Exception { runUntil(() -> transactionManager.transactionContainsPartition(tp0)); TransactionalRequestResult result = transactionManager.beginAbort(); - var timoutEx = assertThrows(TimeoutException.class, () -> + var timoutEx = assertThrows(TimeoutException.class, () -> result.await(0, TimeUnit.MILLISECONDS, TEST_TIMEOUT_MSG) ); assertTrue(timoutEx.getMessage().contains(TEST_TIMEOUT_MSG)); @@ -1702,7 +1702,7 @@ public void testRetryCommitTransactionAfterTimeout() throws Exception { TransactionalRequestResult result = transactionManager.beginCommit(); var timeoutEx = assertThrows(TimeoutException.class, () -> result.await(0, TimeUnit.MILLISECONDS, TEST_TIMEOUT_MSG)); assertTrue(timeoutEx.getMessage().contains(TEST_TIMEOUT_MSG)); - + prepareEndTxnResponse(Errors.NONE, TransactionResult.COMMIT, producerId, epoch); runUntil(transactionManager::isReady); assertTrue(result.isSuccessful()); @@ -2978,10 +2978,10 @@ public void testDropCommitOnBatchExpiry() throws InterruptedException { assertThrows(ExecutionException.class, responseFuture::get).getCause(), "Expected to get a TimeoutException since the queued ProducerBatch should have been expired"); assertTrue(timeoutEx1.getMessage().contains(SENDER_TIMEOUT_MSG)); - + runUntil(commitResult::isCompleted); // the commit shouldn't be completed without being sent since the produce request failed. assertFalse(commitResult.isSuccessful()); // the commit shouldn't succeed since the produce request failed. - var timeoutEx2 = assertInstanceOf(TimeoutException.class, assertThrows(TransactionAbortableException.class, + var timeoutEx2 = assertInstanceOf(TimeoutException.class, assertThrows(TransactionAbortableException.class, () -> commitResult.await(Long.MAX_VALUE, TimeUnit.MILLISECONDS, TEST_TIMEOUT_MSG)).getCause()); assertTrue(timeoutEx2.getMessage().contains(SENDER_TIMEOUT_MSG)); @@ -4108,14 +4108,14 @@ public void testPrepareTransaction() { public void testInitPidResponseWithKeepPreparedTrueAndOngoingTransaction() { // Initialize transaction manager with 2PC enabled initializeTransactionManager(Optional.of(transactionalId), true, true); - + // Start initializeTransactions with keepPreparedTxn=true TransactionalRequestResult result = transactionManager.initializeTransactions(true); - + // Prepare coordinator response prepareFindCoordinatorResponse(Errors.NONE, false, CoordinatorType.TRANSACTION, transactionalId); runUntil(() -> transactionManager.coordinator(CoordinatorType.TRANSACTION) != null); - + // Simulate InitProducerId response with ongoing transaction long ongoingPid = 12345L; short ongoingEpoch = 5; @@ -4129,16 +4129,16 @@ public void testInitPidResponseWithKeepPreparedTrueAndOngoingTransaction() { ongoingPid, ongoingEpoch ); - + runUntil(transactionManager::hasProducerId); transactionManager.maybeUpdateTransactionV2Enabled(true); result.await(Long.MAX_VALUE, TimeUnit.MILLISECONDS, TEST_TIMEOUT_MSG); assertTrue(result.isSuccessful()); - + // Verify transaction manager transitioned to PREPARED_TRANSACTION state assertTrue(transactionManager.isPrepared()); - + // Verify preparedTxnState was set with ongoing producer ID and epoch ProducerIdAndEpoch preparedState = transactionManager.preparedTransactionState(); assertNotNull(preparedState); @@ -4151,14 +4151,14 @@ public void testInitPidResponseWithKeepPreparedTrueAndNoOngoingTransaction() { // Initialize transaction manager without 2PC enabled // keepPrepared can be true even when enable2Pc is false, and we expect the same behavior initializeTransactionManager(Optional.of(transactionalId), true, false); - + // Start initializeTransactions with keepPreparedTxn=true TransactionalRequestResult result = transactionManager.initializeTransactions(true); - + // Prepare coordinator response prepareFindCoordinatorResponse(Errors.NONE, false, CoordinatorType.TRANSACTION, transactionalId); runUntil(() -> transactionManager.coordinator(CoordinatorType.TRANSACTION) != null); - + // Simulate InitProducerId response without ongoing transaction prepareInitPidResponse( Errors.NONE, @@ -4170,17 +4170,17 @@ public void testInitPidResponseWithKeepPreparedTrueAndNoOngoingTransaction() { RecordBatch.NO_PRODUCER_ID, RecordBatch.NO_PRODUCER_EPOCH ); - + runUntil(transactionManager::hasProducerId); transactionManager.maybeUpdateTransactionV2Enabled(true); result.await(Long.MAX_VALUE, TimeUnit.MILLISECONDS, TEST_TIMEOUT_MSG); assertTrue(result.isSuccessful()); - + // Verify transaction manager transitioned to READY state (not PREPARED_TRANSACTION) assertFalse(transactionManager.isPrepared()); assertTrue(transactionManager.isReady()); - + // Verify preparedTxnState was not set or is empty ProducerIdAndEpoch preparedState = transactionManager.preparedTransactionState(); assertEquals(ProducerIdAndEpoch.NONE, preparedState); @@ -4324,7 +4324,7 @@ private MockClient.RequestMatcher addPartitionsRequestMatcher(final TopicPartiti return true; }; } - + private List getPartitionsFromV3Request(AddPartitionsToTxnRequest request) { return AddPartitionsToTxnRequest.getPartitions(request.data().v3AndBelowTopics()); } diff --git a/clients/src/test/java/org/apache/kafka/common/ClusterTest.java b/clients/src/test/java/org/apache/kafka/common/ClusterTest.java index 2600b8dbb69a8..4776752e49c30 100644 --- a/clients/src/test/java/org/apache/kafka/common/ClusterTest.java +++ b/clients/src/test/java/org/apache/kafka/common/ClusterTest.java @@ -106,7 +106,7 @@ public void testNotEquals() { Set internalTopics1 = Collections.singleton("topic3"); Set internalTopics2 = Collections.singleton("topic4"); Node controller1 = new Node(2, "host2", 100); - Node controller2 = new Node(3, "host3", 100); + Node controller2 = new Node(3, "host3", 100); Map topicIds1 = Collections.singletonMap("topic1", Uuid.randomUuid()); Map topicIds2 = Collections.singletonMap("topic2", Uuid.randomUuid()); diff --git a/clients/src/test/java/org/apache/kafka/common/UuidTest.java b/clients/src/test/java/org/apache/kafka/common/UuidTest.java index 9acc8145be84a..76fd0995a0a65 100644 --- a/clients/src/test/java/org/apache/kafka/common/UuidTest.java +++ b/clients/src/test/java/org/apache/kafka/common/UuidTest.java @@ -53,13 +53,13 @@ public void testUuidEquality() { assertEquals(id1.hashCode(), id2.hashCode()); assertNotEquals(id1.hashCode(), id3.hashCode()); } - + @Test public void testHashCode() { Uuid id1 = new Uuid(16L, 7L); Uuid id2 = new Uuid(1043L, 20075L); Uuid id3 = new Uuid(104312423523523L, 200732425676585L); - + assertEquals(23, id1.hashCode()); assertEquals(19064, id2.hashCode()); assertEquals(-2011255899, id3.hashCode()); diff --git a/clients/src/test/java/org/apache/kafka/common/acl/AclOperationTest.java b/clients/src/test/java/org/apache/kafka/common/acl/AclOperationTest.java index ede6fbbb4394d..b57a651a296dc 100644 --- a/clients/src/test/java/org/apache/kafka/common/acl/AclOperationTest.java +++ b/clients/src/test/java/org/apache/kafka/common/acl/AclOperationTest.java @@ -68,7 +68,7 @@ public void testCode() { for (AclOperationTestInfo info : INFOS) { assertEquals(info.code, info.operation.code(), info.operation + " was supposed to have code == " + info.code); assertEquals(info.operation, AclOperation.fromCode((byte) info.code), - "AclOperation.fromCode(" + info.code + ") was supposed to be " + info.operation); + "AclOperation.fromCode(" + info.code + ") was supposed to be " + info.operation); } assertEquals(AclOperation.UNKNOWN, AclOperation.fromCode((byte) 120)); } @@ -77,7 +77,7 @@ public void testCode() { public void testName() throws Exception { for (AclOperationTestInfo info : INFOS) { assertEquals(info.operation, AclOperation.fromString(info.name), - "AclOperation.fromString(" + info.name + ") was supposed to be " + info.operation); + "AclOperation.fromString(" + info.name + ") was supposed to be " + info.operation); } assertEquals(AclOperation.UNKNOWN, AclOperation.fromString("something")); } diff --git a/clients/src/test/java/org/apache/kafka/common/acl/AclPermissionTypeTest.java b/clients/src/test/java/org/apache/kafka/common/acl/AclPermissionTypeTest.java index 1f935579e11c4..00cfab1183cba 100644 --- a/clients/src/test/java/org/apache/kafka/common/acl/AclPermissionTypeTest.java +++ b/clients/src/test/java/org/apache/kafka/common/acl/AclPermissionTypeTest.java @@ -56,7 +56,7 @@ public void testCode() { for (AclPermissionTypeTestInfo info : INFOS) { assertEquals(info.code, info.ty.code(), info.ty + " was supposed to have code == " + info.code); assertEquals(info.ty, AclPermissionType.fromCode((byte) info.code), - "AclPermissionType.fromCode(" + info.code + ") was supposed to be " + info.ty); + "AclPermissionType.fromCode(" + info.code + ") was supposed to be " + info.ty); } assertEquals(AclPermissionType.UNKNOWN, AclPermissionType.fromCode((byte) 120)); } @@ -65,7 +65,7 @@ public void testCode() { public void testName() throws Exception { for (AclPermissionTypeTestInfo info : INFOS) { assertEquals(info.ty, AclPermissionType.fromString(info.name), - "AclPermissionType.fromString(" + info.name + ") was supposed to be " + info.ty); + "AclPermissionType.fromString(" + info.name + ") was supposed to be " + info.ty); } assertEquals(AclPermissionType.UNKNOWN, AclPermissionType.fromString("something")); } diff --git a/clients/src/test/java/org/apache/kafka/common/config/AbstractConfigTest.java b/clients/src/test/java/org/apache/kafka/common/config/AbstractConfigTest.java index b517f55534e67..b073331d08fdb 100644 --- a/clients/src/test/java/org/apache/kafka/common/config/AbstractConfigTest.java +++ b/clients/src/test/java/org/apache/kafka/common/config/AbstractConfigTest.java @@ -180,9 +180,9 @@ public void testValuesWithPrefixOverride() { @Test public void testValuesWithSecondaryPrefix() { String prefix = "listener.name.listener1."; - Password saslJaasConfig1 = new Password("test.myLoginModule1 required;"); - Password saslJaasConfig2 = new Password("test.myLoginModule2 required;"); - Password saslJaasConfig3 = new Password("test.myLoginModule3 required;"); + Password saslJaasConfig1 = new Password("test.myLoginModule1 required;"); + Password saslJaasConfig2 = new Password("test.myLoginModule2 required;"); + Password saslJaasConfig3 = new Password("test.myLoginModule3 required;"); Properties props = new Properties(); props.put("listener.name.listener1.test-mechanism.sasl.jaas.config", saslJaasConfig1.value()); props.put("test-mechanism.sasl.jaas.config", saslJaasConfig2.value()); @@ -317,6 +317,7 @@ class RestrictedClassLoader extends ClassLoader { public RestrictedClassLoader() { super(null); } + @Override protected Class findClass(String name) throws ClassNotFoundException { if (name.equals(ClassTestConfig.DEFAULT_CLASS.getName()) || name.equals(ClassTestConfig.RESTRICTED_CLASS.getName())) @@ -739,6 +740,7 @@ protected Map preProcessParsedConfig(Map parsedV public static class ConfiguredFakeMetricsReporter extends FakeMetricsReporter { public static final String EXTRA_CONFIG = "metric.extra_config"; + @Override public void configure(Map configs) { // Calling get() should have the side effect of marking that config as used. diff --git a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java index 1f0a2c794e271..c4ed7fb089910 100644 --- a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java +++ b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java @@ -330,7 +330,7 @@ public void testValidateMissingConfigKey() { props.put("a", "1"); List configs = def.validate(props); - for (ConfigValue config: configs) { + for (ConfigValue config : configs) { String name = config.name(); ConfigValue expectedConfig = expected.get(name); assertEquals(expectedConfig, config); @@ -349,7 +349,7 @@ public void testValidateCannotParse() { props.put("a", "non_integer"); List configs = def.validate(props); - for (ConfigValue config: configs) { + for (ConfigValue config : configs) { String name = config.name(); ConfigValue expectedConfig = expected.get(name); assertEquals(expectedConfig, config); @@ -618,8 +618,8 @@ public void testConvertValueToStringLong() { public void testConvertValueToStringDouble() { assertEquals("3.125", ConfigDef.convertToString(3.125d, Type.DOUBLE)); assertEquals("1.7976931348623157E308", ConfigDef.convertToString(Double.MAX_VALUE, Type.DOUBLE)); - assertEquals("1.024E8", ConfigDef.convertToString(102400000d, Type.DOUBLE)); - assertEquals("-1.024E8", ConfigDef.convertToString(-102400000d, Type.DOUBLE)); + assertEquals("1.024E8", ConfigDef.convertToString(102400000d, Type.DOUBLE)); + assertEquals("-1.024E8", ConfigDef.convertToString(-102400000d, Type.DOUBLE)); assertNull(ConfigDef.convertToString(null, Type.DOUBLE)); } diff --git a/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java b/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java index 0fd835d742e83..48f722ae9aac3 100644 --- a/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java +++ b/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java @@ -55,7 +55,7 @@ public void close() throws IOException { } } - static class SomeMonitorablePlugin extends SomePlugin implements Monitorable { + static class SomeMonitorablePlugin extends SomePlugin implements Monitorable { @Override public void withPluginMetrics(PluginMetrics metrics) { diff --git a/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java b/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java index 8df678ba3b36c..d0ba090d54156 100644 --- a/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java +++ b/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java @@ -540,7 +540,7 @@ public void testTxnOffsetCommitResponseVersions() throws Exception { )) ) ) - .setThrottleTimeMs(20)); + .setThrottleTimeMs(20)); } @ParameterizedTest @@ -814,7 +814,7 @@ private void testJsonRoundTrip(short version, Message message, Message expected) private static String jsonConverterTypeName(String source) { int outerClassIndex = source.lastIndexOf('$'); if (outerClassIndex == -1) { - return source + "JsonConverter"; + return source + "JsonConverter"; } else { return source.substring(0, outerClassIndex) + "JsonConverter$" + source.substring(outerClassIndex + 1) + "JsonConverter"; diff --git a/clients/src/test/java/org/apache/kafka/common/message/RecordsSerdeTest.java b/clients/src/test/java/org/apache/kafka/common/message/RecordsSerdeTest.java index 943edc665a6ab..9b48404e0d00a 100644 --- a/clients/src/test/java/org/apache/kafka/common/message/RecordsSerdeTest.java +++ b/clients/src/test/java/org/apache/kafka/common/message/RecordsSerdeTest.java @@ -63,8 +63,8 @@ public void testSerdeEmptyRecords() { private void testAllRoundTrips(SimpleRecordsMessageData message) { for (short version = SimpleRecordsMessageData.LOWEST_SUPPORTED_VERSION; - version <= SimpleRecordsMessageData.HIGHEST_SUPPORTED_VERSION; - version++) { + version <= SimpleRecordsMessageData.HIGHEST_SUPPORTED_VERSION; + version++) { testRoundTrip(message, version); } } diff --git a/clients/src/test/java/org/apache/kafka/common/metrics/MetricsTest.java b/clients/src/test/java/org/apache/kafka/common/metrics/MetricsTest.java index eda6648068c6f..cdf37454d82e5 100644 --- a/clients/src/test/java/org/apache/kafka/common/metrics/MetricsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/metrics/MetricsTest.java @@ -148,7 +148,7 @@ private void verifyStats(Function metricValueFunc) { "s2 reflects the constant value"); assertEquals(4.5, metricValueFunc.apply(metrics.metric(metrics.metricName("test.avg", "grp1"))), EPS, "Avg(0...9) = 4.5"); - assertEquals(count - 1, metricValueFunc.apply(metrics.metric(metrics.metricName("test.max", "grp1"))), EPS, + assertEquals(count - 1, metricValueFunc.apply(metrics.metric(metrics.metricName("test.max", "grp1"))), EPS, "Max(0...9) = 9"); assertEquals(0.0, metricValueFunc.apply(metrics.metric(metrics.metricName("test.min", "grp1"))), EPS, "Min(0...9) = 0"); @@ -742,6 +742,7 @@ public void testConcurrentReadUpdateReport() { class LockingReporter implements MetricsReporter { final Map activeMetrics = new HashMap<>(); + @Override public synchronized void init(List metrics) { } @@ -808,11 +809,13 @@ private static class ConcurrentMetricOperation implements Runnable { private final AtomicBoolean alive; private final String opName; private final Runnable op; + ConcurrentMetricOperation(AtomicBoolean alive, String opName, Runnable op) { this.alive = alive; this.opName = opName; this.op = op; } + @Override public void run() { try { @@ -839,6 +842,7 @@ enum StatType { METER(10); final int id; + StatType(int id) { this.id = id; } diff --git a/clients/src/test/java/org/apache/kafka/common/metrics/SensorTest.java b/clients/src/test/java/org/apache/kafka/common/metrics/SensorTest.java index 6b806c6bb7bd5..92b865761a2d9 100644 --- a/clients/src/test/java/org/apache/kafka/common/metrics/SensorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/metrics/SensorTest.java @@ -80,11 +80,11 @@ public void testRecordLevelEnum() { @Test public void testShouldRecordForInfoLevelSensor() { - Sensor infoSensor = new Sensor(null, "infoSensor", null, INFO_CONFIG, Time.SYSTEM, + Sensor infoSensor = new Sensor(null, "infoSensor", null, INFO_CONFIG, Time.SYSTEM, 0, Sensor.RecordingLevel.INFO); assertTrue(infoSensor.shouldRecord()); - infoSensor = new Sensor(null, "infoSensor", null, DEBUG_CONFIG, Time.SYSTEM, + infoSensor = new Sensor(null, "infoSensor", null, DEBUG_CONFIG, Time.SYSTEM, 0, Sensor.RecordingLevel.INFO); assertTrue(infoSensor.shouldRecord()); diff --git a/clients/src/test/java/org/apache/kafka/common/network/NioEchoServer.java b/clients/src/test/java/org/apache/kafka/common/network/NioEchoServer.java index df5e1aea7f8df..b8af3bf665a2f 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/NioEchoServer.java +++ b/clients/src/test/java/org/apache/kafka/common/network/NioEchoServer.java @@ -209,7 +209,7 @@ public void waitForMetrics(String namePrefix, final double expectedValue, Set metricValue(metricName) > 0.0, thisMaxWaitMs, () -> "Metric not updated " + metricName + " expected: but was:<" - + metricValue(metricName) + ">"); + + metricValue(metricName) + ">"); } } @@ -382,6 +382,7 @@ private class AcceptorThread extends Thread { public AcceptorThread() { setName("acceptor"); } + @Override public void run() { java.nio.channels.Selector acceptSelector = null; diff --git a/clients/src/test/java/org/apache/kafka/common/network/PlaintextSender.java b/clients/src/test/java/org/apache/kafka/common/network/PlaintextSender.java index 9a77a042db197..abb47b7579d46 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/PlaintextSender.java +++ b/clients/src/test/java/org/apache/kafka/common/network/PlaintextSender.java @@ -28,7 +28,7 @@ public final class PlaintextSender extends Thread { public PlaintextSender(final InetSocketAddress serverAddress, final byte[] payload) { super(() -> { try (Socket connection = new Socket(serverAddress.getAddress(), serverAddress.getPort()); - OutputStream os = connection.getOutputStream()) { + OutputStream os = connection.getOutputStream()) { os.write(payload); os.flush(); } catch (Exception e) { diff --git a/clients/src/test/java/org/apache/kafka/common/network/SelectorTest.java b/clients/src/test/java/org/apache/kafka/common/network/SelectorTest.java index 347f76135866d..abe96b24bfd67 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/SelectorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/network/SelectorTest.java @@ -404,11 +404,13 @@ public void testCloseAllChannels() throws Exception { AtomicInteger closedChannelsCount = new AtomicInteger(0); ChannelBuilder channelBuilder = new PlaintextChannelBuilder(null) { private int channelIndex = 0; + @Override KafkaChannel buildChannel(String id, TransportLayer transportLayer, Supplier authenticatorCreator, int maxReceiveSize, MemoryPool memoryPool, ChannelMetadataRegistry metadataRegistry) { return new KafkaChannel(id, transportLayer, authenticatorCreator, maxReceiveSize, memoryPool, metadataRegistry) { private final int index = channelIndex++; + @Override public void close() throws IOException { closedChannelsCount.getAndIncrement(); @@ -436,7 +438,7 @@ public void registerFailure() throws Exception { any(ChannelMetadataRegistry.class))).thenThrow(new RuntimeException("Test exception")); try (MockedConstruction mockedMetadataRegistry = - mockConstruction(Selector.SelectorChannelMetadataRegistry.class)) { + mockConstruction(Selector.SelectorChannelMetadataRegistry.class)) { Selector selector = new Selector(CONNECTION_MAX_IDLE_MS, new Metrics(), new MockTime(), "MetricGroup", channelBuilder, new LogContext()); final SocketChannel socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false); @@ -907,7 +909,7 @@ public void testLowestPriorityChannel() throws Exception { } assertNotNull(selector.lowestPriorityChannel()); for (int i = conns - 1; i >= 0; i--) { - if (i != 2) + if (i != 2) assertEquals("", blockingRequest(String.valueOf(i), "")); time.sleep(10); } diff --git a/clients/src/test/java/org/apache/kafka/common/network/SslSelectorTest.java b/clients/src/test/java/org/apache/kafka/common/network/SslSelectorTest.java index 572ec443e08af..0fcf4ea340ba7 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/SslSelectorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/network/SslSelectorTest.java @@ -211,7 +211,7 @@ void pollSelectionKeys(Set selectionKeys, boolean isImmediatelyCon // Truncate the read buffers to ensure that there is buffered data, but not enough to make progress. int largeRequestSize = 100 * 1024; connect(node1, new InetSocketAddress("localhost", server.port)); - selector.send(createSend(node1, TestUtils.randomString(largeRequestSize))); + selector.send(createSend(node1, TestUtils.randomString(largeRequestSize))); waitForBytesBuffered(selector, node1); TestSslChannelBuilder.TestSslTransportLayer.transportLayers.get(node1).truncateReadBuffer(); disableRead.accept(selector.channel(node1).selectionKey()); diff --git a/clients/src/test/java/org/apache/kafka/common/network/SslTransportLayerTest.java b/clients/src/test/java/org/apache/kafka/common/network/SslTransportLayerTest.java index e4b4c174a679e..182e20ef48b3e 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/SslTransportLayerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/network/SslTransportLayerTest.java @@ -1099,10 +1099,10 @@ false, securityProtocol, config, null, null, TIME, new LogContext(), NetworkTestUtils.checkClientConnection(oldClientSelector, oldNode, 100, 10); CertStores invalidCertStores = certBuilder(true, "server", args.useInlinePem).addHostName("127.0.0.1").build(); - Map invalidConfigs = args.getTrustingConfig(invalidCertStores, args.clientCertStores); + Map invalidConfigs = args.getTrustingConfig(invalidCertStores, args.clientCertStores); verifyInvalidReconfigure(reconfigurableBuilder, invalidConfigs); - Map missingStoreConfigs = new HashMap<>(); + Map missingStoreConfigs = new HashMap<>(); missingStoreConfigs.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, "PKCS12"); missingStoreConfigs.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, "some.keystore.path"); missingStoreConfigs.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, new Password("some.keystore.password")); @@ -1225,11 +1225,11 @@ false, securityProtocol, config, null, null, TIME, new LogContext(), // Verify that old client continues to work NetworkTestUtils.checkClientConnection(oldClientSelector, oldNode, 100, 10); - Map invalidConfigs = new HashMap<>(newTruststoreConfigs); + Map invalidConfigs = new HashMap<>(newTruststoreConfigs); invalidConfigs.put(SslConfigs.SSL_TRUSTSTORE_TYPE_CONFIG, "INVALID_TYPE"); verifyInvalidReconfigure(reconfigurableBuilder, invalidConfigs); - Map missingStoreConfigs = new HashMap<>(); + Map missingStoreConfigs = new HashMap<>(); missingStoreConfigs.put(SslConfigs.SSL_TRUSTSTORE_TYPE_CONFIG, "PKCS12"); missingStoreConfigs.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, "some.truststore.path"); missingStoreConfigs.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, new Password("some.truststore.password")); @@ -1284,7 +1284,7 @@ public void testInvalidSslEngineFactory(Args args) { } private void verifyInvalidReconfigure(ListenerReconfigurable reconfigurable, - Map invalidConfigs) { + Map invalidConfigs) { assertThrows(KafkaException.class, () -> reconfigurable.validateReconfiguration(invalidConfigs)); assertThrows(KafkaException.class, () -> reconfigurable.reconfigure(invalidConfigs)); } @@ -1509,9 +1509,11 @@ private void resetDelayedFlush() { static class ResizeableBufferSize { private Integer bufSizeOverride; + ResizeableBufferSize(Integer bufSizeOverride) { this.bufSizeOverride = bufSizeOverride; } + int updateAndGet(int actualSize, boolean update) { int size = actualSize; if (bufSizeOverride != null) { diff --git a/clients/src/test/java/org/apache/kafka/common/network/SslVersionsTransportLayerTest.java b/clients/src/test/java/org/apache/kafka/common/network/SslVersionsTransportLayerTest.java index b1a7aa5bc1fa9..1ef868e0aee53 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/SslVersionsTransportLayerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/network/SslVersionsTransportLayerTest.java @@ -80,7 +80,7 @@ public static Stream parameters() { @MethodSource("parameters") public void testTlsDefaults(List serverProtocols, List clientProtocols) throws Exception { // Create certificates for use by client and server. Add server cert to client truststore and vice versa. - CertStores serverCertStores = new CertStores(true, "server", "localhost"); + CertStores serverCertStores = new CertStores(true, "server", "localhost"); CertStores clientCertStores = new CertStores(false, "client", "localhost"); Map sslClientConfigs = getTrustingConfig(clientCertStores, serverCertStores, clientProtocols); diff --git a/clients/src/test/java/org/apache/kafka/common/network/Tls13SelectorTest.java b/clients/src/test/java/org/apache/kafka/common/network/Tls13SelectorTest.java index 7adc3d3eb3c0e..39d2ce1da7ad2 100644 --- a/clients/src/test/java/org/apache/kafka/common/network/Tls13SelectorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/network/Tls13SelectorTest.java @@ -79,7 +79,7 @@ public void testKeyUpdate() throws Exception { selector.send(createSend(node, node + "-" + 0)); selector.poll(0L); server.renegotiate(); - selector.send(createSend(node, node + "-" + 1)); + selector.send(createSend(node, node + "-" + 1)); List received = new ArrayList<>(); TestUtils.waitForCondition(() -> { try { diff --git a/clients/src/test/java/org/apache/kafka/common/protocol/ApiKeysTest.java b/clients/src/test/java/org/apache/kafka/common/protocol/ApiKeysTest.java index 85ba9b46b31f0..a53eb46dca133 100644 --- a/clients/src/test/java/org/apache/kafka/common/protocol/ApiKeysTest.java +++ b/clients/src/test/java/org/apache/kafka/common/protocol/ApiKeysTest.java @@ -65,7 +65,7 @@ public void testResponseThrottleTime() { Set authenticationKeys = EnumSet.of(ApiKeys.SASL_HANDSHAKE, ApiKeys.SASL_AUTHENTICATE); // Newer protocol apis include throttle time ms even for cluster actions Set clusterActionsWithThrottleTimeMs = EnumSet.of(ApiKeys.ALTER_PARTITION, ApiKeys.ALLOCATE_PRODUCER_IDS, ApiKeys.UPDATE_FEATURES); - for (ApiKeys apiKey: ApiKeys.clientApis()) { + for (ApiKeys apiKey : ApiKeys.clientApis()) { Schema responseSchema = apiKey.messageType.responseSchemas()[apiKey.latestVersion()]; BoundField throttleTimeField = responseSchema.get("throttle_time_ms"); if ((apiKey.clusterAction && !clusterActionsWithThrottleTimeMs.contains(apiKey)) diff --git a/clients/src/test/java/org/apache/kafka/common/protocol/types/RawTaggedFieldWriterTest.java b/clients/src/test/java/org/apache/kafka/common/protocol/types/RawTaggedFieldWriterTest.java index 78d0c1cf56dd1..c79500e3507ba 100644 --- a/clients/src/test/java/org/apache/kafka/common/protocol/types/RawTaggedFieldWriterTest.java +++ b/clients/src/test/java/org/apache/kafka/common/protocol/types/RawTaggedFieldWriterTest.java @@ -83,7 +83,7 @@ public void testOutOfOrderTags() { List tags = Arrays.asList( new RawTaggedField(5, new byte[] {0x4, 0x5, 0x6}), new RawTaggedField(2, new byte[] {0x1, 0x2, 0x3}), - new RawTaggedField(7, new byte[] {0x0 }) + new RawTaggedField(7, new byte[] {0x0}) ); RawTaggedFieldWriter writer = RawTaggedFieldWriter.forFields(tags); assertEquals(3, writer.numFields()); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/CompressionRatioEstimatorTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/CompressionRatioEstimatorTest.java index 2caad4de14f33..a9026a8f9e23b 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/CompressionRatioEstimatorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/CompressionRatioEstimatorTest.java @@ -30,6 +30,7 @@ public void testUpdateEstimation() { class EstimationsObservedRatios { final float currentEstimation; final float observedRatio; + EstimationsObservedRatios(float currentEstimation, float observedRatio) { this.currentEstimation = currentEstimation; this.observedRatio = observedRatio; diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordTypeTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordTypeTest.java index 2a0d42bd292d6..28e447d5c83f2 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordTypeTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordTypeTest.java @@ -65,7 +65,7 @@ public void testRoundTrip(ControlRecordType expected) { return; } for (short version = ControlRecordTypeSchema.LOWEST_SUPPORTED_VERSION; - version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { + version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { ByteBuffer buffer = expected.recordKey(); ControlRecordType deserializedKey = ControlRecordType.parse(buffer); assertEquals(expected, deserializedKey); @@ -76,7 +76,7 @@ public void testRoundTrip(ControlRecordType expected) { @EnumSource(value = ControlRecordType.class) public void testValueControlRecordKeySize(ControlRecordType type) { for (short version = ControlRecordTypeSchema.LOWEST_SUPPORTED_VERSION; - version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { + version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { assertEquals(4, type.controlRecordKeySize()); } } @@ -85,7 +85,7 @@ public void testValueControlRecordKeySize(ControlRecordType type) { @EnumSource(value = ControlRecordType.class) public void testBackwardDeserializeCompatibility(ControlRecordType type) { for (short version = ControlRecordTypeSchema.LOWEST_SUPPORTED_VERSION; - version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { + version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { Struct struct = new Struct(v0Schema); struct.set("version", version); struct.set("type", type.type()); @@ -106,7 +106,7 @@ public void testForwardDeserializeCompatibility(ControlRecordType type) { return; } for (short version = ControlRecordTypeSchema.LOWEST_SUPPORTED_VERSION; - version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { + version <= ControlRecordTypeSchema.HIGHEST_SUPPORTED_VERSION; version++) { ByteBuffer newVersionBuffer = type.recordKey(); Struct struct = v0Schema.read(newVersionBuffer); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordUtilsTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordUtilsTest.java index 9ef0e6c06be49..7fa59dc07ff09 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordUtilsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/ControlRecordUtilsTest.java @@ -92,7 +92,7 @@ private void testDeserializeRecord(ControlRecordType controlRecordType) { byte[] keyData = new byte[]{0, 0, 0, (byte) controlRecordType.type()}; DefaultRecord record = new DefaultRecord( - 256, (byte) 0, 0, 0L, 0, ByteBuffer.wrap(keyData), valueBuffer, null + 256, (byte) 0, 0, 0L, 0, ByteBuffer.wrap(keyData), valueBuffer, null ); VotersRecord deserializedData = ControlRecordUtils.deserializeVotersRecord(record); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/DefaultRecordBatchTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/DefaultRecordBatchTest.java index f48168a26a7e1..c18e7661c3bcf 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/DefaultRecordBatchTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/DefaultRecordBatchTest.java @@ -473,6 +473,7 @@ public void testBufferReuseInSkipKeyValueIterator(CompressionType compressionTyp verify(bufferSupplier, times(expectedNumBufferAllocations)).release(any(ByteBuffer.class)); } } + private static Stream testBufferReuseInSkipKeyValueIterator() { byte[] smallRecordValue = "1".getBytes(); byte[] largeRecordValue = new byte[512 * 1024]; // 512KB diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/EndTransactionMarkerTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/EndTransactionMarkerTest.java index df6478af79270..e1c357e2b066e 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/EndTransactionMarkerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/EndTransactionMarkerTest.java @@ -85,9 +85,9 @@ public void testDeserializeNewerVersion() { @Test public void testSerializeAndDeserialize() { - for (ControlRecordType type: VALID_CONTROLLER_RECORD_TYPE) { + for (ControlRecordType type : VALID_CONTROLLER_RECORD_TYPE) { for (short version = EndTxnMarker.LOWEST_SUPPORTED_VERSION; - version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { + version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { EndTransactionMarker marker = new EndTransactionMarker(type, 1); ByteBuffer buffer = marker.serializeValue(); @@ -99,7 +99,7 @@ public void testSerializeAndDeserialize() { @Test public void testEndTxnMarkerValueSize() { - for (ControlRecordType type: VALID_CONTROLLER_RECORD_TYPE) { + for (ControlRecordType type : VALID_CONTROLLER_RECORD_TYPE) { EndTransactionMarker marker = new EndTransactionMarker(type, 1); int offsetSize = ByteUtils.sizeOfVarint(0); int timestampSize = ByteUtils.sizeOfVarlong(0); @@ -107,16 +107,16 @@ public void testEndTxnMarkerValueSize() { int valueSize = marker.serializeValue().remaining(); int headerSize = ByteUtils.sizeOfVarint(Record.EMPTY_HEADERS.length); int totalSize = 1 + offsetSize + timestampSize + ByteUtils.sizeOfVarint(keySize) + keySize + ByteUtils.sizeOfVarint(valueSize) + valueSize + headerSize; - assertEquals(ByteUtils.sizeOfVarint(totalSize) + totalSize, marker.endTxnMarkerValueSize()); + assertEquals(ByteUtils.sizeOfVarint(totalSize) + totalSize, marker.endTxnMarkerValueSize()); } } @Test public void testBackwardDeserializeCompatibility() { int coordinatorEpoch = 10; - for (ControlRecordType type: VALID_CONTROLLER_RECORD_TYPE) { + for (ControlRecordType type : VALID_CONTROLLER_RECORD_TYPE) { for (short version = EndTxnMarker.LOWEST_SUPPORTED_VERSION; - version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { + version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { Struct struct = new Struct(v0Schema); struct.set("version", version); @@ -136,9 +136,9 @@ public void testBackwardDeserializeCompatibility() { @Test public void testForwardDeserializeCompatibility() { int coordinatorEpoch = 10; - for (ControlRecordType type: VALID_CONTROLLER_RECORD_TYPE) { + for (ControlRecordType type : VALID_CONTROLLER_RECORD_TYPE) { for (short version = EndTxnMarker.LOWEST_SUPPORTED_VERSION; - version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { + version <= EndTxnMarker.HIGHEST_SUPPORTED_VERSION; version++) { EndTransactionMarker marker = new EndTransactionMarker(type, coordinatorEpoch); ByteBuffer newVersionBuffer = marker.serializeValue(); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/FileLogInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/FileLogInputStreamTest.java index e057bec9a07f1..debbe90074bbe 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/FileLogInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/FileLogInputStreamTest.java @@ -72,7 +72,7 @@ private static class FileLogInputStreamArgumentsProvider implements ArgumentsPro public Stream provideArguments(ExtensionContext context) { List arguments = new ArrayList<>(); for (byte magic : asList(MAGIC_VALUE_V0, MAGIC_VALUE_V1, MAGIC_VALUE_V2)) - for (CompressionType type: CompressionType.values()) + for (CompressionType type : CompressionType.values()) arguments.add(Arguments.of(new Args(magic, Compression.of(type).build()))); return arguments.stream(); } diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/FileRecordsTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/FileRecordsTest.java index f0831f556d9e9..dd82f03e48223 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/FileRecordsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/FileRecordsTest.java @@ -272,7 +272,7 @@ public void testSearch() throws IOException { fileRecords.searchForOffsetFromPosition(3, position), "Should be able to find fourth message from a non-existent offset"); assertEquals(new FileRecords.LogOffsetPosition(50L, position, message4Size), - fileRecords.searchForOffsetFromPosition(50, position), + fileRecords.searchForOffsetFromPosition(50, position), "Should be able to find fourth message by correct offset"); } @@ -438,7 +438,7 @@ public void testSliceForAlreadySlicedFileRecords() throws IOException { // Slice from fourth message until the end. int position = IntStream.range(0, 3).map(i -> items.get(i).sizeInBytes()).sum(); - Records sliced = fileRecords.slice(position, fileRecords.sizeInBytes() - position); + Records sliced = fileRecords.slice(position, fileRecords.sizeInBytes() - position); assertEquals(fileRecords.sizeInBytes() - position, sliced.sizeInBytes()); assertEquals(items.subList(3, items.size()), batches(sliced), "Read starting from the fourth message"); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsBuilderTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsBuilderTest.java index 0f8131ab1b27e..4db05e53adabd 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsBuilderTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsBuilderTest.java @@ -79,7 +79,7 @@ private static class MemoryRecordsBuilderArgumentsProvider implements ArgumentsP public Stream provideArguments(ExtensionContext context) { List values = new ArrayList<>(); for (int bufferOffset : Arrays.asList(0, 15)) - for (CompressionType type: CompressionType.values()) { + for (CompressionType type : CompressionType.values()) { List magics = type == CompressionType.ZSTD ? Collections.singletonList(RecordBatch.MAGIC_VALUE_V2) : asList(RecordBatch.MAGIC_VALUE_V0, MAGIC_VALUE_V1, RecordBatch.MAGIC_VALUE_V2); @@ -126,7 +126,7 @@ public void testWriteTransactionalRecordSet(Args args) { short epoch = 15; int sequence = 2342; - Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, + Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, TimestampType.CREATE_TIME, 0L, 0L, pid, epoch, sequence, true, false, RecordBatch.NO_PARTITION_LEADER_EPOCH, buffer.capacity()); @@ -151,7 +151,7 @@ public void testWriteTransactionalWithInvalidPID(Args args) { short epoch = 15; int sequence = 2342; - Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, TimestampType.CREATE_TIME, + Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, TimestampType.CREATE_TIME, 0L, 0L, pid, epoch, sequence, true, false, RecordBatch.NO_PARTITION_LEADER_EPOCH, buffer.capacity()); if (args.magic < MAGIC_VALUE_V2) { assertThrows(IllegalArgumentException.class, supplier::get); @@ -267,7 +267,7 @@ public void testWriteLeaderChangeControlBatch(Args args) { final int leaderEpoch = 5; final List voters = Arrays.asList(2, 3); - Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, + Supplier supplier = () -> new MemoryRecordsBuilder(buffer, args.magic, args.compression, TimestampType.CREATE_TIME, 0L, 0L, RecordBatch.NO_PRODUCER_ID, RecordBatch.NO_PRODUCER_EPOCH, RecordBatch.NO_SEQUENCE, false, true, leaderEpoch, buffer.capacity()); @@ -388,6 +388,7 @@ public void buildUsingLogAppendTime(Args args) { } } } + @ParameterizedTest @ArgumentsSource(MemoryRecordsBuilderArgumentsProvider.class) public void buildUsingCreateTime(Args args) { @@ -628,7 +629,7 @@ private static class V2MemoryRecordsBuilderArgumentsProvider implements Argument public Stream provideArguments(ExtensionContext context) { List values = new ArrayList<>(); for (int bufferOffset : Arrays.asList(0, 15)) - for (CompressionType type: CompressionType.values()) { + for (CompressionType type : CompressionType.values()) { values.add(Arguments.of(new Args(bufferOffset, Compression.of(type).build(), MAGIC_VALUE_V2))); } return values.stream(); diff --git a/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsTest.java b/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsTest.java index 83b174cccd62f..8d08f45e26dc5 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/internal/MemoryRecordsTest.java @@ -99,7 +99,7 @@ private static class MemoryRecordsArgumentsProvider implements ArgumentsProvider public Stream provideArguments(ExtensionContext context) { List arguments = new ArrayList<>(); for (long firstOffset : asList(0L, 57L)) - for (CompressionType type: CompressionType.values()) { + for (CompressionType type : CompressionType.values()) { List magics = type == CompressionType.ZSTD ? Collections.singletonList(RecordBatch.MAGIC_VALUE_V2) : asList(RecordBatch.MAGIC_VALUE_V0, RecordBatch.MAGIC_VALUE_V1, RecordBatch.MAGIC_VALUE_V2); @@ -115,7 +115,7 @@ private static class V2MemoryRecordsArgumentsProvider implements ArgumentsProvid public Stream provideArguments(ExtensionContext context) { List arguments = new ArrayList<>(); for (long firstOffset : asList(0L, 57L)) - for (CompressionType type: CompressionType.values()) { + for (CompressionType type : CompressionType.values()) { arguments.add(Arguments.of(new Args(RecordBatch.MAGIC_VALUE_V2, firstOffset, Compression.of(type).build()))); } return arguments.stream(); @@ -1198,7 +1198,7 @@ public void testSliceForAlreadySlicedMemoryRecords(Args args) { // Slice from third message until the end. int position = IntStream.range(0, 2).map(i -> items.get(i).sizeInBytes()).sum(); - Records sliced = records.slice(position, records.sizeInBytes() - position); + Records sliced = records.slice(position, records.sizeInBytes() - position); assertEquals(records.sizeInBytes() - position, sliced.sizeInBytes()); assertEquals(items.subList(2, items.size()), batches(sliced), "Read starting from the third message"); diff --git a/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequestTest.java index 904bb0ea08482..a3596ae776a58 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnRequestTest.java @@ -50,7 +50,7 @@ public class AddPartitionsToTxnRequestTest { @ParameterizedTest @ApiKeyVersionsSource(apiKey = ApiKeys.ADD_PARTITIONS_TO_TXN) public void testConstructor(short version) { - + AddPartitionsToTxnRequest request; if (version < 4) { @@ -70,7 +70,7 @@ public void testConstructor(short version) { AddPartitionsToTxnRequest.Builder builder = AddPartitionsToTxnRequest.Builder.forBroker(transactions); request = builder.build(version); - + AddPartitionsToTxnTransaction reqTxn1 = request.data().transactions().find(transactionalId1); AddPartitionsToTxnTransaction reqTxn2 = request.data().transactions().find(transactionalId2); @@ -80,42 +80,42 @@ public void testConstructor(short version) { AddPartitionsToTxnResponse response = request.getErrorResponse(THROTTLE_TIME_MS, Errors.UNKNOWN_TOPIC_OR_PARTITION.exception()); assertEquals(THROTTLE_TIME_MS, response.throttleTimeMs()); - + if (version >= 4) { assertEquals(Errors.UNKNOWN_TOPIC_OR_PARTITION.code(), response.data().errorCode()); // Since the error is top level, we count it as one error in the counts. assertEquals(Collections.singletonMap(Errors.UNKNOWN_TOPIC_OR_PARTITION, 1), response.errorCounts()); } else { - assertEquals(Collections.singletonMap(Errors.UNKNOWN_TOPIC_OR_PARTITION, 2), response.errorCounts()); + assertEquals(Collections.singletonMap(Errors.UNKNOWN_TOPIC_OR_PARTITION, 2), response.errorCounts()); } } - + @Test public void testBatchedRequests() { AddPartitionsToTxnTransactionCollection transactions = createTwoTransactionCollection(); AddPartitionsToTxnRequest.Builder builder = AddPartitionsToTxnRequest.Builder.forBroker(transactions); AddPartitionsToTxnRequest request = builder.build(ApiKeys.ADD_PARTITIONS_TO_TXN.latestVersion()); - + Map> expectedMap = new HashMap<>(); expectedMap.put(transactionalId1, Collections.singletonList(TP_0)); expectedMap.put(transactionalId2, Collections.singletonList(TP_1)); - + assertEquals(expectedMap, request.partitionsByTransaction()); AddPartitionsToTxnResponseData.AddPartitionsToTxnResultCollection results = new AddPartitionsToTxnResponseData.AddPartitionsToTxnResultCollection(); - + results.add(request.errorResponseForTransaction(transactionalId1, Errors.UNKNOWN_TOPIC_OR_PARTITION)); results.add(request.errorResponseForTransaction(transactionalId2, Errors.TRANSACTIONAL_ID_AUTHORIZATION_FAILED)); - + AddPartitionsToTxnResponse response = new AddPartitionsToTxnResponse(new AddPartitionsToTxnResponseData() .setResultsByTransaction(results) .setThrottleTimeMs(THROTTLE_TIME_MS)); - + assertEquals(Collections.singletonMap(TP_0, Errors.UNKNOWN_TOPIC_OR_PARTITION), errorsForTransaction(response.getTransactionTopicResults(transactionalId1))); assertEquals(Collections.singletonMap(TP_1, Errors.TRANSACTIONAL_ID_AUTHORIZATION_FAILED), errorsForTransaction(response.getTransactionTopicResults(transactionalId2))); } - + @Test public void testNormalizeRequest() { List partitions = new ArrayList<>(); @@ -127,12 +127,12 @@ public void testNormalizeRequest() { AddPartitionsToTxnRequest singleton = request.normalizeRequest(); assertEquals(partitions, singleton.partitionsByTransaction().get(transactionalId1)); - + AddPartitionsToTxnTransaction transaction = singleton.data().transactions().find(transactionalId1); assertEquals(PRODUCER_ID, transaction.producerId()); assertEquals(PRODUCER_EPOCH, transaction.producerEpoch()); } - + private AddPartitionsToTxnTransactionCollection createTwoTransactionCollection() { AddPartitionsToTxnTopicCollection topics0 = new AddPartitionsToTxnTopicCollection(); topics0.add(new AddPartitionsToTxnTopic() diff --git a/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponseTest.java b/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponseTest.java index 6a100158558e6..989aaed215e5a 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponseTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/AddPartitionsToTxnResponseTest.java @@ -84,7 +84,7 @@ public void testParse(short version) { .setPartitionIndex(partitionTwo)); topicCollection.add(topicResult); - + if (version < 4) { AddPartitionsToTxnResponseData data = new AddPartitionsToTxnResponseData() .setResultsByTopicV3AndBelow(topicCollection) @@ -98,7 +98,7 @@ public void testParse(short version) { } else { AddPartitionsToTxnResultCollection results = new AddPartitionsToTxnResultCollection(); results.add(new AddPartitionsToTxnResult().setTransactionalId("txn1").setTopicResults(topicCollection)); - + // Create another transaction with new name and errorOne for a single partition. Map txnTwoExpectedErrors = Collections.singletonMap(tp2, errorOne); results.add(AddPartitionsToTxnResponse.resultForTransaction("txn2", txnTwoExpectedErrors)); @@ -112,7 +112,7 @@ public void testParse(short version) { newExpectedErrorCounts.put(Errors.NONE, 1); // top level error newExpectedErrorCounts.put(errorOne, 2); newExpectedErrorCounts.put(errorTwo, 1); - + AddPartitionsToTxnResponse parsedResponse = AddPartitionsToTxnResponse.parse(response.serialize(version), version); assertEquals(txnTwoExpectedErrors, errorsForTransaction(response.getTransactionTopicResults("txn2"))); assertEquals(newExpectedErrorCounts, parsedResponse.errorCounts()); @@ -120,24 +120,24 @@ public void testParse(short version) { assertTrue(parsedResponse.shouldClientThrottle(version)); } } - + @Test public void testBatchedErrors() { Map txn1Errors = Collections.singletonMap(tp1, errorOne); Map txn2Errors = Collections.singletonMap(tp1, errorOne); - + AddPartitionsToTxnResult transaction1 = AddPartitionsToTxnResponse.resultForTransaction("txn1", txn1Errors); AddPartitionsToTxnResult transaction2 = AddPartitionsToTxnResponse.resultForTransaction("txn2", txn2Errors); - + AddPartitionsToTxnResultCollection results = new AddPartitionsToTxnResultCollection(); results.add(transaction1); results.add(transaction2); - + AddPartitionsToTxnResponse response = new AddPartitionsToTxnResponse(new AddPartitionsToTxnResponseData().setResultsByTransaction(results)); - + assertEquals(txn1Errors, errorsForTransaction(response.getTransactionTopicResults("txn1"))); assertEquals(txn2Errors, errorsForTransaction(response.getTransactionTopicResults("txn2"))); - + Map> expectedErrors = new HashMap<>(); expectedErrors.put("txn1", txn1Errors); expectedErrors.put("txn2", txn2Errors); diff --git a/clients/src/test/java/org/apache/kafka/common/requests/ApiVersionsResponseTest.java b/clients/src/test/java/org/apache/kafka/common/requests/ApiVersionsResponseTest.java index ae1755a035c1e..5ae5a105d1587 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/ApiVersionsResponseTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/ApiVersionsResponseTest.java @@ -166,7 +166,7 @@ public void shouldNotCreateApiResponseWithTelemetryWhenDisabled() { build(); verifyApiKeysForTelemetry(response, 0); } - + @Test public void testBrokerApisAreEnabled() { ApiVersionsResponse response = new ApiVersionsResponse.Builder(). diff --git a/clients/src/test/java/org/apache/kafka/common/requests/FetchRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/FetchRequestTest.java index 2d8652bae4df2..188d6cb7a7e09 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/FetchRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/FetchRequestTest.java @@ -249,9 +249,9 @@ public void testFetchRequestNoCacheData(short version) { Uuid topicId = Uuid.randomUuid(); int partition = 0; TopicIdPartition tp = new TopicIdPartition(topicId, partition, "topic"); - + FetchRequest fetchRequest = createFetchRequestByVersion(version, topicId, tp); - + Map topicNames = Collections.singletonMap(topicId, tp.topic()); List requestsWithTopicsName = fetchRequest.forgottenTopics(topicNames); assertEquals(topicNames.size(), requestsWithTopicsName.size()); diff --git a/clients/src/test/java/org/apache/kafka/common/requests/JoinGroupRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/JoinGroupRequestTest.java index c70b7eda5da98..c3a29fba659d5 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/JoinGroupRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/JoinGroupRequestTest.java @@ -53,6 +53,7 @@ public void shouldThrowOnInvalidGroupInstanceIds() { "InvalidConfigurationException expected as instance id is invalid."); } } + @Test public void testRequestVersionCompatibilityFailBuild() { assertThrows(UnsupportedVersionException.class, () -> new JoinGroupRequest.Builder( diff --git a/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupRequestTest.java index 82e647128f968..63278dcf3f537 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupRequestTest.java @@ -70,7 +70,7 @@ public void testMultiLeaveConstructor() { LeaveGroupRequest request = builder.build(version); if (version <= 2) { fail("Older version " + version + - " request data should not be created due to non-single members"); + " request data should not be created due to non-single members"); } assertEquals(expectedData, request.data()); assertEquals(members, request.members()); diff --git a/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupResponseTest.java b/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupResponseTest.java index 4d73c042c5bb7..eb6a8e4021fbc 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupResponseTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/LeaveGroupResponseTest.java @@ -199,7 +199,7 @@ public void testNoErrorMultipleMembersResponses(short version) { assertEquals(memberResponses, response.memberResponses()); } } - + @ParameterizedTest @ApiKeyVersionsSource(apiKey = ApiKeys.LEAVE_GROUP) public void testErrorResponses(short version) { @@ -209,11 +209,11 @@ public void testErrorResponses(short version) { LeaveGroupResponse responseNoMembers = new LeaveGroupResponse(dataNoMembers, version); assertEquals(Errors.GROUP_ID_NOT_FOUND, responseNoMembers.topLevelError()); - + LeaveGroupResponseData dataMembers = new LeaveGroupResponseData() .setErrorCode(Errors.GROUP_ID_NOT_FOUND.code()) .setMembers(memberResponses); - + LeaveGroupResponse responseMembers = new LeaveGroupResponse(dataMembers, version); assertEquals(Errors.GROUP_ID_NOT_FOUND, responseMembers.topLevelError()); } diff --git a/clients/src/test/java/org/apache/kafka/common/requests/ListOffsetsRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/ListOffsetsRequestTest.java index 48542c1a2fd7d..cd4b01468cb69 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/ListOffsetsRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/ListOffsetsRequestTest.java @@ -73,7 +73,7 @@ public void testGetErrorResponse() { .setTargetTimes(topics) .build(version); ListOffsetsResponse response = (ListOffsetsResponse) request.getErrorResponse(0, Errors.NOT_LEADER_OR_FOLLOWER.exception()); - + List v = Collections.singletonList( new ListOffsetsTopicResponse() .setName("topic") diff --git a/clients/src/test/java/org/apache/kafka/common/requests/ProduceRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/ProduceRequestTest.java index 3850b256bcb56..2825b98d8ff66 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/ProduceRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/ProduceRequestTest.java @@ -330,7 +330,7 @@ private ProduceRequest createNonIdempotentNonTransactionalRecords() { return ProduceRequest.builder(new ProduceRequestData() .setTopicData(new ProduceRequestData.TopicProduceDataCollection(Collections.singletonList( new ProduceRequestData.TopicProduceData() - .setTopicId(Uuid.fromString("H3Emm3vW7AKKO4NTRPaCWt")) + .setTopicId(Uuid.fromString("H3Emm3vW7AKKO4NTRPaCWt")) .setPartitionData(Collections.singletonList(new ProduceRequestData.PartitionProduceData() .setIndex(1) .setRecords(MemoryRecords.withRecords(Compression.NONE, simpleRecord))))) diff --git a/clients/src/test/java/org/apache/kafka/common/requests/ProduceResponseTest.java b/clients/src/test/java/org/apache/kafka/common/requests/ProduceResponseTest.java index 7a9a8e5ca255e..abbd4fdc70291 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/ProduceResponseTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/ProduceResponseTest.java @@ -56,7 +56,7 @@ public void produceResponseVersionTest() { for (ProduceResponse produceResponse : arrResponse) { assertEquals(1, produceResponse.data().responses().size()); ProduceResponseData.TopicProduceResponse topicProduceResponse = produceResponse.data().responses().iterator().next(); - assertEquals(1, topicProduceResponse.partitionResponses().size()); + assertEquals(1, topicProduceResponse.partitionResponses().size()); ProduceResponseData.PartitionProduceResponse partitionProduceResponse = topicProduceResponse.partitionResponses().iterator().next(); assertEquals(100, partitionProduceResponse.logStartOffset()); assertEquals(10000, partitionProduceResponse.baseOffset()); diff --git a/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryRequestTest.java b/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryRequestTest.java index e133fbac3c8f2..6577cd7b8dc9e 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryRequestTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryRequestTest.java @@ -91,7 +91,7 @@ private MetricsData getMetricsData() { new MetricKey("metricName"), 1.0, true, Instant.now(), null, Collections.emptySet()) .builder().build()); metricsList.add(SinglePointMetric.sum( - new MetricKey("metricName1"), 100.0, false, Instant.now(), Instant.now(), Collections.emptySet()) + new MetricKey("metricName1"), 100.0, false, Instant.now(), Instant.now(), Collections.emptySet()) .builder().build()); metricsList.add(SinglePointMetric.deltaSum( new MetricKey("metricName2"), 1.0, true, Instant.now(), Instant.now(), Collections.emptySet()) diff --git a/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryResponseTest.java b/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryResponseTest.java index ddafd48602fd7..17a34c3f0d818 100644 --- a/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryResponseTest.java +++ b/clients/src/test/java/org/apache/kafka/common/requests/PushTelemetryResponseTest.java @@ -39,7 +39,7 @@ public void testErrorCountsReturnsNoneWhenNoErrors() { @Test public void testErrorCountsReturnsOneError() { PushTelemetryResponseData data = new PushTelemetryResponseData() - .setErrorCode(Errors.CLUSTER_AUTHORIZATION_FAILED.code()); + .setErrorCode(Errors.CLUSTER_AUTHORIZATION_FAILED.code()); data.setErrorCode(Errors.INVALID_CONFIG.code()); PushTelemetryResponse response = new PushTelemetryResponse(data); diff --git a/clients/src/test/java/org/apache/kafka/common/security/JaasContextTest.java b/clients/src/test/java/org/apache/kafka/common/security/JaasContextTest.java index 760b1afc41fa6..ec4a46e6d351d 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/JaasContextTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/JaasContextTest.java @@ -215,7 +215,7 @@ public void testDisallowedLoginModulesSystemProperty() throws Exception { System.setProperty(DISALLOWED_LOGIN_MODULES_CONFIG, " com.ibm.security.auth.module.LdapLoginModule , com.ibm.security.auth.module.Krb5LoginModule "); String jaasConfigProp3 = "com.ibm.security.auth.module.LdapLoginModule required;"; - assertThrows(IllegalArgumentException.class, () -> configurationEntry(JaasContext.Type.CLIENT, jaasConfigProp3)); + assertThrows(IllegalArgumentException.class, () -> configurationEntry(JaasContext.Type.CLIENT, jaasConfigProp3)); //test ListenerName Override writeConfiguration(Arrays.asList( @@ -254,9 +254,9 @@ public void testDisallowedLoginModulesSystemProperty() throws Exception { checkEntry(context.configurationEntries().get(0), "com.sun.security.auth.module.LdapLoginModule", LoginModuleControlFlag.REQUISITE, Collections.emptyMap()); } - + @Test - void testAllowedLoginModulesSystemProperty() { + void testAllowedLoginModulesSystemProperty() { AppConfigurationEntry ldap = new AppConfigurationEntry( "com.ibm.security.auth.module.LdapLoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, @@ -273,16 +273,16 @@ void testAllowedLoginModulesSystemProperty() { // set allowed list, but not set disallowed list System.setProperty(JaasUtils.ALLOWED_LOGIN_MODULES_CONFIG, "com.ibm.security.auth.module.LdapLoginModule"); throwIfLoginModuleIsNotAllowed(ldap); - assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(jndi)); - + assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(jndi)); + // set both allowed list and disallowed list System.setProperty(JaasUtils.DISALLOWED_LOGIN_MODULES_CONFIG, "com.ibm.security.auth.module.LdapLoginModule"); throwIfLoginModuleIsNotAllowed(ldap); - assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(jndi)); - + assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(jndi)); + // set disallowed list, but not set allowed list System.clearProperty(JaasUtils.ALLOWED_LOGIN_MODULES_CONFIG); - IllegalArgumentException error = assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(ldap)); + IllegalArgumentException error = assertThrows(IllegalArgumentException.class, () -> throwIfLoginModuleIsNotAllowed(ldap)); // Ensure the exception message includes the deprecation warning for the disallowed login modules config assertTrue(error.getMessage().contains("The system property '" + DISALLOWED_LOGIN_MODULES_CONFIG + "' is deprecated.")); throwIfLoginModuleIsNotAllowed(jndi); diff --git a/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslAuthenticatorTest.java b/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslAuthenticatorTest.java index 13ffba2715d56..c645cd1c23630 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslAuthenticatorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslAuthenticatorTest.java @@ -252,7 +252,7 @@ public void testSaslAuthenticationMaxReceiveSize() throws Exception { sendHandshakeRequestReceiveResponse(node3, ApiKeys.SASL_HANDSHAKE.latestVersion()); // test with sasl authenticate request with large auth_byes string - String authString = "\u0000" + TestJaasConfig.USERNAME + "\u0000" + new String(bytes, StandardCharsets.UTF_8); + String authString = "\u0000" + TestJaasConfig.USERNAME + "\u0000" + new String(bytes, StandardCharsets.UTF_8); ByteBuffer authBuf = ByteBuffer.wrap(Utils.utf8(authString)); SaslAuthenticateRequestData data = new SaslAuthenticateRequestData().setAuthBytes(authBuf.array()); SaslAuthenticateRequest request = new SaslAuthenticateRequest.Builder(data).build(); @@ -463,7 +463,7 @@ public void testMultipleServerMechanisms() throws Exception { selector.connect(node3, new InetSocketAddress("localhost", server.port()), BUFFER_SIZE, BUFFER_SIZE); NetworkTestUtils.checkClientConnection(selector, node3, 100, 10); server.verifyAuthenticationMetrics(3, 0); - + /* * Now re-authenticate the connections. First we have to sleep long enough so * that the next write will cause re-authentication, which we expect to succeed. @@ -476,7 +476,7 @@ public void testMultipleServerMechanisms() throws Exception { NetworkTestUtils.checkClientConnection(selector3, node3, 100, 10); server.verifyReauthenticationMetrics(2, 0); - + } finally { if (selector2 != null) selector2.close(); @@ -892,7 +892,7 @@ public void testSaslHandshakeRequestWithUnsupportedVersion() throws Exception { createClientConnection(SecurityProtocol.PLAINTEXT, node1); SaslHandshakeRequest request = buildSaslHandshakeRequest("PLAIN", ApiKeys.SASL_HANDSHAKE.latestVersion()); RequestHeader header = new RequestHeader(ApiKeys.SASL_HANDSHAKE, Short.MAX_VALUE, "someclient", 2); - + selector.send(new NetworkSend(node1, request.toSend(header))); // This test uses a non-SASL PLAINTEXT client in order to do manual handshake. // So the channel is in READY state. @@ -1583,7 +1583,7 @@ public void testValidSaslOauthBearerMechanism() throws Exception { server = createEchoServer(securityProtocol); createAndCheckClientConnection(securityProtocol, node); } - + /** * Re-authentication must fail if principal changes */ @@ -1697,7 +1697,7 @@ public void testConvertListOffsetResponseToSaslHandshakeResponse() { final RequestHeader header1 = new RequestHeader(LIST_OFFSETS, LIST_OFFSETS.latestVersion(), "id", 1); assertThrows(IllegalStateException.class, () -> NetworkClient.parseResponse(buffer.duplicate(), header1)); } - + /** * Re-authentication must fail if mechanism changes */ @@ -1817,7 +1817,7 @@ public void testRepeatedValidSaslPlainOverSsl() throws Exception { } server.verifyReauthenticationMetrics(desiredNumReauthentications, 0); } - + /** * Tests OAUTHBEARER client channels without tokens for the server. */ @@ -2154,6 +2154,7 @@ transportLayer, time, new LogContext()) { protected SaslHandshakeRequest createSaslHandshakeRequest(short version) { return buildSaslHandshakeRequest(saslMechanism, (short) 0); } + @Override protected void setSaslAuthenticateAndHandshakeVersions(ApiVersionsResponse apiVersionsResponse) { // Don't set version so that headers are disabled @@ -2328,7 +2329,7 @@ private void createClientConnection(SecurityProtocol securityProtocol, String no InetSocketAddress addr = new InetSocketAddress("localhost", server.port()); selector.connect(node, addr, BUFFER_SIZE, BUFFER_SIZE); } - + private void checkClientConnection(String node) throws Exception { NetworkTestUtils.checkClientConnection(selector, node, 100, 10); } @@ -2429,7 +2430,7 @@ private SaslHandshakeResponse sendHandshakeRequestReceiveResponse(String node, s private ApiVersionsResponse sendVersionRequestReceiveResponse(String node) throws Exception { ApiVersionsRequest handshakeRequest = createApiVersionsRequestV0(); - ApiVersionsResponse response = (ApiVersionsResponse) sendKafkaRequestReceiveResponse(node, ApiKeys.API_VERSIONS, handshakeRequest); + ApiVersionsResponse response = (ApiVersionsResponse) sendKafkaRequestReceiveResponse(node, ApiKeys.API_VERSIONS, handshakeRequest); assertEquals(Errors.NONE.code(), response.data().errorCode()); return response; } @@ -2553,6 +2554,7 @@ public static class TestLogin implements Login { private String contextName; private Configuration configuration; private Subject subject; + @Override public void configure(Map configs, String contextName, Configuration configuration, AuthenticateCallbackHandler callbackHandler) { @@ -2591,6 +2593,7 @@ public void close() { public static class TestLoginCallbackHandler implements AuthenticateCallbackHandler { private volatile boolean configured = false; + @Override public void configure(Map configs, String saslMechanism, List jaasConfigEntries) { if (configured) diff --git a/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticatorTest.java b/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticatorTest.java index 710caeb150a34..ffa0e26d7cf70 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticatorTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/authenticator/SaslServerAuthenticatorTest.java @@ -91,7 +91,7 @@ public class SaslServerAuthenticatorTest { private final String clientId = "clientId"; - + @Test public void testOversizeRequest() throws IOException { TransportLayer transportLayer = mock(TransportLayer.class); @@ -180,9 +180,9 @@ public void testSessionExpiresAtTokenExpiryDespiteNoReauthIsSet() throws IOExcep MockTime time = new MockTime(); try ( - MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpirationDuration); - MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); - TransportLayer transportLayer = mockTransportLayer() + MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpirationDuration); + MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); + TransportLayer transportLayer = mockTransportLayer() ) { SaslServerAuthenticator authenticator = getSaslServerAuthenticatorForOAuth(mechanism, transportLayer, time, 0L); @@ -213,9 +213,9 @@ public void testSessionExpiresAtMaxReauthTime() throws IOException { Duration tokenExpiryGreaterThanMaxReauth = Duration.ofMillis(maxReauthMs).multipliedBy(10); try ( - MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpiryGreaterThanMaxReauth); - MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); - TransportLayer transportLayer = mockTransportLayer() + MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpiryGreaterThanMaxReauth); + MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); + TransportLayer transportLayer = mockTransportLayer() ) { SaslServerAuthenticator authenticator = getSaslServerAuthenticatorForOAuth(mechanism, transportLayer, time, maxReauthMs); @@ -246,9 +246,9 @@ public void testSessionExpiresAtTokenExpiry() throws IOException { long maxReauthMs = tokenExpiryShorterThanMaxReauth.multipliedBy(2).toMillis(); try ( - MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpiryShorterThanMaxReauth); - MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); - TransportLayer transportLayer = mockTransportLayer() + MockedStatic ignored = mockSaslServer(saslServer, mechanism, time, tokenExpiryShorterThanMaxReauth); + MockedStatic ignored2 = mockKafkaPrincipal("[principal-type]", "[principal-name"); + TransportLayer transportLayer = mockTransportLayer() ) { SaslServerAuthenticator authenticator = getSaslServerAuthenticatorForOAuth(mechanism, transportLayer, time, maxReauthMs); diff --git a/clients/src/test/java/org/apache/kafka/common/security/authenticator/TestJaasConfig.java b/clients/src/test/java/org/apache/kafka/common/security/authenticator/TestJaasConfig.java index c070a94843340..e96bd8add197f 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/authenticator/TestJaasConfig.java +++ b/clients/src/test/java/org/apache/kafka/common/security/authenticator/TestJaasConfig.java @@ -128,7 +128,7 @@ public static Map defaultClientOptions(String mechanism) { return defaultClientOptions(); } } - + public static Map defaultClientOptions() { Map options = new HashMap<>(); options.put("username", USERNAME); diff --git a/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/OAuthBearerSaslServerTest.java b/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/OAuthBearerSaslServerTest.java index 581a72a52072b..277df8b38ed03 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/OAuthBearerSaslServerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/OAuthBearerSaslServerTest.java @@ -53,7 +53,7 @@ public class OAuthBearerSaslServerTest { private static final String USER = "user"; private static final String JAAS_CONFIG_TEXT = "org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule Required" - + " unsecuredLoginStringClaim_sub=\"" + USER + "\";"; + + " unsecuredLoginStringClaim_sub=\"" + USER + "\";"; private static final Map CONFIGS = Map.of(SaslConfigs.SASL_JAAS_CONFIG, new Password(JAAS_CONFIG_TEXT)); private static final AuthenticateCallbackHandler LOGIN_CALLBACK_HANDLER; diff --git a/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/expiring/ExpiringCredentialRefreshingLoginTest.java b/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/expiring/ExpiringCredentialRefreshingLoginTest.java index e8716935059f0..49242f06c9c1f 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/expiring/ExpiringCredentialRefreshingLoginTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/oauthbearer/internals/expiring/ExpiringCredentialRefreshingLoginTest.java @@ -244,12 +244,13 @@ public void configure(LoginContext mockLoginContext, public LoginContext createLoginContext(ExpiringCredentialRefreshingLogin expiringCredentialRefreshingLogin) throws LoginException { return new LoginContext("", null, null, EMPTY_WILDCARD_CONFIGURATION) { private boolean loginSuccess = false; + @Override public void login() throws LoginException { testLoginContext.login(); loginSuccess = true; } - + @Override public void logout() throws LoginException { if (!loginSuccess) @@ -257,7 +258,7 @@ public void logout() throws LoginException { throw new IllegalStateException("logout called without a successful login"); testLoginContext.logout(); } - + @Override public Subject getSubject() { return testLoginContext.getSubject(); diff --git a/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramMessagesTest.java b/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramMessagesTest.java index df84c054d4554..567b6ba74ebcd 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramMessagesTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramMessagesTest.java @@ -66,7 +66,7 @@ public class ScramMessagesTest { @BeforeEach public void setUp() throws Exception { - formatter = new ScramFormatter(ScramMechanism.SCRAM_SHA_256); + formatter = new ScramFormatter(ScramMechanism.SCRAM_SHA_256); } @Test diff --git a/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramSaslServerTest.java b/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramSaslServerTest.java index e113957d404fb..a574816a2b5ad 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramSaslServerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/scram/internals/ScramSaslServerTest.java @@ -51,7 +51,7 @@ public class ScramSaslServerTest { @BeforeEach public void setUp() throws Exception { ScramMechanism mechanism = ScramMechanism.SCRAM_SHA_256; - formatter = new ScramFormatter(mechanism); + formatter = new ScramFormatter(mechanism); CredentialCache.Cache credentialCache = new CredentialCache().createCache(mechanism.mechanismName(), ScramCredential.class); credentialCache.put(USER_A, formatter.generateCredential("passwordA", 4096)); credentialCache.put(USER_B, formatter.generateCredential("passwordB", 4096)); diff --git a/clients/src/test/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapperTest.java b/clients/src/test/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapperTest.java index 15c488e0060a4..af7970612f83a 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapperTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/ssl/CommonNameLoggingTrustManagerFactoryWrapperTest.java @@ -525,21 +525,21 @@ public void testSortChainAnWrapEndCertificate() { @Test public void testSortChainWithMultipleEndCertificate() { - assertThrows(CertificateException.class, + assertThrows(CertificateException.class, () -> CommonNameLoggingTrustManager.sortChainAnWrapEndCertificate(chainWithMultipleEndCertificates)); } @Test public void testCalcDigestForCertificateChain() { - ByteBuffer digestForValidChain = + ByteBuffer digestForValidChain = assertDoesNotThrow(() -> CommonNameLoggingTrustManager.calcDigestForCertificateChain(chainWithValidEndCertificate)); - ByteBuffer digestForValidChainAgain = + ByteBuffer digestForValidChainAgain = assertDoesNotThrow(() -> CommonNameLoggingTrustManager.calcDigestForCertificateChain(chainWithValidEndCertificate)); assertEquals(digestForValidChain, digestForValidChainAgain); - ByteBuffer digestForInvalidChain = + ByteBuffer digestForInvalidChain = assertDoesNotThrow(() -> CommonNameLoggingTrustManager.calcDigestForCertificateChain(chainWithInvalidEndCertificate)); assertNotEquals(digestForValidChain, digestForInvalidChain); - ByteBuffer digestForExpiredChain = + ByteBuffer digestForExpiredChain = assertDoesNotThrow(() -> CommonNameLoggingTrustManager.calcDigestForCertificateChain(chainWithExpiredEndCertificate)); assertNotEquals(digestForValidChain, digestForExpiredChain); assertNotEquals(digestForInvalidChain, digestForExpiredChain); diff --git a/clients/src/test/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactoryTest.java b/clients/src/test/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactoryTest.java index ed76495fa03a8..5a633d0f70199 100644 --- a/clients/src/test/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactoryTest.java +++ b/clients/src/test/java/org/apache/kafka/common/security/ssl/DefaultSslEngineFactoryTest.java @@ -130,7 +130,7 @@ public class DefaultSslEngineFactoryTest { + "REH2YTlftQ==\n" + "-----END CERTIFICATE-----"; - private static final String KEY = "Bag Attributes\n" + private static final String KEY = "Bag Attributes\n" + " friendlyName: server\n" + " localKeyID: 54 69 6D 65 20 31 36 30 31 32 38 33 37 36 35 34 32 33\n" + "Key Attributes: \n" @@ -163,7 +163,7 @@ public class DefaultSslEngineFactoryTest { + "tDGh1HlOIRm1jD9KQNVZ/Q==\n" + "-----END PRIVATE KEY-----"; - private static final String ENCRYPTED_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" + private static final String ENCRYPTED_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" + "MIIE6jAcBgoqhkiG9w0BDAEDMA4ECGyAEWAXlaXzAgIIAASCBMgt7QD1Bbz7MAHI\n" + "Ni0eTrwNiuAPluHirLXzsV57d1O9i4EXVp5nzRy6753cjXbGXARbBeaJD+/+jbZp\n" + "CBZTHMG8rTCfbsg5kMqxT6XuuqWlKLKc4gaq+QNgHHleKqnpwZQmOQ+awKWEK/Ow\n" diff --git a/clients/src/test/java/org/apache/kafka/common/serialization/SerializationTest.java b/clients/src/test/java/org/apache/kafka/common/serialization/SerializationTest.java index 521a0f19415ad..7d90a63680eda 100644 --- a/clients/src/test/java/org/apache/kafka/common/serialization/SerializationTest.java +++ b/clients/src/test/java/org/apache/kafka/common/serialization/SerializationTest.java @@ -421,7 +421,7 @@ private Serde getStringSerde(String encoder) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testBooleanSerializer(Boolean dataToSerialize) { byte[] testData = new byte[1]; testData[0] = (byte) (dataToSerialize ? 1 : 0); @@ -431,7 +431,7 @@ public void testBooleanSerializer(Boolean dataToSerialize) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testBooleanDeserializer(Boolean dataToDeserialize) { byte[] testData = new byte[1]; testData[0] = (byte) (dataToDeserialize ? 1 : 0); diff --git a/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryReporterTest.java b/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryReporterTest.java index 64697907deadf..56b10887f7503 100644 --- a/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryReporterTest.java +++ b/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryReporterTest.java @@ -513,13 +513,13 @@ public void testCreateRequestPushCompressionFallbackAndTermination() { telemetrySender.updateSubscriptionResult(subscription, time.milliseconds()); try (MockedStatic mockedCompress = Mockito.mockStatic(ClientTelemetryUtils.class, new CallsRealMethods())) { - + // === Test 1: NoClassDefFoundError fallback (recoverable) === mockedCompress.when(() -> ClientTelemetryUtils.compress(any(), eq(CompressionType.ZSTD))) .thenThrow(new NoClassDefFoundError("com/github/luben/zstd/BufferPool")); - + assertEquals(ClientTelemetryState.PUSH_NEEDED, telemetrySender.state()); - + Optional> request1 = telemetrySender.createRequest(); assertNotNull(request1); assertTrue(request1.isPresent()); @@ -527,20 +527,20 @@ public void testCreateRequestPushCompressionFallbackAndTermination() { PushTelemetryRequest pushRequest1 = (PushTelemetryRequest) request1.get().build(); assertEquals(CompressionType.NONE.id, pushRequest1.data().compressionType()); // Fallback to NONE assertEquals(ClientTelemetryState.PUSH_IN_PROGRESS, telemetrySender.state()); - + // Reset state (simulate successful response handling) assertTrue(telemetrySender.maybeSetState(ClientTelemetryState.PUSH_NEEDED)); - + // === Test 2: OutOfMemoryError causes termination (non-recoverable Error) === mockedCompress.reset(); mockedCompress.when(() -> ClientTelemetryUtils.compress(any(), eq(CompressionType.LZ4))) .thenThrow(new OutOfMemoryError("Out of memory during compression")); - + assertEquals(ClientTelemetryState.PUSH_NEEDED, telemetrySender.state()); assertThrows(KafkaException.class, telemetrySender::createRequest); assertEquals(ClientTelemetryState.TERMINATED, telemetrySender.state()); - + // === Test 3: After termination, no more requests === Optional> request3 = telemetrySender.createRequest(); assertNotNull(request3); @@ -954,7 +954,7 @@ public void testHandleFailedGetTelemetrySubscriptionsRequestWithWrappedFatalExce telemetrySender.updateSubscriptionResult(subscription, time.milliseconds()); assertTrue(telemetrySender.maybeSetState(ClientTelemetryState.SUBSCRIPTION_IN_PROGRESS)); - KafkaException wrappedException = new KafkaException("Version check failed", + KafkaException wrappedException = new KafkaException("Version check failed", new UnsupportedVersionException("Broker doesn't support telemetry")); telemetrySender.handleFailedGetTelemetrySubscriptionsRequest(wrappedException); @@ -1009,7 +1009,7 @@ public void testHandleFailedRequestWithMultipleRetriableExceptionsInChain() { assertEquals(ClientTelemetryReporter.DEFAULT_PUSH_INTERVAL_MS, telemetrySender.intervalMs()); assertTrue(telemetrySender.enabled()); } - + @Test public void testHandleFailedRequestWithGenericKafkaException() { ClientTelemetryReporter.DefaultClientTelemetrySender telemetrySender = (ClientTelemetryReporter.DefaultClientTelemetrySender) clientTelemetryReporter.telemetrySender(); diff --git a/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryUtilsTest.java b/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryUtilsTest.java index 2bc0767dd8873..badc6cb3d2a0f 100644 --- a/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryUtilsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryUtilsTest.java @@ -131,7 +131,7 @@ public void testPreferredCompressionType() { assertEquals(CompressionType.LZ4, ClientTelemetryUtils.preferredCompressionType(List.of(CompressionType.GZIP, CompressionType.LZ4), Set.of(CompressionType.GZIP))); assertEquals(CompressionType.SNAPPY, ClientTelemetryUtils.preferredCompressionType(List.of(CompressionType.GZIP, CompressionType.LZ4, CompressionType.SNAPPY), Set.of(CompressionType.GZIP, CompressionType.LZ4))); assertEquals(CompressionType.NONE, ClientTelemetryUtils.preferredCompressionType(List.of(CompressionType.GZIP, CompressionType.LZ4), Set.of(CompressionType.GZIP, CompressionType.LZ4))); - + // Test edge case: no match between requested and supported types assertEquals(CompressionType.GZIP, ClientTelemetryUtils.preferredCompressionType(List.of(CompressionType.GZIP, CompressionType.LZ4), Set.of(CompressionType.SNAPPY))); @@ -166,7 +166,7 @@ private MetricsData getMetricsData() { new MetricKey("metricName"), 1.0, true, Instant.now(), null, Set.of()) .builder().build()); metricsList.add(SinglePointMetric.sum( - new MetricKey("metricName1"), 100.0, false, Instant.now(), Instant.now(), Set.of()) + new MetricKey("metricName1"), 100.0, false, Instant.now(), Instant.now(), Set.of()) .builder().build()); metricsList.add(SinglePointMetric.deltaSum( new MetricKey("metricName2"), 1.0, true, Instant.now(), Instant.now(), Set.of()) diff --git a/clients/src/test/java/org/apache/kafka/common/utils/LogCaptureAppender.java b/clients/src/test/java/org/apache/kafka/common/utils/LogCaptureAppender.java index 2c303a337211b..5217dde2ae027 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/LogCaptureAppender.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/LogCaptureAppender.java @@ -39,7 +39,7 @@ public class LogCaptureAppender extends AbstractAppender implements AutoCloseabl private final List events = new LinkedList<>(); private final Map, Level> logLevelChanges = new HashMap<>(); private final List loggers = new ArrayList<>(); - + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public static class Event { private final String level; diff --git a/clients/src/test/java/org/apache/kafka/common/utils/UtilsTest.java b/clients/src/test/java/org/apache/kafka/common/utils/UtilsTest.java index 8870e26a2597d..6af306ced1f2b 100755 --- a/clients/src/test/java/org/apache/kafka/common/utils/UtilsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/UtilsTest.java @@ -1321,6 +1321,7 @@ else if (failure == null) private static class TestException extends Exception { final String key; + TestException(String key) { this.key = key; } diff --git a/clients/src/test/java/org/apache/kafka/common/utils/annotation/ApiKeyVersionsSource.java b/clients/src/test/java/org/apache/kafka/common/utils/annotation/ApiKeyVersionsSource.java index 4806605a54564..d7b5f3a1bfed9 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/annotation/ApiKeyVersionsSource.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/annotation/ApiKeyVersionsSource.java @@ -30,7 +30,10 @@ @ArgumentsSource(ApiKeyVersionsProvider.class) public @interface ApiKeyVersionsSource { ApiKeys apiKey(); - short fromVersion() default -1; - short toVersion() default -1; - boolean enableUnstableLastVersion() default true; + + short fromVersion()default -1; + + short toVersion()default -1; + + boolean enableUnstableLastVersion()default true; } diff --git a/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteUtilsTest.java b/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteUtilsTest.java index 139e3efdd4b53..903415dd853f7 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteUtilsTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteUtilsTest.java @@ -77,6 +77,7 @@ public void testIncrementUpperBoundary() { byte[] input = new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; assertThrows(IndexOutOfBoundsException.class, () -> ByteUtils.increment(Bytes.wrap(input))); } + @Test public void testIncrementWithSubmap() { final NavigableMap map = new TreeMap<>(); diff --git a/clients/src/test/java/org/apache/kafka/common/utils/internals/ExponentialBackoffManagerTest.java b/clients/src/test/java/org/apache/kafka/common/utils/internals/ExponentialBackoffManagerTest.java index d50b3a3e3a27e..a94fa7ac1624c 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/internals/ExponentialBackoffManagerTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/internals/ExponentialBackoffManagerTest.java @@ -55,7 +55,7 @@ public void testResetAttempts() { manager.incrementAttempt(); manager.incrementAttempt(); assertEquals(3, manager.attempts()); - + manager.resetAttempts(); assertEquals(0, manager.attempts()); assertTrue(manager.canAttempt()); diff --git a/clients/src/test/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollectionTest.java b/clients/src/test/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollectionTest.java index fc43fa9487870..60bf0ef9ee89a 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollectionTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/internals/ImplicitLinkedHashCollectionTest.java @@ -598,9 +598,9 @@ public void testMoveToEnd() { @Test public void testRemovals() { ImplicitLinkedHashCollection coll = new ImplicitLinkedHashCollection<>(); - List elements = new ArrayList<>(); + List elements = new ArrayList<>(); for (int i = 0; i < 100; i++) { - TestElement element = new TestElement(i, i); + TestElement element = new TestElement(i, i); elements.add(element); coll.add(element); } diff --git a/clients/src/test/java/org/apache/kafka/test/MetricsBench.java b/clients/src/test/java/org/apache/kafka/test/MetricsBench.java index b4388a505504c..35e9bf0d2d5b2 100644 --- a/clients/src/test/java/org/apache/kafka/test/MetricsBench.java +++ b/clients/src/test/java/org/apache/kafka/test/MetricsBench.java @@ -44,7 +44,7 @@ public static void main(String[] args) { iters, BucketSizing.CONSTANT, new Percentile(metrics.metricName(sensor.name() + ".median", "grp1"), 50.0), - new Percentile(metrics.metricName(sensor.name() + ".p_99", "grp1"), 99.0))); + new Percentile(metrics.metricName(sensor.name() + ".p_99", "grp1"), 99.0))); } long start = System.nanoTime(); for (int i = 0; i < iters; i++) diff --git a/clients/src/test/java/org/apache/kafka/test/MockConsumerInterceptor.java b/clients/src/test/java/org/apache/kafka/test/MockConsumerInterceptor.java index 715486c1ae36b..e8aa8fd403f89 100644 --- a/clients/src/test/java/org/apache/kafka/test/MockConsumerInterceptor.java +++ b/clients/src/test/java/org/apache/kafka/test/MockConsumerInterceptor.java @@ -78,7 +78,7 @@ public ConsumerRecords onConsume(ConsumerRecords for (TopicPartition tp : records.partitions()) { List> lst = new ArrayList<>(); long nextOffset = 0; - for (ConsumerRecord record: records.records(tp)) { + for (ConsumerRecord record : records.records(tp)) { lst.add(new ConsumerRecord<>(record.topic(), record.partition(), record.offset(), record.timestamp(), record.timestampType(), record.serializedKeySize(), diff --git a/clients/src/test/java/org/apache/kafka/test/MockPartitioner.java b/clients/src/test/java/org/apache/kafka/test/MockPartitioner.java index 31c1e630057a0..caa4d0c50176f 100644 --- a/clients/src/test/java/org/apache/kafka/test/MockPartitioner.java +++ b/clients/src/test/java/org/apache/kafka/test/MockPartitioner.java @@ -43,7 +43,7 @@ public int partition(String topic, Object key, byte[] keyBytes, Object value, by public void close() { CLOSE_COUNT.incrementAndGet(); } - + public static void resetCounters() { INIT_COUNT.set(0); CLOSE_COUNT.set(0); diff --git a/clients/src/test/java/org/apache/kafka/test/TestSslUtils.java b/clients/src/test/java/org/apache/kafka/test/TestSslUtils.java index 7b4680a8b0446..d7d75be0f06fe 100644 --- a/clients/src/test/java/org/apache/kafka/test/TestSslUtils.java +++ b/clients/src/test/java/org/apache/kafka/test/TestSslUtils.java @@ -116,7 +116,7 @@ public class TestSslUtils { */ public static X509Certificate generateCertificate(String dn, KeyPair pair, int days, String algorithm) - throws CertificateException { + throws CertificateException { return new CertificateBuilder(days, algorithm).generate(dn, pair); } @@ -212,25 +212,25 @@ public static Map createSslConfig(String keyManagerAlgorithm, St sslConfigs.put(SslConfigs.SSL_TRUSTMANAGER_ALGORITHM_CONFIG, trustManagerAlgorithm); sslConfigs.put(SslConfigs.SSL_CIPHER_SUITES_CONFIG, List.of()); - List enabledProtocols = new ArrayList<>(); + List enabledProtocols = new ArrayList<>(); enabledProtocols.add(tlsProtocol); sslConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, enabledProtocols); return sslConfigs; } - public static Map createSslConfig(boolean useClientCert, boolean trustStore, ConnectionMode connectionMode, File trustStoreFile, String certAlias) + public static Map createSslConfig(boolean useClientCert, boolean trustStore, ConnectionMode connectionMode, File trustStoreFile, String certAlias) throws IOException, GeneralSecurityException { return createSslConfig(useClientCert, trustStore, connectionMode, trustStoreFile, certAlias, "localhost"); } - public static Map createSslConfig(boolean useClientCert, boolean trustStore, + public static Map createSslConfig(boolean useClientCert, boolean trustStore, ConnectionMode connectionMode, File trustStoreFile, String certAlias, String cn) throws IOException, GeneralSecurityException { return createSslConfig(useClientCert, trustStore, connectionMode, trustStoreFile, certAlias, cn, new CertificateBuilder()); } - public static Map createSslConfig(boolean useClientCert, boolean createTrustStore, + public static Map createSslConfig(boolean useClientCert, boolean createTrustStore, ConnectionMode connectionMode, File trustStoreFile, String certAlias, String cn, CertificateBuilder certBuilder) throws IOException, GeneralSecurityException { SslConfigsBuilder builder = new SslConfigsBuilder(connectionMode) @@ -299,7 +299,7 @@ public static void convertToPem(Map sslProps, boolean writeToFil private static void writeToFile(String path, Password... entries) throws IOException { try (FileOutputStream out = new FileOutputStream(path)) { - for (Password entry: entries) { + for (Password entry : entries) { out.write(entry.value().getBytes(StandardCharsets.UTF_8)); } } @@ -475,7 +475,7 @@ public X509Certificate generate(X500Name dn, KeyPair keyPair) throws Certificate throw new CertificateException(e); } } - + /** * @param dn The distinguished name to use * @param keyPair A key pair to use @@ -649,7 +649,7 @@ public SslConfigsBuilder usePem(boolean usePem) { return this; } - public Map build() throws IOException, GeneralSecurityException { + public Map build() throws IOException, GeneralSecurityException { if (usePem) { return buildPem(); } else @@ -698,7 +698,7 @@ private Map buildJks() throws IOException, GeneralSecurityExcept sslConfigs.put(SslConfigs.SSL_TRUSTMANAGER_ALGORITHM_CONFIG, TrustManagerFactory.getDefaultAlgorithm()); sslConfigs.put(SslConfigs.SSL_CIPHER_SUITES_CONFIG, List.of()); - List enabledProtocols = new ArrayList<>(); + List enabledProtocols = new ArrayList<>(); enabledProtocols.add(tlsProtocol); sslConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, enabledProtocols); @@ -808,7 +808,7 @@ public static Map generateConfigsWithCertificateChains(String tl //Generate Intermediate certificates for (int intermediateCertIndex = caIndex - 1; intermediateCertIndex > 0; intermediateCertIndex--) { - certs[intermediateCertIndex] = TestSslUtils.generateSignedCertificate("CN=Intermediate CA" + intermediateCertIndex, + certs[intermediateCertIndex] = TestSslUtils.generateSignedCertificate("CN=Intermediate CA" + intermediateCertIndex, keyPairs[intermediateCertIndex], 365, 365, certs[intermediateCertIndex + 1].getSubjectX500Principal().getName(), keyPairs[intermediateCertIndex + 1], "SHA512withRSA", true, false, false, hostNames); } @@ -818,14 +818,14 @@ public static Map generateConfigsWithCertificateChains(String tl certs[1].getSubjectX500Principal().getName(), keyPairs[1], "SHA512withRSA", false, true, true, hostNames); File keystoreStoreFile = TestUtils.tempFile("keystore", ".jks"); - Password keyStorePassword = new Password("password"); + Password keyStorePassword = new Password("password"); KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(null, null); keyStore.setKeyEntry("issued-cert", keyPairs[0].getPrivate(), keyStorePassword.value().toCharArray(), certs); saveKeyStore(keyStore, keystoreStoreFile.getPath(), keyStorePassword); File trustStoreFile = TestUtils.tempFile("truststore", ".jks"); - Password trustStorePassword = new Password("password"); + Password trustStorePassword = new Password("password"); KeyStore trustStore = KeyStore.getInstance("PKCS12"); trustStore.load(null, null); for (X509Certificate cert : certs) { @@ -847,7 +847,7 @@ public static Map generateConfigsWithCertificateChains(String tl sslConfigs.put(SslConfigs.SSL_TRUSTSTORE_TYPE_CONFIG, "JKS"); sslConfigs.put(SslConfigs.SSL_TRUSTMANAGER_ALGORITHM_CONFIG, TrustManagerFactory.getDefaultAlgorithm()); - List enabledProtocols = new ArrayList<>(); + List enabledProtocols = new ArrayList<>(); enabledProtocols.add(tlsProtocol); sslConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, enabledProtocols); sslConfigs.put(SslConfigs.SSL_CIPHER_SUITES_CONFIG, List.of()); diff --git a/clients/src/test/java/org/apache/kafka/test/TestUtils.java b/clients/src/test/java/org/apache/kafka/test/TestUtils.java index 871fe764817f9..89fa3d0f36ff8 100644 --- a/clients/src/test/java/org/apache/kafka/test/TestUtils.java +++ b/clients/src/test/java/org/apache/kafka/test/TestUtils.java @@ -598,8 +598,8 @@ public static T assertFutureThrows(Class exceptionCause // Enable strict type checking. // This ensures we're testing for the exact exception type, not its subclasses. assertEquals( - exceptionCauseClass, - cause.getClass(), + exceptionCauseClass, + cause.getClass(), "Expected " + exceptionCauseClass.getSimpleName() + ", but got " + cause.getClass().getSimpleName() ); return exceptionCauseClass.cast(cause); @@ -642,7 +642,7 @@ public static void assertOptional(Optional optional, Consumer assertio } @SuppressWarnings("unchecked") - public static T fieldValue(Object o, Class clazz, String fieldName) { + public static T fieldValue(Object o, Class clazz, String fieldName) { try { Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); diff --git a/connect/api/src/main/java/org/apache/kafka/connect/data/SchemaProjector.java b/connect/api/src/main/java/org/apache/kafka/connect/data/SchemaProjector.java index ed096504e09a2..a1034c62c6f50 100644 --- a/connect/api/src/main/java/org/apache/kafka/connect/data/SchemaProjector.java +++ b/connect/api/src/main/java/org/apache/kafka/connect/data/SchemaProjector.java @@ -105,7 +105,7 @@ private static Object projectStruct(Schema source, Struct sourceStruct, Schema t } else if (targetField.schema().defaultValue() != null) { targetStruct.put(fieldName, targetField.schema().defaultValue()); } else { - throw new SchemaProjectorException("Required field `" + fieldName + "` is missing from source schema: " + source); + throw new SchemaProjectorException("Required field `" + fieldName + "` is missing from source schema: " + source); } } return targetStruct; diff --git a/connect/api/src/main/java/org/apache/kafka/connect/data/Time.java b/connect/api/src/main/java/org/apache/kafka/connect/data/Time.java index 6badee4598eab..de7c6b20f8184 100644 --- a/connect/api/src/main/java/org/apache/kafka/connect/data/Time.java +++ b/connect/api/src/main/java/org/apache/kafka/connect/data/Time.java @@ -74,7 +74,7 @@ public static int fromLogical(Schema schema, java.util.Date value) { public static java.util.Date toLogical(Schema schema, int value) { if (!(LOGICAL_NAME.equals(schema.name()))) throw new DataException("Requested conversion of Date object but the schema does not match."); - if (value < 0 || value > MILLIS_PER_DAY) + if (value < 0 || value > MILLIS_PER_DAY) throw new DataException("Time values must use number of milliseconds greater than 0 and less than 86400000"); return new java.util.Date(value); } diff --git a/connect/api/src/main/java/org/apache/kafka/connect/storage/Converter.java b/connect/api/src/main/java/org/apache/kafka/connect/storage/Converter.java index 2dfc2cb96d207..d7142f582520b 100644 --- a/connect/api/src/main/java/org/apache/kafka/connect/storage/Converter.java +++ b/connect/api/src/main/java/org/apache/kafka/connect/storage/Converter.java @@ -108,7 +108,7 @@ default ConfigDef config() { } @Override - default void close() throws IOException { + default void close() throws IOException { // no op } diff --git a/connect/api/src/test/java/org/apache/kafka/connect/data/SchemaProjectorTest.java b/connect/api/src/test/java/org/apache/kafka/connect/data/SchemaProjectorTest.java index 0f438c0e0ff2b..69b4c5587d405 100644 --- a/connect/api/src/test/java/org/apache/kafka/connect/data/SchemaProjectorTest.java +++ b/connect/api/src/test/java/org/apache/kafka/connect/data/SchemaProjectorTest.java @@ -43,7 +43,7 @@ public void testPrimitiveTypeProjection() { assertEquals(false, projected); byte[] bytes = {(byte) 1, (byte) 2}; - projected = SchemaProjector.project(Schema.BYTES_SCHEMA, bytes, Schema.BYTES_SCHEMA); + projected = SchemaProjector.project(Schema.BYTES_SCHEMA, bytes, Schema.BYTES_SCHEMA); assertEquals(bytes, projected); projected = SchemaProjector.project(Schema.STRING_SCHEMA, "abc", Schema.STRING_SCHEMA); @@ -52,7 +52,7 @@ public void testPrimitiveTypeProjection() { projected = SchemaProjector.project(Schema.BOOLEAN_SCHEMA, false, Schema.OPTIONAL_BOOLEAN_SCHEMA); assertEquals(false, projected); - projected = SchemaProjector.project(Schema.BYTES_SCHEMA, bytes, Schema.OPTIONAL_BYTES_SCHEMA); + projected = SchemaProjector.project(Schema.BYTES_SCHEMA, bytes, Schema.OPTIONAL_BYTES_SCHEMA); assertEquals(bytes, projected); projected = SchemaProjector.project(Schema.STRING_SCHEMA, "abc", Schema.OPTIONAL_STRING_SCHEMA); @@ -122,12 +122,12 @@ public void testNumericTypeProjection() { } Schema[] nonPromotableSchemas = {Schema.BOOLEAN_SCHEMA, Schema.BYTES_SCHEMA, Schema.STRING_SCHEMA}; - for (Schema promotableSchema: promotableSchemas) { - for (Schema nonPromotableSchema: nonPromotableSchemas) { + for (Schema promotableSchema : promotableSchemas) { + for (Schema nonPromotableSchema : nonPromotableSchemas) { Object dummy = new Object(); assertThrows(DataException.class, () -> SchemaProjector.project(promotableSchema, dummy, nonPromotableSchema), - "Cannot promote " + promotableSchema.type() + " to " + nonPromotableSchema.type()); + "Cannot promote " + promotableSchema.type() + " to " + nonPromotableSchema.type()); } } } @@ -342,7 +342,7 @@ public void testLogicalTypeProjection() { assertEquals(date, projected); Schema namedSchema = SchemaBuilder.int32().name("invalidLogicalTypeName").build(); - for (Schema logicalTypeSchema: logicalTypeSchemas) { + for (Schema logicalTypeSchema : logicalTypeSchemas) { assertThrows(SchemaProjectorException.class, () -> SchemaProjector.project(logicalTypeSchema, null, Schema.BOOLEAN_SCHEMA), "Cannot project logical types to non-logical types."); @@ -419,12 +419,12 @@ public void testMaybeCompatible() { Schema target = SchemaBuilder.int32().name("target").build(); assertThrows(SchemaProjectorException.class, - () -> SchemaProjector.project(source, 12, target), + () -> SchemaProjector.project(source, 12, target), "Source name and target name mismatch."); Schema targetWithParameters = SchemaBuilder.int32().parameters(Map.of("key", "value")); assertThrows(SchemaProjectorException.class, - () -> SchemaProjector.project(source, 34, targetWithParameters), + () -> SchemaProjector.project(source, 34, targetWithParameters), "Source parameters and target parameters mismatch."); } diff --git a/connect/api/src/test/java/org/apache/kafka/connect/data/ValuesTest.java b/connect/api/src/test/java/org/apache/kafka/connect/data/ValuesTest.java index d100be29b4db9..d844db31f7631 100644 --- a/connect/api/src/test/java/org/apache/kafka/connect/data/ValuesTest.java +++ b/connect/api/src/test/java/org/apache/kafka/connect/data/ValuesTest.java @@ -345,7 +345,7 @@ public void shouldConvertEmptyStruct() { @Test public void shouldConvertSimpleString() { - assertRoundTrip(Schema.STRING_SCHEMA, "simple"); + assertRoundTrip(Schema.STRING_SCHEMA, "simple"); } @Test diff --git a/connect/basic-auth-extension/src/main/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilter.java b/connect/basic-auth-extension/src/main/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilter.java index 5c1b0ee454084..b309987ef7cf3 100644 --- a/connect/basic-auth-extension/src/main/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilter.java +++ b/connect/basic-auth-extension/src/main/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilter.java @@ -165,7 +165,7 @@ public boolean isUserInRole(String role) { @Override public boolean isSecure() { - return "https".equalsIgnoreCase(requestContext.getUriInfo().getRequestUri().getScheme()); + return "https".equalsIgnoreCase(requestContext.getUriInfo().getRequestUri().getScheme()); } @Override diff --git a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java index d168e6466db2d..9e7ca8ca5648e 100644 --- a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java +++ b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java @@ -208,7 +208,7 @@ public void testUnsupportedCallback() { CallbackHandler callbackHandler = new JaasBasicAuthFilter.BasicAuthCallBackHandler( new JaasBasicAuthFilter.BasicAuthCredentials(authHeader("basic", "user", "pwd"))); Callback unsupportedCallback = new ChoiceCallback( - "You take the blue pill... the story ends, you wake up in your bed and believe whatever you want to believe. " + "You take the blue pill... the story ends, you wake up in your bed and believe whatever you want to believe. " + "You take the red pill... you stay in Wonderland, and I show you how deep the rabbit hole goes.", new String[] {"blue pill", "red pill"}, 1, diff --git a/connect/file/src/main/java/org/apache/kafka/connect/file/FileStreamSourceTask.java b/connect/file/src/main/java/org/apache/kafka/connect/file/FileStreamSourceTask.java index 8a76a480a7ae6..6d44009c49487 100644 --- a/connect/file/src/main/java/org/apache/kafka/connect/file/FileStreamSourceTask.java +++ b/connect/file/src/main/java/org/apache/kafka/connect/file/FileStreamSourceTask.java @@ -44,7 +44,7 @@ public class FileStreamSourceTask extends SourceTask { private static final Logger log = LoggerFactory.getLogger(FileStreamSourceTask.class); public static final String FILENAME_FIELD = "filename"; - public static final String POSITION_FIELD = "position"; + public static final String POSITION_FIELD = "position"; private static final Schema VALUE_SCHEMA = Schema.STRING_SCHEMA; private String filename; diff --git a/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java b/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java index 9f5b62997a236..fa3c785550e33 100644 --- a/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java +++ b/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java @@ -707,7 +707,7 @@ private static Object convertToConnect(Schema schema, JsonNode jsonValue, JsonCo return schema.defaultValue(); // any logical type conversions should already have been applied if (schema.isOptional()) return null; - throw new DataException("Invalid null value for required " + schemaType + " field"); + throw new DataException("Invalid null value for required " + schemaType + " field"); } } else { switch (jsonValue.getNodeType()) { @@ -761,6 +761,7 @@ private interface JsonToConnectTypeConverter { private interface LogicalTypeConverter { JsonNode toJson(Schema schema, Object value, JsonConverterConfig config); + Object toConnect(Schema schema, JsonNode value); } } diff --git a/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverterConfig.java b/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverterConfig.java index 17d48c7f14c3d..40e689893c0da 100644 --- a/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverterConfig.java +++ b/connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverterConfig.java @@ -38,7 +38,7 @@ public final class JsonConverterConfig extends ConverterConfig { public static final String SCHEMA_CONTENT_CONFIG = "schema.content"; public static final String SCHEMA_CONTENT_DEFAULT = null; - private static final String SCHEMA_CONTENT_DOC = "When set, this is used as the schema for all messages, and the schemas within each of the message will be ignored." + private static final String SCHEMA_CONTENT_DOC = "When set, this is used as the schema for all messages, and the schemas within each of the message will be ignored." + "Otherwise, the schema will be included in the content of each message. This configuration applies only 'schemas.enable' is true, and it exclusively affects the sink connector."; private static final String SCHEMA_CONTENT_DISPLAY = "Schema Content"; diff --git a/connect/json/src/test/java/org/apache/kafka/connect/json/JsonConverterTest.java b/connect/json/src/test/java/org/apache/kafka/connect/json/JsonConverterTest.java index 200b33d1774e2..c28774444b592 100644 --- a/connect/json/src/test/java/org/apache/kafka/connect/json/JsonConverterTest.java +++ b/connect/json/src/test/java/org/apache/kafka/connect/json/JsonConverterTest.java @@ -1066,7 +1066,7 @@ private void validateEnvelopeNullSchema(JsonNode env) { assertTrue(env.get(JsonSchema.ENVELOPE_SCHEMA_FIELD_NAME).isNull()); assertTrue(env.has(JsonSchema.ENVELOPE_PAYLOAD_FIELD_NAME)); } - + private void assertStructSchemaEqual(Schema schema, Struct struct) { converter.fromConnectData(TOPIC, schema, struct); assertEquals(schema, struct.schema()); diff --git a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/DefaultReplicationPolicy.java b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/DefaultReplicationPolicy.java index ae273c36849a7..10ab5402023b6 100644 --- a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/DefaultReplicationPolicy.java +++ b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/DefaultReplicationPolicy.java @@ -31,7 +31,7 @@ * us-west.<TOPIC>. The separator is customizable by setting {@link #SEPARATOR_CONFIG} and defaults to a period. */ public class DefaultReplicationPolicy implements ReplicationPolicy, Configurable { - + private static final Logger log = LoggerFactory.getLogger(DefaultReplicationPolicy.class); // In order to work with various metrics stores, we allow custom separators. @@ -90,6 +90,7 @@ public String upstreamTopic(String topic) { private String internalSeparator() { return isInternalTopicSeparatorEnabled ? separator : "."; } + private String internalSuffix() { return internalSeparator() + "internal"; } @@ -110,11 +111,11 @@ public String checkpointsTopic(String clusterAlias) { @Override public boolean isCheckpointsTopic(String topic) { - return topic.endsWith(checkpointsTopicSuffix()); + return topic.endsWith(checkpointsTopicSuffix()); } @Override public boolean isMM2InternalTopic(String topic) { - return topic.startsWith("mm2") && topic.endsWith(internalSuffix()) || isCheckpointsTopic(topic); + return topic.startsWith("mm2") && topic.endsWith(internalSuffix()) || isCheckpointsTopic(topic); } } diff --git a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/Heartbeat.java b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/Heartbeat.java index d63dfa70ff864..e25c94f1e3c6f 100644 --- a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/Heartbeat.java +++ b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/Heartbeat.java @@ -101,9 +101,9 @@ public static Heartbeat deserializeRecord(ConsumerRecord record) long timestamp = valueStruct.getLong(TIMESTAMP_KEY); Struct keyStruct = KEY_SCHEMA.read(ByteBuffer.wrap(record.key())); String sourceClusterAlias = keyStruct.getString(SOURCE_CLUSTER_ALIAS_KEY); - String targetClusterAlias = keyStruct.getString(TARGET_CLUSTER_ALIAS_KEY); - return new Heartbeat(sourceClusterAlias, targetClusterAlias, timestamp); - } + String targetClusterAlias = keyStruct.getString(TARGET_CLUSTER_ALIAS_KEY); + return new Heartbeat(sourceClusterAlias, targetClusterAlias, timestamp); + } private Struct headerStruct(short version) { Struct struct = new Struct(HEADER_SCHEMA); diff --git a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/MirrorClientConfig.java b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/MirrorClientConfig.java index cb42f5fe654ba..ec43913b04a43 100644 --- a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/MirrorClientConfig.java +++ b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/MirrorClientConfig.java @@ -57,7 +57,7 @@ public class MirrorClientConfig extends AbstractConfig { public static final String REPLICATION_POLICY_SEPARATOR_DEFAULT = DefaultReplicationPolicy.SEPARATOR_DEFAULT; - public static final String INTERNAL_TOPIC_SEPARATOR_ENABLED = "replication.policy.internal.topic.separator.enabled"; + public static final String INTERNAL_TOPIC_SEPARATOR_ENABLED = "replication.policy.internal.topic.separator.enabled"; public static final String INTERNAL_TOPIC_SEPARATOR_ENABLED_DOC = "Whether to use replication.policy.separator to control the names of topics used for checkpoints and offset syncs. " + "By default, custom separators are used in these topic names; however, if upgrading MirrorMaker 2 from older versions " + diff --git a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/ReplicationPolicy.java b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/ReplicationPolicy.java index cb0fbe9910d3b..0c723b5e22960 100644 --- a/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/ReplicationPolicy.java +++ b/connect/mirror-client/src/main/java/org/apache/kafka/connect/mirror/ReplicationPolicy.java @@ -40,7 +40,7 @@ public interface ReplicationPolicy { *

* Returns null if the given topic is not a remote topic. */ - String upstreamTopic(String topic); + String upstreamTopic(String topic); /** * Returns the name of the original topic, which may have been replicated multiple hops. @@ -87,7 +87,7 @@ default boolean isHeartbeatsTopic(String topic) { * Returns true if the topic is a checkpoints topic. */ default boolean isCheckpointsTopic(String topic) { - return topic.endsWith(".checkpoints.internal"); + return topic.endsWith(".checkpoints.internal"); } /** @@ -95,7 +95,7 @@ default boolean isCheckpointsTopic(String topic) { * This is used to make sure the topic doesn't need to be replicated. */ default boolean isMM2InternalTopic(String topic) { - return topic.startsWith("mm2") && topic.endsWith(".internal") || isCheckpointsTopic(topic); + return topic.startsWith("mm2") && topic.endsWith(".internal") || isCheckpointsTopic(topic); } /** diff --git a/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/MirrorClientTest.java b/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/MirrorClientTest.java index f7b6bbb08c3b6..c37c031c53a7d 100644 --- a/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/MirrorClientTest.java +++ b/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/MirrorClientTest.java @@ -58,7 +58,7 @@ private static class FakeMirrorClient extends MirrorClient { FakeMirrorClient() { this(List.of()); - } + } @Override protected Set listTopics() { @@ -135,7 +135,7 @@ public void replicationHopsTest() throws InterruptedException { MirrorClient client = new FakeMirrorClient(List.of("topic1", "topic2", "heartbeats", "source1.heartbeats", "source1.source2.heartbeats", "source3.heartbeats")); assertEquals(1, client.replicationHops("source1")); - assertEquals(2, client.replicationHops("source2")); + assertEquals(2, client.replicationHops("source2")); assertEquals(1, client.replicationHops("source3")); assertEquals(-1, client.replicationHops("source4")); } diff --git a/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/ReplicationPolicyTest.java b/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/ReplicationPolicyTest.java index e59348b05a494..e18deb0712e3a 100644 --- a/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/ReplicationPolicyTest.java +++ b/connect/mirror-client/src/test/java/org/apache/kafka/connect/mirror/ReplicationPolicyTest.java @@ -37,7 +37,7 @@ public void setUp() { @Test public void testInternalTopic() { - Map config = new HashMap<>(); + Map config = new HashMap<>(); config.put(MirrorClientConfig.REPLICATION_POLICY_SEPARATOR, "."); DEFAULT_REPLICATION_POLICY.configure(config); @@ -55,7 +55,7 @@ public void testInternalTopic() { @Test public void offsetSyncsTopic_shouldBeEffectedByInternalTopicSeparatorEnabled() { - Map config = new HashMap<>(); + Map config = new HashMap<>(); config.put(MirrorClientConfig.REPLICATION_POLICY_SEPARATOR, "__"); config.put(MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED, false); @@ -69,7 +69,7 @@ public void offsetSyncsTopic_shouldBeEffectedByInternalTopicSeparatorEnabled() { @Test public void checkpointsTopic_shouldBeEffectedByInternalTopicSeparatorEnabled() { - Map config = new HashMap<>(); + Map config = new HashMap<>(); config.put(MirrorClientConfig.REPLICATION_POLICY_SEPARATOR, "__"); config.put(MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED, false); @@ -83,7 +83,7 @@ public void checkpointsTopic_shouldBeEffectedByInternalTopicSeparatorEnabled() { @Test public void heartbeatsTopic_shouldNotBeEffectedByInternalTopicSeparatorConfig() { - Map config = new HashMap<>(); + Map config = new HashMap<>(); config.put(MirrorClientConfig.REPLICATION_POLICY_SEPARATOR, "__"); config.put(MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED, true); diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/CheckpointStore.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/CheckpointStore.java index 39aea181b6674..1212428ed8905 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/CheckpointStore.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/CheckpointStore.java @@ -70,11 +70,11 @@ public CheckpointStore(MirrorCheckpointTaskConfig config, Set consumerGr this.consumerGroups = null; //ignored by tests this.checkpointsPerConsumerGroup = checkpointsPerConsumerGroup; isInitialized = true; - loadSuccess = true; + loadSuccess = true; } // potentially long running - public boolean start() { + public boolean start() { checkpointsPerConsumerGroup = readCheckpoints(); isInitialized = true; if (log.isTraceEnabled()) { diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointLegacyMetrics.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointLegacyMetrics.java index dc592f512f564..5ead1fc338b2a 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointLegacyMetrics.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointLegacyMetrics.java @@ -99,7 +99,7 @@ private class GroupMetrics { GroupMetrics(TopicPartition topicPartition, String group) { Map tags = groupTags(source, target, group, topicPartition); - + checkpointLatencySensor = metrics.sensor("checkpoint-latency"); checkpointLatencySensor.add(metrics.metricInstance(CHECKPOINT_LATENCY, tags), new Value()); checkpointLatencySensor.add(metrics.metricInstance(CHECKPOINT_LATENCY_MAX, tags), new Max()); diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointTask.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointTask.java index f09aae0b077a0..78290b5613fe8 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointTask.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorCheckpointTask.java @@ -189,7 +189,7 @@ List sourceRecordsForGroup(String group) throws InterruptedExcepti .map(x -> checkpointRecord(x, timestamp)) .collect(Collectors.toList()); } catch (ExecutionException e) { - log.error("Error querying offsets for consumer group {} on cluster {}.", group, sourceClusterAlias, e); + log.error("Error querying offsets for consumer group {} on cluster {}.", group, sourceClusterAlias, e); return List.of(); } } diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java index 96aec8330e094..f26ae44db702c 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java @@ -86,7 +86,7 @@ public abstract class MirrorConnectorConfig extends AbstractConfig { public static final String REPLICATION_POLICY_SEPARATOR_DEFAULT = MirrorClientConfig.REPLICATION_POLICY_SEPARATOR_DEFAULT; - private static final String INTERNAL_TOPIC_SEPARATOR_ENABLED = MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED; + private static final String INTERNAL_TOPIC_SEPARATOR_ENABLED = MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED; private static final String INTERNAL_TOPIC_SEPARATOR_ENABLED_DOC = MirrorClientConfig.INTERNAL_TOPIC_SEPARATOR_ENABLED_DOC; public static final Boolean INTERNAL_TOPIC_SEPARATOR_ENABLED_DEFAULT = DefaultReplicationPolicy.INTERNAL_TOPIC_SEPARATOR_ENABLED_DEFAULT; @@ -330,7 +330,7 @@ String entityLabel() { ConfigDef.Type.LIST, List.of(), ConfigDef.ValidList.anyNonDuplicateValues(true, false), - ConfigDef.Importance.LOW, + ConfigDef.Importance.LOW, CONFIG_PROVIDERS_DOC) .withClientSslSupport() .withClientSaslSupport(); diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java index 947c3a36fb575..38edc2ee035a5 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java @@ -350,7 +350,7 @@ public static void main(String[] args) { Properties props = Utils.loadProps(configFile.getPath()); Map config = Utils.propsToStringMap(props); MirrorMaker mirrorMaker = new MirrorMaker(config, clusters); - + try { mirrorMaker.start(); } catch (Exception e) { diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMakerConfig.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMakerConfig.java index 33fc2641a394c..ddd6c623af179 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMakerConfig.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMakerConfig.java @@ -169,7 +169,7 @@ Map clusterProps(String cluster) { props.putIfAbsent(k, v); } } - + return props; } @@ -184,8 +184,8 @@ public Map workerConfig(SourceAndTarget sourceAndTarget) { props.putAll(stringsWithPrefix("offset.storage")); props.putAll(stringsWithPrefix("config.storage")); props.putAll(stringsWithPrefix("status.storage")); - props.putAll(stringsWithPrefix("key.converter")); - props.putAll(stringsWithPrefix("value.converter")); + props.putAll(stringsWithPrefix("key.converter")); + props.putAll(stringsWithPrefix("value.converter")); props.putAll(stringsWithPrefix("header.converter")); props.putAll(stringsWithPrefix("task")); props.putAll(stringsWithPrefix("worker")); @@ -204,8 +204,8 @@ public Map workerConfig(SourceAndTarget sourceAndTarget) { + sourceAndTarget.source() + ".internal"); props.putIfAbsent(DistributedConfig.CONFIG_TOPIC_CONFIG, "mm2-configs." + sourceAndTarget.source() + ".internal"); - props.putIfAbsent(KEY_CONVERTER_CLASS_CONFIG, BYTE_ARRAY_CONVERTER_CLASS); - props.putIfAbsent(VALUE_CONVERTER_CLASS_CONFIG, BYTE_ARRAY_CONVERTER_CLASS); + props.putIfAbsent(KEY_CONVERTER_CLASS_CONFIG, BYTE_ARRAY_CONVERTER_CLASS); + props.putIfAbsent(VALUE_CONVERTER_CLASS_CONFIG, BYTE_ARRAY_CONVERTER_CLASS); props.putIfAbsent(HEADER_CONVERTER_CLASS_CONFIG, BYTE_ARRAY_CONVERTER_CLASS); return props; @@ -225,7 +225,7 @@ public Map connectorBaseConfig(SourceAndTarget sourceAndTarget, props.putAll(rawProperties); props.keySet().retainAll(allConfigNames()); - + props.putAll(stringsWithPrefix(CONFIG_PROVIDERS_CONFIG)); props.putAll(stringsWithPrefix("replication.policy")); @@ -257,7 +257,7 @@ public Map connectorBaseConfig(SourceAndTarget sourceAndTarget, List configProviders() { return getList(CONFIG_PROVIDERS_CONFIG); - } + } Map transform(Map props) { // transform worker config according to config.providers diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceConfig.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceConfig.java index b131af9d609e2..d6b7578fbd1aa 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceConfig.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceConfig.java @@ -353,7 +353,7 @@ private static ConfigDef defineSourceConfig(ConfigDef baseConfig) { protected static final ConfigDef CONNECTOR_CONFIG_DEF = defineSourceConfig(new ConfigDef(BASE_CONNECTOR_CONFIG_DEF)); - public static void main(String[] args) { + public static void main(String[] args) { System.out.println(defineSourceConfig(new ConfigDef()).toHtml(4, config -> "mirror_source_" + config)); } } diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceLegacyMetrics.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceLegacyMetrics.java index 4df43a6ca3469..20ef244beec11 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceLegacyMetrics.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceLegacyMetrics.java @@ -154,7 +154,7 @@ private class PartitionMetrics { Map tags = new LinkedHashMap<>(); tags.put("source", source); - tags.put("target", target); + tags.put("target", target); tags.put("topic", topicPartition.topic()); tags.put("partition", Integer.toString(topicPartition.partition())); diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTask.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTask.java index cd6b9b01eedf3..a09d194b809c2 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTask.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTask.java @@ -116,14 +116,14 @@ public void stop() { try { consumerAccess.acquire(); } catch (InterruptedException e) { - log.warn("Interrupted waiting for access to consumer. Will try closing anyway."); + log.warn("Interrupted waiting for access to consumer. Will try closing anyway."); } Utils.closeQuietly(consumer, "source consumer"); Utils.closeQuietly(offsetSyncWriter, "offset sync writer"); Utils.closeQuietly(legacyMetrics, "metrics"); log.info("Stopping {} took {} ms.", Thread.currentThread().getName(), System.currentTimeMillis() - start); } - + @Override public String version() { return new MirrorSourceConnector().version(); @@ -167,7 +167,7 @@ public List poll() { } catch (KafkaException e) { log.warn("Failure during poll.", e); return null; - } catch (Throwable e) { + } catch (Throwable e) { log.error("Failure during poll.", e); // allow Connect to deal with the exception throw e; @@ -175,7 +175,7 @@ public List poll() { consumerAccess.release(); } } - + @Override public void commitRecord(SourceRecord record, RecordMetadata metadata) { if (stopping) { @@ -209,7 +209,7 @@ public void commitRecord(SourceRecord record, RecordMetadata metadata) { offsetSyncWriter.firePendingOffsetSyncs(); } } - + private Map loadOffsets(Set topicPartitions) { return topicPartitions.stream().collect(Collectors.toMap(x -> x, this::loadOffset)); } diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTaskConfig.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTaskConfig.java index 1996ea2c632c2..1aa02b58acb6d 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTaskConfig.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTaskConfig.java @@ -54,7 +54,7 @@ MirrorSourceMetrics metrics(PluginMetrics pluginMetrics) { String entityLabel() { return super.entityLabel() + "-" + (getInt(TASK_INDEX) == null ? "?" : getInt(TASK_INDEX)); } - + protected static final ConfigDef TASK_CONFIG_DEF = new ConfigDef(CONNECTOR_CONFIG_DEF) .define( TASK_TOPIC_PARTITIONS, diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/Scheduler.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/Scheduler.java index 432fdbaf3e89a..f724f9547057f 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/Scheduler.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/Scheduler.java @@ -49,7 +49,7 @@ void scheduleRepeating(Task task, Duration interval, String description) { } executor.scheduleAtFixedRate(() -> executeThread(task, description, true), 0, interval.toMillis(), TimeUnit.MILLISECONDS); } - + void scheduleRepeatingDelayed(Task task, Duration interval, String description) { if (interval.toMillis() < 0L) { return; @@ -68,7 +68,7 @@ void execute(Task task, String description) { } catch (Throwable e) { LOG.error("{} caught exception in task: {}", name, description, e); } - } + } void executeAsync(Task task, String description) { executor.submit(() -> executeThread(task, description, false)); diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorCheckpointTaskTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorCheckpointTaskTest.java index 7ce554d5f663d..4f0018aa6967d 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorCheckpointTaskTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorCheckpointTaskTest.java @@ -346,7 +346,7 @@ void backingStoreStart() { assertEquals(1, checkpoints2.size()); assertEquals(new Checkpoint("group1", sourceT1p0, 400, 376, ""), checkpoints2.get(sourceT1p0)); } - + @Test public void testCheckpointStoreInitialized() throws InterruptedException { CheckpointStore checkpointStore = mock(CheckpointStore.class); diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorConnectorConfigTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorConnectorConfigTest.java index d91877bba8479..c999581733e1f 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorConnectorConfigTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorConnectorConfigTest.java @@ -101,7 +101,7 @@ public void testSourceProducerConfig() { expectedProducerProps.put("acks", "1"); expectedProducerProps.put("client.id", "source1->target2|ConnectorName|test"); assertEquals(expectedProducerProps, connectorProducerProps, - MirrorConnectorConfig.PRODUCER_CLIENT_PREFIX + " source product config not matching"); + MirrorConnectorConfig.PRODUCER_CLIENT_PREFIX + " source product config not matching"); } @Test diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceConnectorTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceConnectorTest.java index 8fea16d1c91d1..035a1eac61274 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceConnectorTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceConnectorTest.java @@ -336,7 +336,7 @@ public void testConfigPropertyFilteringWithAlterConfigsAndSourceDefault() { filter.configure(filterConfig); MirrorSourceConnector connector = new MirrorSourceConnector(new SourceAndTarget("source", "target"), - new DefaultReplicationPolicy(), x -> true, filter); + new DefaultReplicationPolicy(), x -> true, filter); List entries = new ArrayList<>(); entries.add(new ConfigEntry("name-1", "value-1")); // When "use.defaults.from" explicitly set to "source", the config with default value should be replicated diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceTaskTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceTaskTest.java index ba23b42b80b15..e8f6c474b354e 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceTaskTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/MirrorSourceTaskTest.java @@ -163,7 +163,7 @@ public void testPoll() { byte[] value1 = "fgh".getBytes(); byte[] key2 = "123".getBytes(); byte[] value2 = "456".getBytes(); - List> consumerRecordsList = new ArrayList<>(); + List> consumerRecordsList = new ArrayList<>(); String topicName = "test"; String headerKey = "key"; RecordHeaders headers = new RecordHeaders(new Header[] { diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncStoreTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncStoreTest.java index 3f2ddbc62e932..ec298fe344527 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncStoreTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncStoreTest.java @@ -222,7 +222,7 @@ public void testConsistentlySpacedSyncs() { long iterations = 100; long maxStep = Long.MAX_VALUE / iterations; // Test a variety of steps (corresponding to the offset.lag.max configuration) - for (long step = 1; step < maxStep; step = (step * 2) + 1) { + for (long step = 1; step < maxStep; step = (step * 2) + 1) { for (long firstOffset = 0; firstOffset < 30; firstOffset++) { long finalStep = step; // Generate a stream of consistently spaced syncs diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncWriterTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncWriterTest.java index 19c8d9d39524d..2cdf450a58694 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncWriterTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/OffsetSyncWriterTest.java @@ -61,7 +61,7 @@ public void testMaybeQueueOffsetSyncs() { assertTrue(offsetSyncWriter.getDelayedOffsetSyncs().containsKey(topicPartition)); assertEquals(1, offsetSyncWriter.partitionStates().get(topicPartition).lastSyncDownstreamOffset); } - + @Test public void testFirePendingOffsetSyncs() { int maxOffsetLag = 1; diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/DedicatedMirrorIntegrationTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/DedicatedMirrorIntegrationTest.java index 1d1dd0feea341..62ad42b46cd69 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/DedicatedMirrorIntegrationTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/DedicatedMirrorIntegrationTest.java @@ -143,26 +143,26 @@ public void testSingleNodeCluster() throws Exception { final String testTopicPrefix = "test-topic-"; Map mmProps = new HashMap<>() {{ - put("dedicated.mode.enable.internal.rest", "false"); - put("listeners", "http://localhost:0"); - // Refresh topics very frequently to quickly pick up on topics that are created + put("dedicated.mode.enable.internal.rest", "false"); + put("listeners", "http://localhost:0"); + // Refresh topics very frequently to quickly pick up on topics that are created // after the MM2 nodes are brought up during testing - put("refresh.topics.interval.seconds", "1"); - put("clusters", String.join(", ", a, b)); - put(a + ".bootstrap.servers", clusterA.bootstrapServers()); - put(b + ".bootstrap.servers", clusterB.bootstrapServers()); - put(ab + ".enabled", "true"); - put(ab + ".topics", "^" + testTopicPrefix + ".*"); - put(ba + ".enabled", "false"); - put(ba + ".emit.heartbeats.enabled", "false"); - put("replication.factor", "1"); - put("checkpoints.topic.replication.factor", "1"); - put("heartbeats.topic.replication.factor", "1"); - put("offset-syncs.topic.replication.factor", "1"); - put("offset.storage.replication.factor", "1"); - put("status.storage.replication.factor", "1"); - put("config.storage.replication.factor", "1"); - }}; + put("refresh.topics.interval.seconds", "1"); + put("clusters", String.join(", ", a, b)); + put(a + ".bootstrap.servers", clusterA.bootstrapServers()); + put(b + ".bootstrap.servers", clusterB.bootstrapServers()); + put(ab + ".enabled", "true"); + put(ab + ".topics", "^" + testTopicPrefix + ".*"); + put(ba + ".enabled", "false"); + put(ba + ".emit.heartbeats.enabled", "false"); + put("replication.factor", "1"); + put("checkpoints.topic.replication.factor", "1"); + put("heartbeats.topic.replication.factor", "1"); + put("offset-syncs.topic.replication.factor", "1"); + put("offset.storage.replication.factor", "1"); + put("status.storage.replication.factor", "1"); + put("config.storage.replication.factor", "1"); + }}; // Bring up a single-node cluster final MirrorMaker mm = startMirrorMaker("single node", mmProps); @@ -205,24 +205,24 @@ public void testClusterWithEmitOffsetDisabled() throws Exception { final String testTopicPrefix = "test-topic-"; Map mmProps = new HashMap<>() {{ - put("dedicated.mode.enable.internal.rest", "false"); - put("listeners", "http://localhost:0"); - // Refresh topics very frequently to quickly pick up on topics that are created + put("dedicated.mode.enable.internal.rest", "false"); + put("listeners", "http://localhost:0"); + // Refresh topics very frequently to quickly pick up on topics that are created // after the MM2 nodes are brought up during testing - put("refresh.topics.interval.seconds", "1"); - put("clusters", String.join(", ", a, b)); - put(a + ".bootstrap.servers", clusterA.bootstrapServers()); - put(b + ".bootstrap.servers", clusterB.bootstrapServers()); - put(ab + ".enabled", "true"); - put(ab + ".topics", "^" + testTopicPrefix + ".*"); - put("replication.factor", "1"); - put("checkpoints.topic.replication.factor", "1"); - put("heartbeats.topic.replication.factor", "1"); - put("emit.offset-syncs.enabled", "false"); - put("status.storage.replication.factor", "1"); - put("offset.storage.replication.factor", "1"); - put("config.storage.replication.factor", "1"); - }}; + put("refresh.topics.interval.seconds", "1"); + put("clusters", String.join(", ", a, b)); + put(a + ".bootstrap.servers", clusterA.bootstrapServers()); + put(b + ".bootstrap.servers", clusterB.bootstrapServers()); + put(ab + ".enabled", "true"); + put(ab + ".topics", "^" + testTopicPrefix + ".*"); + put("replication.factor", "1"); + put("checkpoints.topic.replication.factor", "1"); + put("heartbeats.topic.replication.factor", "1"); + put("emit.offset-syncs.enabled", "false"); + put("status.storage.replication.factor", "1"); + put("offset.storage.replication.factor", "1"); + put("config.storage.replication.factor", "1"); + }}; // Bring up a single-node cluster final MirrorMaker mm = startMirrorMaker("no-offset-syncing", mmProps); @@ -289,42 +289,42 @@ public void testMultiNodeCluster() throws Exception { final String testTopicPrefix = "test-topic-"; Map mmProps = new HashMap<>() {{ - put("dedicated.mode.enable.internal.rest", "true"); - put("listeners", "http://localhost:0"); - // Refresh topics very frequently to quickly pick up on topics that are created + put("dedicated.mode.enable.internal.rest", "true"); + put("listeners", "http://localhost:0"); + // Refresh topics very frequently to quickly pick up on topics that are created // after the MM2 nodes are brought up during testing - put(MirrorSourceConfig.REFRESH_TOPICS_INTERVAL_SECONDS, "1"); - put("clusters", String.join(", ", a, b)); - put(a + ".bootstrap.servers", clusterA.bootstrapServers()); - put(b + ".bootstrap.servers", clusterB.bootstrapServers()); - // Enable exactly-once support to both validate that MirrorMaker can run with + put(MirrorSourceConfig.REFRESH_TOPICS_INTERVAL_SECONDS, "1"); + put("clusters", String.join(", ", a, b)); + put(a + ".bootstrap.servers", clusterA.bootstrapServers()); + put(b + ".bootstrap.servers", clusterB.bootstrapServers()); + // Enable exactly-once support to both validate that MirrorMaker can run with // that feature turned on, and to force cross-worker communication before // task startup - put(b + ".exactly.once.source.support", "enabled"); - put(a + ".consumer.isolation.level", "read_committed"); - put(ab + ".enabled", "true"); - put(ab + ".topics", "^" + testTopicPrefix + ".*"); - // The name of the offset syncs topic will contain the name of the cluster in + put(b + ".exactly.once.source.support", "enabled"); + put(a + ".consumer.isolation.level", "read_committed"); + put(ab + ".enabled", "true"); + put(ab + ".topics", "^" + testTopicPrefix + ".*"); + // The name of the offset syncs topic will contain the name of the cluster in // the replication flow that it is _not_ hosted on; create the offset syncs topic // on the target cluster so that its name will contain the source cluster's name // (since the target cluster's name contains characters that are not valid for // use in a topic name) - put(ab + ".offset-syncs.topic.location", "target"); - // Disable b -> a (and heartbeats from it) so that no topics are created that use + put(ab + ".offset-syncs.topic.location", "target"); + // Disable b -> a (and heartbeats from it) so that no topics are created that use // the target cluster's name - put(ba + ".enabled", "false"); - put(ba + ".emit.heartbeats.enabled", "false"); - put("replication.factor", "1"); - put("checkpoints.topic.replication.factor", "1"); - put("heartbeats.topic.replication.factor", "1"); - put("offset-syncs.topic.replication.factor", "1"); - put("offset.storage.replication.factor", "1"); - put("status.storage.replication.factor", "1"); - put("config.storage.replication.factor", "1"); - // For the multi-node case, we wait for reassignment so shorten the delay period. - put(a + "." + DistributedConfig.SCHEDULED_REBALANCE_MAX_DELAY_MS_CONFIG, "1000"); - put(b + "." + DistributedConfig.SCHEDULED_REBALANCE_MAX_DELAY_MS_CONFIG, "1000"); - }}; + put(ba + ".enabled", "false"); + put(ba + ".emit.heartbeats.enabled", "false"); + put("replication.factor", "1"); + put("checkpoints.topic.replication.factor", "1"); + put("heartbeats.topic.replication.factor", "1"); + put("offset-syncs.topic.replication.factor", "1"); + put("offset.storage.replication.factor", "1"); + put("status.storage.replication.factor", "1"); + put("config.storage.replication.factor", "1"); + // For the multi-node case, we wait for reassignment so shorten the delay period. + put(a + "." + DistributedConfig.SCHEDULED_REBALANCE_MAX_DELAY_MS_CONFIG, "1000"); + put(b + "." + DistributedConfig.SCHEDULED_REBALANCE_MAX_DELAY_MS_CONFIG, "1000"); + }}; final SourceAndTarget sourceAndTarget = new SourceAndTarget(a, b); // Bring up a three-node cluster @@ -397,6 +397,7 @@ private void writeToTopic(EmbeddedKafkaCluster cluster, String topic, int numMes cluster.produce(topic, Integer.toString(i)); } } + private void awaitMirrorMakerStart(final MirrorMaker mm, final SourceAndTarget sourceAndTarget) throws InterruptedException { awaitMirrorMakerStart(mm, sourceAndTarget, CONNECTOR_CLASSES); } diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java index d73caf9630773..f1ad00eb4ef3e 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java @@ -118,7 +118,7 @@ @Tag("integration") public class MirrorConnectorsIntegrationBaseTest { private static final Logger log = LoggerFactory.getLogger(MirrorConnectorsIntegrationBaseTest.class); - + protected static final int NUM_RECORDS_PER_PARTITION = 10; protected static final int NUM_PARTITIONS = 10; protected static final int NUM_RECORDS_PRODUCED = NUM_PARTITIONS * NUM_RECORDS_PER_PARTITION; @@ -154,7 +154,7 @@ public class MirrorConnectorsIntegrationBaseTest { protected Boolean createReplicatedTopicsUpfront = false; // enable to speed up the test cases protected Exit.Procedure exitProcedure; private Exit.Procedure haltProcedure; - + protected Properties primaryBrokerProps = new Properties(); protected Properties backupBrokerProps = new Properties(); protected Map primaryWorkerProps = new HashMap<>(); @@ -163,8 +163,8 @@ public class MirrorConnectorsIntegrationBaseTest { @BeforeEach public void startClusters() throws Exception { startClusters(new HashMap<>() {{ - put("topics", "test-topic-.*, primary.test-topic-.*, backup.test-topic-.*"); - }}); + put("topics", "test-topic-.*, primary.test-topic-.*, backup.test-topic-.*"); + }}); } public void startClusters(Map additionalMM2Config) throws Exception { @@ -195,7 +195,7 @@ public void startClusters(Map additionalMM2Config) throws Except // we don't want to exit the JVM and instead simply want to fail the test Exit.setExitProcedure(exitProcedure); Exit.setHaltProcedure(haltProcedure); - + primaryBrokerProps.put("auto.create.topics.enable", "false"); backupBrokerProps.put("auto.create.topics.enable", "false"); @@ -234,7 +234,7 @@ public void startClusters(Map additionalMM2Config) throws Except .maskExitProcedures(false) .clientProps(additionalBackupClusterClientsConfigs) .build(); - + primary.start(); waitForTopicCreated(primary, "mm2-status.backup.internal"); @@ -254,17 +254,17 @@ public void startClusters(Map additionalMM2Config) throws Except waitForTopicCreated(backup, "test-topic-1"); waitForTopicCreated(primary, "test-topic-1"); warmUpConsumer(Map.of("group.id", "consumer-group-dummy")); - + log.info(PRIMARY_CLUSTER_ALIAS + " REST service: {}", primary.endpointForResource("connectors")); log.info(BACKUP_CLUSTER_ALIAS + " REST service: {}", backup.endpointForResource("connectors")); log.info(PRIMARY_CLUSTER_ALIAS + " brokers: {}", primary.kafka().bootstrapServers()); log.info(BACKUP_CLUSTER_ALIAS + " brokers: {}", backup.kafka().bootstrapServers()); - + // now that the brokers are running, we can finish setting up the Connectors mm2Props.put(PRIMARY_CLUSTER_ALIAS + ".bootstrap.servers", primary.kafka().bootstrapServers()); mm2Props.put(BACKUP_CLUSTER_ALIAS + ".bootstrap.servers", backup.kafka().bootstrapServers()); } - + @AfterEach public void shutdownClusters() throws Exception { try { @@ -290,7 +290,7 @@ public void shutdownClusters() throws Exception { } } } - + @Test public void testReplication() throws Exception { produceMessages(primaryProducer, "test-topic-1"); @@ -303,7 +303,7 @@ public void testReplication() throws Exception { Map consumerProps = Map.of("group.id", consumerGroupName); // warm up consumers before starting the connectors, so we don't need to wait for discovery warmUpConsumer(consumerProps); - + mm2Config = new MirrorMakerConfig(mm2Props); waitUntilMirrorMakerIsRunning(backup, CONNECTOR_LIST, mm2Config, PRIMARY_CLUSTER_ALIAS, BACKUP_CLUSTER_ALIAS); @@ -364,7 +364,7 @@ public void testReplication() throws Exception { assertTrue(primary.kafka().consume(1, RECORD_TRANSFER_DURATION_MS, "backup.heartbeats").count() > 0, "Heartbeats were not replicated downstream to primary cluster."); } - + assertTrue(backupClient.upstreamClusters().contains(PRIMARY_CLUSTER_ALIAS), "Did not find upstream primary cluster."); assertEquals(1, backupClient.replicationHops(PRIMARY_CLUSTER_ALIAS), "Did not calculate replication hops correctly."); assertTrue(backup.kafka().consume(1, CHECKPOINT_DURATION_MS, "primary.checkpoints.internal").count() > 0, @@ -392,7 +392,7 @@ public void testReplication() throws Exception { } assertMonotonicCheckpoints(backup, "primary.checkpoints.internal"); - + primaryClient.close(); backupClient.close(); @@ -445,7 +445,7 @@ public void testReplication() throws Exception { @Test public void testReplicationWithEmptyPartition() throws Exception { String consumerGroupName = "consumer-group-testReplicationWithEmptyPartition"; - Map consumerProps = Map.of("group.id", consumerGroupName); + Map consumerProps = Map.of("group.id", consumerGroupName); // create topic String topic = "test-topic-with-empty-partition"; @@ -503,12 +503,12 @@ private void testOneWayReplicationWithOffsetSyncs(int offsetLagMax) throws Inter produceMessages(primaryProducer, "test-topic-1"); String backupTopic1 = remoteTopicName("test-topic-1", PRIMARY_CLUSTER_ALIAS); String consumerGroupName = "consumer-group-testOneWayReplicationWithAutoOffsetSync"; - Map consumerProps = new HashMap<>() {{ - put("group.id", consumerGroupName); - put("auto.offset.reset", "earliest"); - }}; + Map consumerProps = new HashMap<>() {{ + put("group.id", consumerGroupName); + put("auto.offset.reset", "earliest"); + }}; // create consumers before starting the connectors, so we don't need to wait for discovery - try (Consumer primaryConsumer = primary.kafka().createConsumerAndSubscribeTo(consumerProps, + try (Consumer primaryConsumer = primary.kafka().createConsumerAndSubscribeTo(consumerProps, "test-topic-1")) { // we need to wait for consuming all the records for MM2 replicating the expected offsets waitForConsumingAllRecords(primaryConsumer, NUM_RECORDS_PRODUCED); @@ -1161,13 +1161,13 @@ String remoteTopicName(String topic, String clusterAlias) { * launch the connectors on kafka connect cluster and check if they are running */ protected static void waitUntilMirrorMakerIsRunning(EmbeddedConnectCluster connectCluster, - List> connectorClasses, MirrorMakerConfig mm2Config, + List> connectorClasses, MirrorMakerConfig mm2Config, String primary, String backup) throws InterruptedException { for (Class connector : connectorClasses) { connectCluster.configureConnector(connector.getSimpleName(), mm2Config.connectorBaseConfig( new SourceAndTarget(primary, backup), connector)); } - + // we wait for the connector and tasks to come up for each connector, so that when we do the // actual testing, we are certain that the tasks are up and running; this will prevent // flaky tests where the connector and tasks didn't start up in time for the tests to be run @@ -1177,7 +1177,7 @@ protected static void waitUntilMirrorMakerIsRunning(EmbeddedConnectCluster conne } } - protected static void restartMirrorMakerConnectors(EmbeddedConnectCluster connectCluster, List> connectorClasses) { + protected static void restartMirrorMakerConnectors(EmbeddedConnectCluster connectCluster, List> connectorClasses) { for (Class connector : connectorClasses) { connectCluster.restartConnectorAndTasks(connector.getSimpleName(), false, true, false); } @@ -1459,7 +1459,7 @@ private static void assertDownstreamRedeliveriesBoundedByMaxLag(Consumer void waitForConsumingAllRecords(Consumer consumer, int }, RECORD_CONSUME_DURATION_MS, "Consumer cannot consume all records in time"); consumer.commitSync(); } - + /* * MM2 config to use in integration tests */ @@ -1499,7 +1499,7 @@ private static Map basicMM2Config() { mm2Props.put(BACKUP_CLUSTER_ALIAS + ".offset.flush.interval.ms", "5000"); return mm2Props; } - + private void createTopics() { // to verify topic config will be sync-ed across clusters Map topicConfig = Map.of(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT); @@ -1615,7 +1615,7 @@ protected static void waitForTopicPartitionCreated(EmbeddedConnectCluster cluste public static class CollectAllMetricsReporter extends MockMetricsReporter { - public static final Map METRICS = new HashMap<>(); + public static final Map METRICS = new HashMap<>(); @Override public void init(List metrics) { diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationSSLTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationSSLTest.java index afebb626e9d18..463f4d59512b5 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationSSLTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationSSLTest.java @@ -49,13 +49,13 @@ public void startClusters() throws Exception { // set SSL config for kafka connect worker backupWorkerProps.putAll(sslProps.entrySet().stream().collect(Collectors.toMap( - e -> String.valueOf(e.getKey()), e -> String.valueOf(e.getValue())))); + e -> String.valueOf(e.getKey()), e -> String.valueOf(e.getValue())))); mm2Props.putAll(sslProps.entrySet().stream().collect(Collectors.toMap( - e -> BACKUP_CLUSTER_ALIAS + "." + e.getKey(), e -> String.valueOf(e.getValue())))); + e -> BACKUP_CLUSTER_ALIAS + "." + e.getKey(), e -> String.valueOf(e.getValue())))); // set SSL config for producer used by source task in MM2 mm2Props.putAll(sslProps.entrySet().stream().collect(Collectors.toMap( - e -> BACKUP_CLUSTER_ALIAS + ".producer." + e.getKey(), e -> String.valueOf(e.getValue())))); + e -> BACKUP_CLUSTER_ALIAS + ".producer." + e.getKey(), e -> String.valueOf(e.getValue())))); super.startClusters(); } diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsWithCustomForwardingAdminIntegrationTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsWithCustomForwardingAdminIntegrationTest.java index 0d189b5c4d1a1..f4c31e6865157 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsWithCustomForwardingAdminIntegrationTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsWithCustomForwardingAdminIntegrationTest.java @@ -150,8 +150,8 @@ public void startClusters() throws Exception { backupWorkerProps.putAll(superUserConfig()); Map additionalConfig = new HashMap<>(superUserConfig()) {{ - put(FORWARDING_ADMIN_CLASS, FakeForwardingAdminWithLocalMetadata.class.getName()); - }}; + put(FORWARDING_ADMIN_CLASS, FakeForwardingAdminWithLocalMetadata.class.getName()); + }}; superUserConfig().forEach((property, value) -> { additionalConfig.put(CONNECTOR_CLIENT_CONSUMER_OVERRIDES_PREFIX + property, value); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/converters/ByteArrayConverter.java b/connect/runtime/src/main/java/org/apache/kafka/connect/converters/ByteArrayConverter.java index 83838e91a1e7d..426b92332709a 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/converters/ByteArrayConverter.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/converters/ByteArrayConverter.java @@ -37,10 +37,12 @@ public class ByteArrayConverter implements Converter, HeaderConverter { private static final ConfigDef CONFIG_DEF = ConverterConfig.newConfigDef(); + @Override public String version() { return AppInfoParser.getVersion(); } + @Override public ConfigDef config() { return CONFIG_DEF; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java b/connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java index 0deb37d14e32e..50b824e87e51c 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java @@ -70,6 +70,7 @@ protected NumberConverter(String typeName, Schema schema, Serializer serializ public String version() { return AppInfoParser.getVersion(); } + @Override public ConfigDef config() { return NumberConverterConfig.configDef(); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractHerder.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractHerder.java index d5d6edf703e40..83d35e2e58819 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractHerder.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractHerder.java @@ -965,7 +965,7 @@ public static ConfigInfos generateResult(String connType, Map List configInfoList = new LinkedList<>(); Map configValueMap = new HashMap<>(); - for (ConfigValue configValue: configValues) { + for (ConfigValue configValue : configValues) { String configName = configValue.name(); configValueMap.put(configName, configValue); if (!configKeys.containsKey(configName)) { @@ -1021,7 +1021,7 @@ private static ConfigValueInfo convertConfigValue(ConfigValue configValue, Type List recommendedValues = new LinkedList<>(); if (type == Type.LIST) { - for (Object object: configValue.recommendedValues()) { + for (Object object : configValue.recommendedValues()) { recommendedValues.add(ConfigDef.convertToString(object, Type.STRING)); } } else { diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTask.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTask.java index 9a74d81770fa7..6ac9286324972 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTask.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTask.java @@ -616,20 +616,24 @@ public SourceRecordWriteCounter(int batchSize, SourceTaskMetricsGroup metricsGro counter = batchSize; this.metricsGroup = metricsGroup; } + public void skipRecord() { skipped += 1; if (counter > 0 && --counter == 0) { finishedAllWrites(); } } + public void completeRecord() { if (counter > 0 && --counter == 0) { finishedAllWrites(); } } + public void retryRemaining() { finishedAllWrites(); } + private void finishedAllWrites() { if (!completed) { metricsGroup.recordWrite(batchSize - counter, skipped); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/HerderConnectorContext.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/HerderConnectorContext.java index 8568e91f40088..8e265efc6e155 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/HerderConnectorContext.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/HerderConnectorContext.java @@ -46,8 +46,8 @@ public HerderConnectorContext(AbstractHerder herder, String connectorName, Plugi @Override public void requestTaskReconfiguration() { if (closed) { - throw new ConnectException("The request for task reconfiguration has been rejected " - + "because this instance of the connector '" + connectorName + "' has already " + throw new ConnectException("The request for task reconfiguration has been rejected " + + "because this instance of the connector '" + connectorName + "' has already " + "been shut down."); } @@ -60,8 +60,8 @@ public void requestTaskReconfiguration() { public void raiseError(Exception e) { if (closed) { log.warn("Connector {} attempted to raise error after shutdown:", connectorName, e); - throw new ConnectException("The request to fail the connector has been rejected " - + "because this instance of the connector '" + connectorName + "' has already " + throw new ConnectException("The request to fail the connector has been rejected " + + "because this instance of the connector '" + connectorName + "' has already " + "been shut down."); } diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/StateTracker.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/StateTracker.java index 9dddec09ae340..41bbf6b1b6629 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/StateTracker.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/StateTracker.java @@ -88,7 +88,7 @@ private static final class StateChange { this.unassignedTotalTimeMs = unassignedTotalTimeMs; this.runningTotalTimeMs = runningTotalTimeMs; this.pausedTotalTimeMs = pausedTotalTimeMs; - this.stoppedTotalTimeMs = stoppedTotalTimeMs; + this.stoppedTotalTimeMs = stoppedTotalTimeMs; this.failedTotalTimeMs = failedTotalTimeMs; this.destroyedTotalTimeMs = destroyedTotalTimeMs; this.restartingTotalTimeMs = restartingTotalTimeMs; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Worker.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Worker.java index c7fe5ca20aca3..bd0b73d08de08 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Worker.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Worker.java @@ -479,7 +479,7 @@ private void stopConnector(String connName) { private void stopConnectors(Collection ids) { // Herder is responsible for stopping connectors. This is an internal method to sequentially // stop connectors that have not explicitly been stopped. - for (String connector: ids) + for (String connector : ids) stopConnector(connector); } @@ -803,7 +803,7 @@ public KafkaFuture fenceZombies(String connName, int numTasks, Map exactlyOnceSourceTaskProducerConfigs(ConnectorTaskId id, WorkerConfig config, ConnectorConfig connConfig, - Class connectorClass, + Class connectorClass, ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy, String clusterId) { Map result = baseProducerConfigs(id.connector(), "connector-producer-" + id, config, connConfig, connectorClass, connectorClientConfigOverridePolicy, clusterId); @@ -838,7 +838,7 @@ static Map baseProducerConfigs(String connName, String defaultClientId, WorkerConfig config, ConnectorConfig connConfig, - Class connectorClass, + Class connectorClass, ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy, String clusterId) { Map producerProps = new HashMap<>(); @@ -1912,7 +1912,7 @@ public WorkerTask, SinkRecord> doBuild( keyConverterPlugin.get(), valueConverterPlugin.get(), headerConverterPlugin.get()); Map consumerProps = baseConsumerConfigs( - id.connector(), "connector-consumer-" + id, config, connectorConfig, connectorClass, + id.connector(), "connector-consumer-" + id, config, connectorConfig, connectorClass, connectorClientConfigOverridePolicy, kafkaClusterId, ConnectorType.SINK); KafkaConsumer consumer = new KafkaConsumer<>(consumerProps); @@ -2402,7 +2402,7 @@ protected synchronized void recordTaskRemoved(ConnectorTaskId connectorTaskId) { } protected synchronized void close() { - for (MetricGroup metricGroup: connectorStatusMetrics.values()) { + for (MetricGroup metricGroup : connectorStatusMetrics.values()) { metricGroup.close(); } } diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfig.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfig.java index 35326c03ae3db..8fd0277762beb 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfig.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfig.java @@ -60,7 +60,7 @@ public class WorkerConfig extends AbstractConfig { public static final String BOOTSTRAP_SERVERS_CONFIG = "bootstrap.servers"; public static final String BOOTSTRAP_SERVERS_DOC = - "A list of host/port pairs used to establish the initial connection to the Kafka cluster. " + "A list of host/port pairs used to establish the initial connection to the Kafka cluster. " + "Clients use this list to bootstrap and discover the full set of Kafka brokers. " + "While the order of servers in the list does not matter, we recommend including more than one server to ensure resilience if any servers are down. " + "This list does not need to contain the entire set of brokers, as Kafka clients automatically manage and update connections to the cluster efficiently. " @@ -121,9 +121,9 @@ public class WorkerConfig extends AbstractConfig { public static final String OFFSET_COMMIT_TIMEOUT_MS_CONFIG = "offset.flush.timeout.ms"; private static final String OFFSET_COMMIT_TIMEOUT_MS_DOC = "Maximum number of milliseconds to wait for records to flush and partition offset data to be" - + " committed to offset storage before cancelling the process and restoring the offset " - + "data to be committed in a future attempt. This property has no effect for source connectors " - + "running with exactly-once support."; + + " committed to offset storage before cancelling the process and restoring the offset " + + "data to be committed in a future attempt. This property has no effect for source connectors " + + "running with exactly-once support."; public static final long OFFSET_COMMIT_TIMEOUT_MS_DEFAULT = 5000L; public static final String PLUGIN_PATH_CONFIG = "plugin.path"; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConnector.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConnector.java index 3faf70f898c7c..ea54287b09fb2 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConnector.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConnector.java @@ -308,7 +308,7 @@ void doShutdown() { stateChangeCallback.onCompletion( new ConnectException( "Could not begin changing connector state to " + preEmptedState.name() - + " as the connector has been scheduled for shutdown"), + + " as the connector has been scheduled for shutdown"), null); } if (state == State.STARTED) @@ -367,9 +367,9 @@ public void transitionTo(TargetState targetState, Callback stateCha preEmptedStateChangeCallback.onCompletion( new ConnectException( "Could not begin changing connector state to " + preEmptedState.name() - + " before another request to change state was made;" - + " the new request (which is to change the state to " + targetState.name() - + ") has pre-empted this one"), + + " before another request to change state was made;" + + " the new request (which is to change the state to " + targetState.name() + + ") has pre-empted this one"), null ); } @@ -443,8 +443,8 @@ ConnectorMetricsGroup metrics() { @Override public String toString() { return "WorkerConnector{" + - "id=" + connName + - '}'; + "id=" + connName + + '}'; } class ConnectorMetricsGroup implements ConnectorStatus.Listener, AutoCloseable { diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSinkTask.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSinkTask.java index 1de9ff2d9a56e..1852d298a5ead 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSinkTask.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSinkTask.java @@ -224,7 +224,7 @@ public void execute() { while (!isStopping()) iteration(); } catch (WakeupException e) { - log.trace("Consumer woken up during initial offset commit attempt, " + log.trace("Consumer woken up during initial offset commit attempt, " + "but succeeded during a later attempt"); } } @@ -664,7 +664,7 @@ private void rewind() { if (offsets.isEmpty()) { return; } - for (Map.Entry entry: offsets.entrySet()) { + for (Map.Entry entry : offsets.entrySet()) { TopicPartition tp = entry.getKey(); Long offset = entry.getValue(); if (offset != null) { diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSourceTask.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSourceTask.java index 3ccd530be3900..30cef132651c6 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSourceTask.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerSourceTask.java @@ -230,8 +230,8 @@ public boolean commitOffsets() { } if (offsetsToCommit.isEmpty()) { - log.debug("{} Either no records were produced by the task since the last offset commit, " - + "or every record has been filtered out by a transformation " + log.debug("{} Either no records were produced by the task since the last offset commit, " + + "or every record has been filtered out by a transformation " + "or dropped due to transformation or conversion errors.", this ); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java index f1fd7846f28f6..3e8bc8267c8b8 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java @@ -701,8 +701,8 @@ private synchronized boolean updateConfigsWithIncrementalCooperative(AtomicRefer taskConfigUpdates = new HashSet<>(); } } else { - log.trace("Skipping config updates with incremental cooperative rebalancing " - + "since no config rebalance is required " + log.trace("Skipping config updates with incremental cooperative rebalancing " + + "since no config rebalance is required " + "and there are no connector config, task config, or target state changes pending"); } return retValue; @@ -1173,6 +1173,7 @@ private void doPutConnectorConfig( ); })); } + @Override public void stopConnector(final String connName, final Callback callback) { log.trace("Submitting request to transition connector {} to STOPPED state", connName); @@ -2595,7 +2596,7 @@ private void updateDeletedTaskStatus() { ClusterConfigState snapshot = configBackingStore.snapshot(); for (String connector : statusBackingStore.connectors()) { Set remainingTasks = new HashSet<>(snapshot.tasks(connector)); - + statusBackingStore.getAll(connector).stream() .map(TaskStatus::id) .filter(task -> !remainingTasks.contains(task)) @@ -2610,6 +2611,7 @@ protected HerderMetrics herderMetrics() { // Rebalances are triggered internally from the group member, so these are always executed in the work thread. public class RebalanceListener implements WorkerRebalanceListener { private final Time time; + RebalanceListener(Time time) { this.time = time; } diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignor.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignor.java index 5ef3591355317..85201e7e1654d 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignor.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignor.java @@ -476,7 +476,7 @@ protected void handleLostAssignments(ConnectorsAndTasks lostAssignments, } if (!candidateWorkerLoad.isEmpty()) { - log.debug("Assigning lost tasks to {} candidate workers: {}", + log.debug("Assigning lost tasks to {} candidate workers: {}", candidateWorkerLoad.size(), candidateWorkerLoad.stream().map(WorkerLoad::worker).collect(Collectors.joining(","))); Iterator candidateWorkerIterator = candidateWorkerLoad.iterator(); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/errors/WorkerErrantRecordReporter.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/errors/WorkerErrantRecordReporter.java index cbff115d50ee5..45e43ce192637 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/errors/WorkerErrantRecordReporter.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/errors/WorkerErrantRecordReporter.java @@ -190,7 +190,7 @@ public boolean isDone() { } public Void get() throws InterruptedException, ExecutionException { - for (Future future: futures) { + for (Future future : futures) { future.get(); } return null; @@ -198,7 +198,7 @@ public Void get() throws InterruptedException, ExecutionException { public Void get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { - for (Future future: futures) { + for (Future future : futures) { future.get(timeout, unit); } return null; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java index c3af78b78b82c..e34f54222d39c 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java @@ -37,7 +37,7 @@ import java.util.concurrent.TimeoutException; public class ConnectClusterStateImpl implements ConnectClusterState { - + private final long herderRequestTimeoutMs; private final ConnectClusterDetails clusterDetails; private final Herder herder; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java index 729074d508e75..88c03c5092548 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java @@ -235,7 +235,7 @@ public static Set pluginLocations(String pluginPath, boolean failFast) { private static List pluginLocations(Path pluginPathElement) throws IOException { List locations = new ArrayList<>(); try ( - DirectoryStream listing = Files.newDirectoryStream( + DirectoryStream listing = Files.newDirectoryStream( pluginPathElement, PLUGIN_PATH_FILTER ) diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/Plugins.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/Plugins.java index 0a546c01e02a6..9128c5e71bbb5 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/Plugins.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/Plugins.java @@ -111,8 +111,8 @@ static void maybeReportHybridDiscoveryIssue(PluginDiscoveryMode discoveryMode, P } else { String message = String.format( "One or more plugins are missing ServiceLoader manifests may not be usable with %s=%s: %s%n" + - "Read the documentation at %s for instructions on migrating your plugins " + - "to take advantage of the performance improvements of %s mode.", + "Read the documentation at %s for instructions on migrating your plugins " + + "to take advantage of the performance improvements of %s mode.", WorkerConfig.PLUGIN_DISCOVERY_CONFIG, PluginDiscoveryMode.SERVICE_LOAD, missingPlugins.stream() diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/InternalRequestSignature.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/InternalRequestSignature.java index 902187a83fc8a..7455a43e85eab 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/InternalRequestSignature.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/InternalRequestSignature.java @@ -56,7 +56,7 @@ public static void addToRequest(Crypto crypto, SecretKey key, byte[] requestBody Mac mac; try { mac = crypto.mac(signatureAlgorithm); - } catch (NoSuchAlgorithmException e) { + } catch (NoSuchAlgorithmException e) { throw new ConnectException(e); } byte[] requestSignature = sign(mac, key, requestBody); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServerConfig.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServerConfig.java index 212660a59c8bf..f8c0793e7d3bd 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServerConfig.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServerConfig.java @@ -49,9 +49,9 @@ public abstract class RestServerConfig extends AbstractConfig { public static final String LISTENERS_CONFIG = "listeners"; private static final String LISTENERS_DOC = "List of comma-separated URIs the REST API will listen on. The supported protocols are HTTP and HTTPS.\n" + - " Specify hostname as 0.0.0.0 to bind to all interfaces.\n" + - " Leave hostname empty to bind to default interface.\n" + - " Examples of legal listener lists: HTTP://myhost:8083,HTTPS://myhost:8084"; + " Specify hostname as 0.0.0.0 to bind to all interfaces.\n" + + " Leave hostname empty to bind to default interface.\n" + + " Examples of legal listener lists: HTTP://myhost:8083,HTTPS://myhost:8084"; // Visible for testing static final List LISTENERS_DEFAULT = List.of("http://:8083"); @@ -389,6 +389,7 @@ public InternalConfig(Map props) { private static class PublicConfig extends RestServerConfig { private final Integer rebalanceTimeoutMs; + private static ConfigDef config() { ConfigDef result = new ConfigDef().withClientSslSupport(); addPublicConfig(result); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/resources/ConnectorsResource.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/resources/ConnectorsResource.java index 148e96a4cee13..f07136139e978 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/resources/ConnectorsResource.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/resources/ConnectorsResource.java @@ -251,7 +251,7 @@ public Response patchConnectorConfig(final @PathParam("connector") String connec public Response restartConnector(final @PathParam("connector") String connector, final @Context HttpHeaders headers, final @DefaultValue("false") @QueryParam("includeTasks") @Parameter(description = "Whether to also restart tasks") Boolean includeTasks, - final @DefaultValue("false") @QueryParam("onlyFailed") @Parameter(description = "Whether to only restart failed tasks/connectors")Boolean onlyFailed, + final @DefaultValue("false") @QueryParam("onlyFailed") @Parameter(description = "Whether to only restart failed tasks/connectors") Boolean onlyFailed, final @Parameter(hidden = true) @QueryParam("forward") Boolean forward) throws Throwable { RestartRequest restartRequest = new RestartRequest(connector, onlyFailed, includeTasks); String forwardingPath = "/connectors/" + connector + "/restart"; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/util/SSLUtils.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/util/SSLUtils.java index 83a175e8d5fff..7b15777a3142e 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/util/SSLUtils.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/util/SSLUtils.java @@ -124,7 +124,7 @@ protected static void configureSslContextFactoryTrustStore(SslContextFactory ssl protected static void configureSslContextFactoryAlgorithms(SslContextFactory ssl, Map sslConfigValues) { List sslEnabledProtocols = (List) getOrDefault(sslConfigValues, SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, List.of(COMMA_WITH_WHITESPACE.split(SslConfigs.DEFAULT_SSL_ENABLED_PROTOCOLS))); - if (!sslEnabledProtocols.isEmpty()) + if (!sslEnabledProtocols.isEmpty()) ssl.setIncludeProtocols(sslEnabledProtocols.toArray(new String[0])); String sslProvider = (String) sslConfigValues.get(SslConfigs.SSL_PROVIDER_CONFIG); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/ClusterConfigState.java b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/ClusterConfigState.java index 5626fbc809db5..28a262be23f88 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/ClusterConfigState.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/ClusterConfigState.java @@ -172,7 +172,7 @@ public Map rawConnectorConfig(String connector) { * been generated */ public Map appliedConnectorConfig(String connector) { - AppliedConnectorConfig appliedConfig = appliedConnectorConfigs.get(connector); + AppliedConnectorConfig appliedConfig = appliedConnectorConfigs.get(connector); return appliedConfig != null ? appliedConfig.transformedConfig(configTransformer) : null; } diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java index 0e425301c1111..1443b939645d9 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java @@ -271,9 +271,11 @@ public static String RESTART_KEY(String connectorName) { .build(); public static final String LOGGER_CLUSTER_PREFIX = "logger-cluster-"; + public static String LOGGER_CLUSTER_KEY(String namespace) { return LOGGER_CLUSTER_PREFIX + namespace; } + public static final Schema LOGGER_LEVEL_V0 = SchemaBuilder.struct() .field("level", Schema.STRING_SCHEMA) .build(); @@ -595,7 +597,7 @@ public void putTaskConfigs(String connector, List> configs) // Send all the individual updates int index = 0; List keyValues = new ArrayList<>(); - for (Map taskConfig: configs) { + for (Map taskConfig : configs) { Struct connectConfig = new Struct(TASK_CONFIGURATION_V0); connectConfig.put("properties", taskConfig); byte[] serializedConfig = converter.fromConnectData(topic, TASK_CONFIGURATION_V0, connectConfig); @@ -1065,8 +1067,8 @@ private void processTasksCommitRecord(String connectorName, SchemaAndValue value processConnectorRemoval(connectorName); log.debug( "Ignoring task configs for connector {}; it appears that the connector was deleted previously " - + "and that log compaction has since removed any trace of its previous configurations " - + "from the config topic", + + "and that log compaction has since removed any trace of its previous configurations " + + "from the config topic", connectorName ); return; @@ -1173,7 +1175,7 @@ RestartRequest recordToRestartRequest(ConsumerRecord record, Sch private void processTaskCountRecord(String connectorName, SchemaAndValue value) { if (!(value.value() instanceof Map)) { - log.error("Ignoring task count record for connector '{}' because it is in the wrong format: {}", connectorName, className(value.value())); + log.error("Ignoring task count record for connector '{}' because it is in the wrong format: {}", connectorName, className(value.value())); return; } @SuppressWarnings("unchecked") diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/MemoryConfigBackingStore.java b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/MemoryConfigBackingStore.java index 254aaf89584a6..e82196a8b96be 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/storage/MemoryConfigBackingStore.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/storage/MemoryConfigBackingStore.java @@ -217,7 +217,7 @@ public void applyConfig() { private static Map> taskConfigListAsMap(String connector, List> configs) { int index = 0; Map> result = new TreeMap<>(); - for (Map taskConfigMap: configs) { + for (Map taskConfigMap : configs) { result.put(new ConnectorTaskId(connector, index++), taskConfigMap); } return result; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/tools/PredicateDoc.java b/connect/runtime/src/main/java/org/apache/kafka/connect/tools/PredicateDoc.java index e1415bed57531..8ea3e4f48a240 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/tools/PredicateDoc.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/tools/PredicateDoc.java @@ -31,7 +31,7 @@ private static final class DocInfo { final String overview; final ConfigDef configDef; - private

> DocInfo(Class

predicateClass, String overview, ConfigDef configDef) { + private

>DocInfo(Class

predicateClass, String overview, ConfigDef configDef) { this.predicateName = predicateClass.getName(); this.overview = overview; this.configDef = configDef; diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/tools/TransformationDoc.java b/connect/runtime/src/main/java/org/apache/kafka/connect/tools/TransformationDoc.java index e3e9ad063d2f7..db96342a0ad3c 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/tools/TransformationDoc.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/tools/TransformationDoc.java @@ -69,7 +69,7 @@ private static String toHtml() { b.append("\n"); b.append(docInfo.overview + "\n"); b.append("

\n"); - b.append(docInfo.configDef.toHtml(6, key -> docInfo.transformationName + "_" + key) + "\n"); + b.append(docInfo.configDef.toHtml(6, key -> docInfo.transformationName + "_" + key) + "\n"); b.append("\n"); } return b.toString(); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/util/ConvertingFutureCallback.java b/connect/runtime/src/main/java/org/apache/kafka/connect/util/ConvertingFutureCallback.java index 64a7a16f38552..ef21ca92e94c4 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/util/ConvertingFutureCallback.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/util/ConvertingFutureCallback.java @@ -59,7 +59,7 @@ public void onCompletion(Throwable error, U result) { if (isDone()) { return; } - + if (error != null) { this.exception = error; } else { diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/util/KafkaBasedLog.java b/connect/runtime/src/main/java/org/apache/kafka/connect/util/KafkaBasedLog.java index 5452ee9e1ee18..6465880b764c4 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/util/KafkaBasedLog.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/util/KafkaBasedLog.java @@ -539,6 +539,7 @@ private class WorkThread extends Thread { public WorkThread() { super("KafkaBasedLog Work Thread - " + topic); } + @Override public void run() { log.trace("{} started execution", this); diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/util/LoggingContext.java b/connect/runtime/src/main/java/org/apache/kafka/connect/util/LoggingContext.java index a83c515e73adf..42532b348cea7 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/util/LoggingContext.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/util/LoggingContext.java @@ -76,6 +76,7 @@ public enum Scope { VALIDATE("validate"); private final String text; + Scope(String value) { this.text = value; } diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/util/TopicAdmin.java b/connect/runtime/src/main/java/org/apache/kafka/connect/util/TopicAdmin.java index 67285c1c197cc..ca7371cc9ca85 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/util/TopicAdmin.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/util/TopicAdmin.java @@ -529,10 +529,10 @@ public boolean verifyTopicCleanupPolicyOnlyCompact(String topic, String workerTo Set cleanupPolicies = topicCleanupPolicy(topic); if (cleanupPolicies.isEmpty()) { log.info("Unable to use admin client to verify the cleanup policy of '{}' " - + "topic is '{}', either because the broker is an older " - + "version or because the Kafka principal used for Connect " - + "internal topics does not have the required permission to " - + "describe topic configurations.", topic, TopicConfig.CLEANUP_POLICY_COMPACT); + + "topic is '{}', either because the broker is an older " + + "version or because the Kafka principal used for Connect " + + "internal topics does not have the required permission to " + + "describe topic configurations.", topic, TopicConfig.CLEANUP_POLICY_COMPACT); return false; } Set expectedPolicies = Set.of(TopicConfig.CLEANUP_POLICY_COMPACT); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/BlockingConnectorTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/BlockingConnectorTest.java index 87608fa07df57..14768dba81f94 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/BlockingConnectorTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/BlockingConnectorTest.java @@ -396,7 +396,7 @@ public static ConfigDef config() { ConfigDef.Type.STRING, "", ConfigDef.Importance.MEDIUM, - "Where to block indefinitely, e.g., 'Connector::start', 'Connector::initialize', " + "Where to block indefinitely, e.g., 'Connector::start', 'Connector::initialize', " + "'Connector::taskConfigs', 'Task::version', 'SinkTask::put', 'SourceTask::poll'" ); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ConnectorValidationIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ConnectorValidationIntegrationTest.java index 703c4015609f7..a783843c0415c 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ConnectorValidationIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ConnectorValidationIntegrationTest.java @@ -548,6 +548,7 @@ public abstract static class AbstractTestConverter extends TestConverter { public static class TestConverterWithSinglePropertyConfigDef extends TestConverter { public static final String BOOLEAN_PROPERTY_NAME = "prop"; + @Override public ConfigDef config() { return new ConfigDef().define(BOOLEAN_PROPERTY_NAME, ConfigDef.Type.BOOLEAN, ConfigDef.Importance.HIGH, ""); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ErrorHandlingIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ErrorHandlingIntegrationTest.java index fd7f14d122d3f..ab861d86010d0 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ErrorHandlingIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ErrorHandlingIntegrationTest.java @@ -71,7 +71,7 @@ @Tag("integration") @Timeout(value = 600) public class ErrorHandlingIntegrationTest { - + private static final Logger log = LoggerFactory.getLogger(ErrorHandlingIntegrationTest.class); private static final String DLQ_TOPIC = "my-connector-errors"; private static final String CONNECTOR_NAME = "error-conn"; @@ -269,7 +269,7 @@ private boolean checkForPartitionAssignment() { ConnectorStateInfo info = connect.connectorStatus(CONNECTOR_NAME); return info != null && info.tasks().size() == NUM_TASKS && connectorHandle.taskHandle(TASK_ID).numPartitionsAssigned() == 1; - } catch (Exception e) { + } catch (Exception e) { // Log the exception and return that the partitions were not assigned log.error("Could not check connector state info.", e); return false; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ExactlyOnceSourceIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ExactlyOnceSourceIntegrationTest.java index 9c8df7b079e58..954215cd08308 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ExactlyOnceSourceIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/ExactlyOnceSourceIntegrationTest.java @@ -206,7 +206,7 @@ public void testPreflightValidation() { validation = connect.validateConnectorConfig(TestableSourceConnector.class.getSimpleName(), props); assertEquals(1, validation.errorCount(), "Preflight validation should have exactly one error"); propertyValidation = findConfigInfo(EXACTLY_ONCE_SUPPORT_CONFIG, validation); - assertFalse(propertyValidation.configValue().errors().isEmpty(), + assertFalse(propertyValidation.configValue().errors().isEmpty(), "Preflight validation for exactly-once support property should have at least one error message"); // Connector will throw an exception from SourceConnector::exactlyOnceSupport @@ -246,7 +246,7 @@ public void testPreflightValidation() { validation = connect.validateConnectorConfig(TestableSourceConnector.class.getSimpleName(), props); assertEquals(1, validation.errorCount(), "Preflight validation should have exactly one error"); propertyValidation = findConfigInfo(TRANSACTION_BOUNDARY_CONFIG, validation); - assertFalse(propertyValidation.configValue().errors().isEmpty(), + assertFalse(propertyValidation.configValue().errors().isEmpty(), "Preflight validation for transaction boundary property should have at least one error message"); // Connector will return SUPPORTED from SourceConnector::canDefineTransactionBoundaries diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkIntegrationTest.java index e9d74836e0101..dbd11d5671568 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkIntegrationTest.java @@ -157,7 +157,7 @@ private boolean checkForPartitionAssignment() { ConnectorStateInfo info = connect.connectorStatus(CONNECTOR_NAME); return info != null && info.tasks().size() == NUM_TASKS && connectorHandle.taskHandle(TASK_ID).numPartitionsAssigned() == 1; - } catch (Exception e) { + } catch (Exception e) { // Log the exception and return that the partitions were not assigned log.error("Could not check connector state info.", e); return false; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/OffsetsApiIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/OffsetsApiIntegrationTest.java index c9edd6093bdf4..4f707acdd52f6 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/OffsetsApiIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/OffsetsApiIntegrationTest.java @@ -940,7 +940,7 @@ private Map baseSourceConnectorConfigs() { private String modifySinkConnectorOffsetsWithRetry(ConnectorOffsets offsetsToAlter) throws InterruptedException { // Some retry logic is necessary to account for KAFKA-15826, // where laggy sink task startup/shutdown can leave consumers running - String modifyVerb = offsetsToAlter != null ? "alter" : "reset"; + String modifyVerb = offsetsToAlter != null ? "alter" : "reset"; String conditionDetails = "Failed to " + modifyVerb + " sink connector offsets in time"; AtomicReference responseReference = new AtomicReference<>(); waitForCondition( @@ -1012,7 +1012,7 @@ private void verifyExpectedSinkConnectorOffsets(String connectorName, String exp if (offsets.offsets().size() != expectedPartitions) { return false; } - for (ConnectorOffset offset: offsets.offsets()) { + for (ConnectorOffset offset : offsets.offsets()) { assertEquals(expectedTopic, offset.partition().get(SinkUtils.KAFKA_TOPIC_KEY)); if ((Integer) offset.offset().get(SinkUtils.KAFKA_OFFSET_KEY) != expectedOffset) { return false; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RebalanceSourceConnectorsIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RebalanceSourceConnectorsIntegrationTest.java index 513e064ddb682..93b9587fc50d1 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RebalanceSourceConnectorsIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RebalanceSourceConnectorsIntegrationTest.java @@ -71,7 +71,7 @@ public class RebalanceSourceConnectorsIntegrationTest { private static final String TOPIC_NAME = "sequential-topic"; private EmbeddedConnectCluster connect; - + @BeforeEach public void setup(TestInfo testInfo) { @@ -319,7 +319,7 @@ private boolean assertConnectorAndTasksAreUniqueAndBalanced() { .add(connector); info.tasks().forEach( t -> tasks.computeIfAbsent(t.workerId(), k -> new ArrayList<>()) - .add(connector + "-" + t.id())); + .add(connector + "-" + t.id())); } int maxConnectors = connectors.values().stream().mapToInt(Collection::size).max().orElse(0); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestExtensionIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestExtensionIntegrationTest.java index 0e0cfa6a1ce9c..c7d9f7971eed9 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestExtensionIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestExtensionIntegrationTest.java @@ -156,7 +156,7 @@ private boolean verifyConnectorHealthAndConfig( ) { ConnectClusterState clusterState = IntegrationTestRestExtension.instance.restPluginContext.clusterState(); - + ConnectorHealth actualHealth = clusterState.connectorHealth(connectorName); if (actualHealth.tasksState().isEmpty()) { // Happens if the task has been started but its status has not yet been picked up from @@ -187,15 +187,15 @@ public void register(ConnectRestExtensionContext restPluginContext) { // successfully registered restPluginContext.configurable().register(new IntegrationTestRestExtensionResource()); } - + @Override public void close() { } - + @Override public void configure(Map configs) { } - + @Override public String version() { return "test"; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestForwardingIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestForwardingIntegrationTest.java index 3831eb8f24685..cc6199be6ead3 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestForwardingIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/RestForwardingIntegrationTest.java @@ -106,7 +106,7 @@ public void setUp() throws IOException, GeneralSecurityException { @AfterEach public void tearDown() throws IOException { - for (CloseableHttpResponse response: responses) { + for (CloseableHttpResponse response : responses) { response.close(); } AtomicReference firstException = new AtomicReference<>(); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/SessionedProtocolIntegrationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/SessionedProtocolIntegrationTest.java index 27506aaaedb21..76fe75da91287 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/SessionedProtocolIntegrationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/SessionedProtocolIntegrationTest.java @@ -99,7 +99,7 @@ public void ensureInternalEndpointIsSecured() throws Throwable { // We haven't created the connector yet, but this should still return a 400 instead of a 404 // if the endpoint is secured log.info( - "Making a POST request to the {} endpoint with no connector started and no signature header; " + "Making a POST request to the {} endpoint with no connector started and no signature header; " + "expecting 400 error response", connectorTasksEndpoint ); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/StartAndStopCounterTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/StartAndStopCounterTest.java index a92df29863e37..7eb2134f93599 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/StartAndStopCounterTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/StartAndStopCounterTest.java @@ -92,6 +92,7 @@ public void shouldExpectRestarts() throws Exception { assertTrue(future.get(200, TimeUnit.MILLISECONDS)); assertTrue(future.isDone()); } + @Test public void shouldFailToWaitForRestartThatNeverHappens() throws Exception { waiters = Executors.newSingleThreadExecutor(); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTaskTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTaskTest.java index d5b15dde76f22..ffb3e01a02779 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTaskTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractWorkerSourceTaskTest.java @@ -559,13 +559,13 @@ public void testSendRecordsTopicCreateRetriesMidway() { workerTask.toSend = List.of(record1, record2, record3); workerTask.sendRecords(); assertEquals(List.of(record3), workerTask.toSend); - verifyTopicCreation(2, TOPIC, OTHER_TOPIC); // Second call to createOrFindTopics will throw + verifyTopicCreation(2, TOPIC, OTHER_TOPIC); // Second call to createOrFindTopics will throw // Next they all succeed workerTask.sendRecords(); assertNull(workerTask.toSend); - verifyTopicCreation(3, TOPIC, OTHER_TOPIC, OTHER_TOPIC); + verifyTopicCreation(3, TOPIC, OTHER_TOPIC, OTHER_TOPIC); } @Test @@ -853,6 +853,7 @@ private void expectTaskGetTopic() { private void verifyTaskGetTopic() { verifyTaskGetTopic(1); } + private void verifyTaskGetTopic(int times) { ArgumentCaptor connectorCapture = ArgumentCaptor.forClass(String.class); ArgumentCaptor topicCapture = ArgumentCaptor.forClass(String.class); @@ -870,6 +871,7 @@ private void expectTopicCreation(String topic) { private void verifyTopicCreation() { verifyTopicCreation(1, TOPIC); } + private void verifyTopicCreation(int times, String... topics) { ArgumentCaptor newTopicCapture = ArgumentCaptor.forClass(NewTopic.class); @@ -956,13 +958,13 @@ private void createWorkerTask() { private void createWorkerTask(Converter keyConverter, Converter valueConverter, HeaderConverter headerConverter, RetryWithToleranceOperator retryWithToleranceOperator, Supplier>> errorReportersSupplier, TransformationChain transformationChain) { - Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerTask = new AbstractWorkerSourceTask( taskId, sourceTask, statusListener, TargetState.STARTED, configState, keyConverterPlugin, valueConverterPlugin, headerConverterPlugin, transformationChain, workerTransactionContext, producer, admin, TopicCreationGroup.configuredGroups(sourceConfig), offsetReader, offsetWriter, offsetStore, - config, metrics, errorHandlingMetrics, plugins.delegatingLoader(), Time.SYSTEM, retryWithToleranceOperator, + config, metrics, errorHandlingMetrics, plugins.delegatingLoader(), Time.SYSTEM, retryWithToleranceOperator, statusBackingStore, Runnable::run, errorReportersSupplier, null, TestPlugins.noOpLoaderSwap()) { @Override protected void prepareToInitializeTask() { diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectorConfigTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectorConfigTest.java index 6e71e37d82c77..cecf9971f2780 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectorConfigTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectorConfigTest.java @@ -60,7 +60,7 @@ public Set>> transformations() { public abstract static class TestConnector extends Connector { } - public static class SimpleTransformation> implements Transformation { + public static class SimpleTransformation> implements Transformation { int magicNumber = 0; @@ -208,6 +208,7 @@ public void abstractTransform() { ex.getMessage().contains("This class is abstract and cannot be created.") ); } + @Test public void abstractKeyValueTransform() { Map props = new HashMap<>(); @@ -370,7 +371,7 @@ public void negatedButNoPredicate() { assertTrue(e.getMessage().contains("there is no config 'transforms.a.predicate' defining a predicate to be negated")); } - public static class TestPredicate> implements Predicate { + public static class TestPredicate> implements Predicate { int param; @@ -409,7 +410,7 @@ public AbstractTestPredicate() { } } - public abstract static class AbstractTransformation> implements Transformation { + public abstract static class AbstractTransformation> implements Transformation { @Override public String version() { @@ -418,7 +419,7 @@ public String version() { } - public abstract static class AbstractKeyValueTransformation> implements Transformation { + public abstract static class AbstractKeyValueTransformation> implements Transformation { @Override public R apply(R record) { return null; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ErrorHandlingTaskTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ErrorHandlingTaskTest.java index a9e5f289732e5..5e7d76b38a614 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ErrorHandlingTaskTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ErrorHandlingTaskTest.java @@ -427,8 +427,8 @@ private void createSinkTask(TargetState initialState, RetryWithToleranceOperator TransformationChain, SinkRecord> sinkTransforms = new TransformationChain<>(List.of(new TransformationStage<>(transformationPlugin, "test", null, TestPlugins.noOpLoaderSwap())), retryWithToleranceOperator); - Plugin keyConverterPlugin = metrics.wrap(converter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(converter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(converter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(converter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerSinkTask = new WorkerSinkTask( taskId, sinkTask, statusListener, initialState, workerConfig, @@ -463,8 +463,8 @@ private void createSourceTask(TargetState initialState, RetryWithToleranceOperat TransformationChain sourceTransforms = new TransformationChain<>(List.of( new TransformationStage<>(transformationPlugin, "test", null, TestPlugins.noOpLoaderSwap())), retryWithToleranceOperator); - Plugin keyConverterPlugin = metrics.wrap(converter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(converter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(converter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(converter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerSourceTask = spy(new WorkerSourceTask( taskId, sourceTask, statusListener, initialState, keyConverterPlugin, diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ExactlyOnceWorkerSourceTaskTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ExactlyOnceWorkerSourceTaskTest.java index 4067f5aa59d72..1584f91ac173f 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ExactlyOnceWorkerSourceTaskTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ExactlyOnceWorkerSourceTaskTest.java @@ -277,8 +277,8 @@ private void createWorkerTask(TargetState initialState) { } private void createWorkerTask(TargetState initialState, Converter keyConverter, Converter valueConverter, HeaderConverter headerConverter) { - Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerTask = new ExactlyOnceWorkerSourceTask(taskId, sourceTask, statusListener, initialState, keyConverterPlugin, valueConverterPlugin, headerConverterPlugin, transformationChain, producer, admin, TopicCreationGroup.configuredGroups(sourceConfig), offsetReader, offsetWriter, offsetStore, diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/LoggersTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/LoggersTest.java index f2b034c08d391..19a7aa901465e 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/LoggersTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/LoggersTest.java @@ -49,7 +49,7 @@ public void setup() { time = new MockTime(0, INITIAL_TIME, 0); loggers = (Loggers.Log4jLoggers) Loggers.newInstance(time); } - + @AfterEach public void tearDown() { // Reset LoggerContext to its initial configuration. diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConnectorTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConnectorTest.java index 1fa16713f150c..6528393e6e1b6 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConnectorTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConnectorTest.java @@ -103,7 +103,7 @@ private void setConnector(ConnectorType connectorType) { throw new IllegalStateException("Unexpected connector type: " + connectorType); } } - + public void setup(ConnectorType connectorType) { setConnector(connectorType); connectorConfig = new ConnectorConfig(plugins, CONFIG); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerMetricsGroupTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerMetricsGroupTest.java index 9077c7fa58723..1fd53a3aae779 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerMetricsGroupTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerMetricsGroupTest.java @@ -46,7 +46,7 @@ public class WorkerMetricsGroupTest { private final RuntimeException exception = new RuntimeException(); @Mock private ConnectMetrics connectMetrics; - + private Sensor connectorStartupResults; private Sensor connectorStartupAttempts; private Sensor connectorStartupSuccesses; @@ -89,7 +89,7 @@ private Sensor mockSensor(ConnectMetrics.MetricGroup metricGroup, String name) { when(metricGroup.sensor(name)).thenReturn(sensor); return sensor; } - + @Test public void testConnectorStartupRecordedMetrics() { WorkerMetricsGroup workerMetricsGroup = new WorkerMetricsGroup(new HashMap<>(), new HashMap<>(), connectMetrics); @@ -120,7 +120,7 @@ public void testConnectorFailureAfterStartupRecordedMetrics() { public void testConnectorFailureBeforeStartupRecordedMetrics() { WorkerMetricsGroup workerMetricsGroup = new WorkerMetricsGroup(new HashMap<>(), new HashMap<>(), connectMetrics); final ConnectorStatus.Listener connectorListener = workerMetricsGroup.wrapStatusListener(delegateConnectorListener); - + connectorListener.onFailure(connector, exception); verify(delegateConnectorListener).onFailure(connector, exception); @@ -137,7 +137,7 @@ public void testTaskStartupRecordedMetrics() { verify(delegateTaskListener).onStartup(task); verifyRecordTaskSuccess(); } - + @Test public void testTaskFailureAfterStartupRecordedMetrics() { WorkerMetricsGroup workerMetricsGroup = new WorkerMetricsGroup(new HashMap<>(), new HashMap<>(), connectMetrics); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskTest.java index 4815b79019c26..993346b82896c 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskTest.java @@ -1411,7 +1411,7 @@ public void testCommitWithOutOfOrderCallback() { doAnswer(invocation -> { final Map offsets = invocation.getArgument(0); - final OffsetCommitCallback callback = invocation.getArgument(1); + final OffsetCommitCallback callback = invocation.getArgument(1); asyncCallbackRunner.set(() -> { callback.onComplete(offsets, null); asyncCallbackRan.set(true); @@ -1942,7 +1942,7 @@ private Answer> expectConsumerPoll(final int num return expectConsumerPoll(numMessages, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, new RecordHeaders()); } - private Answer> expectConsumerPoll(final int numMessages, Headers headers) { + private Answer> expectConsumerPoll(final int numMessages, Headers headers) { return expectConsumerPoll(numMessages, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, headers); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskThreadedTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskThreadedTest.java index 729b5f0436c2b..8cd44a5d713c5 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskThreadedTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSinkTaskThreadedTest.java @@ -173,8 +173,8 @@ public void setup() { workerProps.put("offset.storage.file.filename", "/tmp/connect.offsets"); workerProps.put(WorkerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); WorkerConfig workerConfig = new StandaloneConfig(workerProps); - Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerTask = new WorkerSinkTask( taskId, sinkTask, statusListener, initialState, workerConfig, ClusterConfigState.EMPTY, metrics, keyConverterPlugin, diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSourceTaskTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSourceTaskTest.java index 4fca3f8ac6153..a0fb55a41e61b 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSourceTaskTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerSourceTaskTest.java @@ -248,8 +248,8 @@ private void createWorkerTask(TargetState initialState, RetryWithToleranceOperat private void createWorkerTask(TargetState initialState, Converter keyConverter, Converter valueConverter, HeaderConverter headerConverter, RetryWithToleranceOperator retryWithToleranceOperator) { - Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); - Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); + Plugin keyConverterPlugin = metrics.wrap(keyConverter, taskId, true); + Plugin valueConverterPlugin = metrics.wrap(valueConverter, taskId, false); Plugin headerConverterPlugin = metrics.wrap(headerConverter, taskId); workerTask = new WorkerSourceTask(taskId, sourceTask, statusListener, initialState, keyConverterPlugin, valueConverterPlugin, errorHandlingMetrics, headerConverterPlugin, transformationChain, producer, admin, TopicCreationGroup.configuredGroups(sourceConfig), diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTest.java index 208c71548759f..2c2806866cc93 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTest.java @@ -378,7 +378,7 @@ private void mockFileConfigProvider() { when(plugins.newConfigProvider(any(AbstractConfig.class), eq("config.providers.file"), any(ClassLoaderUsage.class))) - .thenReturn(mockFileConfigProvider); + .thenReturn(mockFileConfigProvider); } @ParameterizedTest @@ -765,7 +765,7 @@ public void testAddRemoveExactlyOnceSourceTask(boolean enableTopicCreation) { Set.of() ); - assertTrue(worker.startExactlyOnceSourceTask(TASK_ID, configState, connectorConfigs, origProps, taskStatusListener, TargetState.STARTED, preProducer, postProducer)); + assertTrue(worker.startExactlyOnceSourceTask(TASK_ID, configState, connectorConfigs, origProps, taskStatusListener, TargetState.STARTED, preProducer, postProducer)); assertStatistics(worker, 0, 1); assertEquals(Set.of(TASK_ID), worker.taskIds()); worker.stopAndAwaitTask(TASK_ID); @@ -2992,10 +2992,10 @@ private void mockInternalConverters() { jsonConverter.configure(Map.of(SCHEMAS_ENABLE_CONFIG, false), false); when(plugins.newInternalConverter(eq(true), anyString(), anyMap())) - .thenReturn(jsonConverter); + .thenReturn(jsonConverter); when(plugins.newInternalConverter(eq(false), anyString(), anyMap())) - .thenReturn(jsonConverter); + .thenReturn(jsonConverter); } private void verifyConverters() { @@ -3005,7 +3005,7 @@ private void verifyConverters() { private void mockTaskConverter(ClassLoaderUsage classLoaderUsage, String converterClassConfig, Converter returning) { when(plugins.newConverter(any(AbstractConfig.class), eq(converterClassConfig), eq(classLoaderUsage))) - .thenReturn(returning); + .thenReturn(returning); } private void mockVersionedTaskConverterFromConnector(String converterClassConfig, String converterVersionConfig, Converter returning) { @@ -3026,7 +3026,7 @@ private void verifyVersionedTaskConverterFromWorker(String converterClassConfig, private void mockTaskHeaderConverter(ClassLoaderUsage classLoaderUsage, HeaderConverter returning) { when(plugins.newHeaderConverter(any(AbstractConfig.class), eq(WorkerConfig.HEADER_CONVERTER_CLASS_CONFIG), eq(classLoaderUsage))) - .thenReturn(returning); + .thenReturn(returning); } private void verifyTaskHeaderConverter() { @@ -3035,7 +3035,7 @@ private void verifyTaskHeaderConverter() { private void mockVersionedTaskHeaderConverterFromConnector(HeaderConverter returning) { when(plugins.newHeaderConverter(any(ConnectorConfig.class), eq(ConnectorConfig.HEADER_CONVERTER_CLASS_CONFIG), eq(ConnectorConfig.HEADER_CONVERTER_VERSION_CONFIG))) - .thenReturn(returning); + .thenReturn(returning); } private void verifyVersionedTaskHeaderConverterFromConnector() { diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTestUtils.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTestUtils.java index 0546e3bb4e950..5af3617a853e5 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTestUtils.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerTestUtils.java @@ -174,7 +174,7 @@ public static > TransformationChain getTrans List results) { Transformation transformation = mock(Transformation.class); OngoingStubbing stub = when(transformation.apply(any())); - for (Object result: results) { + for (Object result : results) { if (result instanceof Exception) { stub = stub.thenThrow((Exception) result); } else { diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/DistributedHerderTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/DistributedHerderTest.java index 820de522f1293..4c0374042e776 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/DistributedHerderTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/DistributedHerderTest.java @@ -1289,7 +1289,7 @@ public void testRestartConnectorAndTasksSuccess() throws Exception { FutureCallback callback = new FutureCallback<>(); herder.restartConnectorAndTasks(restartRequest, callback); herder.tick(); - assertEquals(connectorStateInfo, callback.get(1000L, TimeUnit.MILLISECONDS)); + assertEquals(connectorStateInfo, callback.get(1000L, TimeUnit.MILLISECONDS)); verifyNoMoreInteractions(restartPlan, worker, member, configBackingStore, statusBackingStore); } @@ -1340,7 +1340,7 @@ public void testDoRestartConnectorAndTasksOnlyConnector() { ConnectorStatus status = new ConnectorStatus(CONN1, AbstractStatus.State.RESTARTING, WORKER_ID, 0); doNothing().when(statusBackingStore).put(eq(status)); - ArgumentCaptor> stateCallback = ArgumentCaptor.forClass(Callback.class); + ArgumentCaptor> stateCallback = ArgumentCaptor.forClass(Callback.class); doAnswer(invocation -> { stateCallback.getValue().onCompletion(null, TargetState.STARTED); return true; @@ -1406,7 +1406,7 @@ public void testDoRestartConnectorAndTasksBoth() { ConnectorStatus status = new ConnectorStatus(CONN1, AbstractStatus.State.RESTARTING, WORKER_ID, 0); doNothing().when(statusBackingStore).put(eq(status)); - ArgumentCaptor> stateCallback = ArgumentCaptor.forClass(Callback.class); + ArgumentCaptor> stateCallback = ArgumentCaptor.forClass(Callback.class); doAnswer(invocation -> { stateCallback.getValue().onCompletion(null, TargetState.STARTED); return true; @@ -2579,7 +2579,7 @@ public void testKeyRotationWhenWorkerBecomesLeader() { expectRebalance(2, List.of(), List.of()); SessionKey initialKey = new SessionKey(mock(SecretKey.class), 0); - ClusterConfigState snapshotWithKey = new ClusterConfigState( + ClusterConfigState snapshotWithKey = new ClusterConfigState( 2, initialKey, Map.of(CONN1, 3), @@ -2626,7 +2626,7 @@ public void testKeyRotationDisabledWhenWorkerBecomesFollower() { when(initialSecretKey.getAlgorithm()).thenReturn(DistributedConfig.INTER_WORKER_KEY_GENERATION_ALGORITHM_DEFAULT); when(initialSecretKey.getEncoded()).thenReturn(new byte[32]); SessionKey initialKey = new SessionKey(initialSecretKey, time.milliseconds()); - ClusterConfigState snapshotWithKey = new ClusterConfigState( + ClusterConfigState snapshotWithKey = new ClusterConfigState( 1, initialKey, Map.of(CONN1, 3), @@ -4153,6 +4153,7 @@ private void expectRebalance(final Collection revokedConnectors, final List assignedTasks) { expectRebalance(revokedConnectors, revokedTasks, error, offset, assignedConnectors, assignedTasks, 0); } + // Handles common initial part of rebalance callback. Does not handle instantiation of connectors and tasks. private void expectRebalance(final Collection revokedConnectors, final List revokedTasks, diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignorTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignorTest.java index 84bb8b145ad0a..c3cd105a6685d 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignorTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/distributed/IncrementalCooperativeAssignorTest.java @@ -130,7 +130,7 @@ public void testTaskAssignmentWhenWorkerJoins() { } @Test - public void testAssignmentsWhenWorkersJoinAfterRevocations() { + public void testAssignmentsWhenWorkersJoinAfterRevocations() { // Customize assignor for this test case time = new MockTime(); initAssignor(); @@ -199,7 +199,7 @@ public void testAssignmentsWhenWorkersJoinAfterRevocations() { } @Test - public void testImmediateRevocationsWhenMaxDelayIs0() { + public void testImmediateRevocationsWhenMaxDelayIs0() { // Customize assignor for this test case rebalanceDelay = 0; time = new MockTime(); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/ErrorReporterTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/ErrorReporterTest.java index ce0188ecf8aa0..7f31bd6c592b4 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/ErrorReporterTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/ErrorReporterTest.java @@ -309,7 +309,7 @@ public void testDlqHeaderIsAppended() { deadLetterQueueReporter.populateContextHeaders(producerRecord, context); int appearances = 0; - for (Header header: producerRecord.headers()) { + for (Header header : producerRecord.headers()) { if (ERROR_HEADER_ORIG_TOPIC.equalsIgnoreCase(header.key())) { appearances++; } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/RetryWithToleranceOperatorTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/RetryWithToleranceOperatorTest.java index f9e47afd0b31f..bda0aa5bcbb5d 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/RetryWithToleranceOperatorTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/errors/RetryWithToleranceOperatorTest.java @@ -83,15 +83,15 @@ public class RetryWithToleranceOperatorTest { private static final Map PROPERTIES = new HashMap<>() {{ - put(CommonClientConfigs.METRICS_NUM_SAMPLES_CONFIG, Objects.toString(2)); - put(CommonClientConfigs.METRICS_SAMPLE_WINDOW_MS_CONFIG, Objects.toString(3000)); - put(CommonClientConfigs.METRICS_RECORDING_LEVEL_CONFIG, Sensor.RecordingLevel.INFO.toString()); - - // define required properties - put(WorkerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); - put(WorkerConfig.KEY_CONVERTER_CLASS_CONFIG, TestConverter.class.getName()); - put(WorkerConfig.VALUE_CONVERTER_CLASS_CONFIG, TestConverter.class.getName()); - }}; + put(CommonClientConfigs.METRICS_NUM_SAMPLES_CONFIG, Objects.toString(2)); + put(CommonClientConfigs.METRICS_SAMPLE_WINDOW_MS_CONFIG, Objects.toString(3000)); + put(CommonClientConfigs.METRICS_RECORDING_LEVEL_CONFIG, Sensor.RecordingLevel.INFO.toString()); + + // define required properties + put(WorkerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); + put(WorkerConfig.KEY_CONVERTER_CLASS_CONFIG, TestConverter.class.getName()); + put(WorkerConfig.VALUE_CONVERTER_CLASS_CONFIG, TestConverter.class.getName()); + }}; public static RetryWithToleranceOperator noneOperator() { return genericOperator(ERRORS_RETRY_TIMEOUT_DEFAULT, NONE, new ErrorHandlingMetrics( diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImplTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImplTest.java index 65e5b15128d93..11c232239d5c2 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImplTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImplTest.java @@ -51,7 +51,7 @@ public class ConnectClusterStateImplTest { protected ConnectClusterStateImpl connectClusterState; protected long herderRequestTimeoutMs = TimeUnit.SECONDS.toMillis(10); protected Collection expectedConnectors; - + @BeforeEach public void setUp() { expectedConnectors = List.of("sink1", "source1", "source2"); @@ -61,7 +61,7 @@ public void setUp() { herder ); } - + @Test public void connectors() { @SuppressWarnings("unchecked") diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/MultiVersionTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/MultiVersionTest.java index ae1b6f429e1ce..70f8626b5229f 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/MultiVersionTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/MultiVersionTest.java @@ -91,7 +91,7 @@ private static Map> buildIsolatedAr ) throws IOException { Map> artifacts = new HashMap<>(); for (String v : versions) { - for (VersionedPluginBuilder.VersionedTestPlugin pluginType: pluginTypes) { + for (VersionedPluginBuilder.VersionedTestPlugin pluginType : pluginTypes) { VersionedPluginBuilder builder = new VersionedPluginBuilder(); builder.include(pluginType, v); artifacts.put(builder.build(pluginType + "-" + v), builder.buildInfos()); @@ -218,7 +218,7 @@ public void testCorrectVersionRange() throws IOException, InvalidVersionSpecific requiredVersions.put(PluginUtils.connectorVersionRequirement("[1.1.0,1.1.3)"), "1.1.2"); for (Map.Entry entry : requiredVersions.entrySet()) { - for (VersionedPluginBuilder.VersionedTestPlugin pluginType: VersionedPluginBuilder.VersionedTestPlugin.values()) { + for (VersionedPluginBuilder.VersionedTestPlugin pluginType : VersionedPluginBuilder.VersionedTestPlugin.values()) { Object p = plugins.newPlugin(pluginType.className(), entry.getKey()); Assertions.assertInstanceOf(ConnectPlugin.class, p); Assertions.assertEquals(entry.getValue(), ((ConnectPlugin) p).version(), @@ -248,7 +248,7 @@ public void testInvalidVersionRange() throws IOException, InvalidVersionSpecific invalidVersions.add(PluginUtils.connectorVersionRequirement("(1.1.0, 1.1.2),[1.1.3, 2.0.0)")); for (VersionRange versionRange : invalidVersions) { - for (VersionedPluginBuilder.VersionedTestPlugin pluginType: VersionedPluginBuilder.VersionedTestPlugin.values()) { + for (VersionedPluginBuilder.VersionedTestPlugin pluginType : VersionedPluginBuilder.VersionedTestPlugin.values()) { VersionedPluginLoadingException e = Assertions.assertThrows(VersionedPluginLoadingException.class, () -> { plugins.newPlugin(pluginType.className(), versionRange); }, String.format("Provided Version Range %s for class %s should throw VersionedPluginLoadingException", versionRange, pluginType.className())); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/TestPlugins.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/TestPlugins.java index 5a86ddd7b5f35..a04717e2290b2 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/TestPlugins.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/TestPlugins.java @@ -513,7 +513,7 @@ private static void writeJar(JarOutputStream jar, Path inputDir, Predicate configMap = baseServerProps(); configMap.put("offset.storage.file.filename", "/tmp"); @@ -373,7 +373,7 @@ public void testRequestLogs() throws IOException { } @Test - public void testValidCustomizedHttpResponseHeaders() throws IOException { + public void testValidCustomizedHttpResponseHeaders() throws IOException { String headerConfig = "add X-XSS-Protection: 1; mode=block, \"add Cache-Control: no-cache, no-store, must-revalidate\""; Map expectedHeaders = new HashMap<>(); @@ -383,7 +383,7 @@ public void testValidCustomizedHttpResponseHeaders() throws IOException { } @Test - public void testDefaultCustomizedHttpResponseHeaders() throws IOException { + public void testDefaultCustomizedHttpResponseHeaders() throws IOException { String headerConfig = ""; Map expectedHeaders = new HashMap<>(); checkCustomizedHttpResponseHeaders(headerConfig, expectedHeaders); @@ -428,7 +428,7 @@ public void testMonitorableConnectRestExtension() { } private void checkCustomizedHttpResponseHeaders(String headerConfig, Map expectedHeaders) - throws IOException { + throws IOException { Map configMap = baseServerProps(); configMap.put("offset.storage.file.filename", "/tmp"); configMap.put(RestServerConfig.RESPONSE_HTTP_HEADERS_CONFIG, headerConfig); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/standalone/StandaloneHerderTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/standalone/StandaloneHerderTest.java index 1333169204795..0f8d6c7505b36 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/standalone/StandaloneHerderTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/standalone/StandaloneHerderTest.java @@ -901,8 +901,8 @@ public void testCorruptConfig() { assertInstanceOf(BadRequestException.class, cause); assertEquals( "Connector configuration is invalid and contains the following 1 error(s):\n" + - error + "\n" + - "You can also find the above list of errors at the endpoint `/connector-plugins/{connectorType}/config/validate`", + error + "\n" + + "You can also find the above list of errors at the endpoint `/connector-plugins/{connectorType}/config/validate`", cause.getMessage() ); verify(loaderSwap).close(); @@ -1107,6 +1107,7 @@ public void testRequestTaskReconfigurationDoesNotDeadlock() throws Exception { private void expectAdd(SourceSink sourceSink) { expectAdd(sourceSink, true); } + private void expectAdd(SourceSink sourceSink, boolean mockStartConnector) { expectAdd(sourceSink, mockStartConnector, true, true); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/ConnectorOffsetBackingStoreTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/ConnectorOffsetBackingStoreTest.java index b12658c35e399..b584319bf8014 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/ConnectorOffsetBackingStoreTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/ConnectorOffsetBackingStoreTest.java @@ -417,7 +417,7 @@ private void assertFlushSuccess(AtomicBoolean callbackInvoked, AtomicReference producer) { - KafkaOffsetBackingStore offsetBackingStore = new KafkaOffsetBackingStore(() -> mock(TopicAdmin.class), () -> "connect", mock(Converter.class)); + KafkaOffsetBackingStore offsetBackingStore = new KafkaOffsetBackingStore(() -> mock(TopicAdmin.class), () -> "connect", mock(Converter.class)); KafkaBasedLog kafkaBasedLog = new KafkaBasedLog( topic, new HashMap<>(), new HashMap<>(), () -> mock(TopicAdmin.class), mock(Callback.class), new MockTime(), null) { @@ -451,7 +451,7 @@ private MockProducer createMockProducer() { private Map getSerialisedOffsets(Map offsets) { Map serialisedOffsets = new HashMap<>(); - for (Map.Entry offsetEntry: offsets.entrySet()) { + for (Map.Entry offsetEntry : offsets.entrySet()) { serialisedOffsets.put(ByteBuffer.wrap(offsetEntry.getKey()), offsetEntry.getValue() == null ? null : ByteBuffer.wrap(offsetEntry.getValue())); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaConfigBackingStoreTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaConfigBackingStoreTest.java index 98eaab7df4f10..dc2bb1333f5b8 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaConfigBackingStoreTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaConfigBackingStoreTest.java @@ -310,9 +310,9 @@ public void testPutConnectorConfig() throws Exception { .doAnswer(expectReadToEnd(Map.of(CONNECTOR_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(1)))) // Config deletion .doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(configKey, null); - put(targetStateKey, null); - }}) + put(configKey, null); + put(targetStateKey, null); + }}) ).when(configLog).readToEnd(); // Writing should block until it is written and read back from Kafka @@ -376,9 +376,9 @@ public void testPutConnectorConfigWithTargetState() { assertNull(configState.targetState(CONNECTOR_IDS.get(0))); doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(TARGET_STATE_KEYS.get(0), TARGET_STATES_SERIALIZED.get(2)); - put(CONNECTOR_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); - }}) + put(TARGET_STATE_KEYS.get(0), TARGET_STATES_SERIALIZED.get(2)); + put(CONNECTOR_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); + }}) ).when(configLog).readToEnd(); // We expect to write the target state first, followed by the config write and then a read to end @@ -762,7 +762,7 @@ public void testRestoreConnectorDeletion() { } @Test - public void testRestoreZeroTasks() { + public void testRestoreZeroTasks() { // Restoring data should notify only of the latest values after loading is complete. This also validates // that inconsistent state is ignored. @@ -1458,8 +1458,8 @@ public void testTaskCountRecordsAndGenerations() { .doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(serializedConfigs)) .doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(CONNECTOR_TASK_COUNT_RECORD_KEYS.get(0), CONFIGS_SERIALIZED.get(3)); - }}) + put(CONNECTOR_TASK_COUNT_RECORD_KEYS.get(0), CONFIGS_SERIALIZED.get(3)); + }}) ) .when(configLog).readToEnd(); @@ -1525,10 +1525,10 @@ public void testPutTaskConfigs() { doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(TASK_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); - put(TASK_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(1)); - put(COMMIT_TASKS_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(2)); - }}) + put(TASK_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); + put(TASK_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(1)); + put(COMMIT_TASKS_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(2)); + }}) ) .when(configLog).readToEnd(); @@ -1583,17 +1583,17 @@ public void testPutTaskConfigsStartsOnlyReconfiguredTasks() { doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(TASK_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); - put(TASK_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(1)); - put(COMMIT_TASKS_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(2)); - }}) + put(TASK_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(0)); + put(TASK_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(1)); + put(COMMIT_TASKS_CONFIG_KEYS.get(0), CONFIGS_SERIALIZED.get(2)); + }}) ) .doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>())) .doAnswer(expectReadToEnd(new LinkedHashMap<>() {{ - put(TASK_CONFIG_KEYS.get(2), CONFIGS_SERIALIZED.get(3)); - put(COMMIT_TASKS_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(4)); - }}) + put(TASK_CONFIG_KEYS.get(2), CONFIGS_SERIALIZED.get(3)); + put(COMMIT_TASKS_CONFIG_KEYS.get(1), CONFIGS_SERIALIZED.get(4)); + }}) ) .when(configLog).readToEnd(); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaStatusBackingStoreTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaStatusBackingStoreTest.java index 108dbbc45c3f1..51cfabcc95386 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaStatusBackingStoreTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/storage/KafkaStatusBackingStoreTest.java @@ -127,7 +127,7 @@ public void putConnectorStateRetriableFailure() { ((Callback) invocation.getArgument(2)).onCompletion(null, null); return null; }) - .when(kafkaBasedLog).send(eq("status-connector-conn"), eq(value), any(Callback.class)); + .when(kafkaBasedLog).send(eq("status-connector-conn"), eq(value), any(Callback.class)); ConnectorStatus status = new ConnectorStatus(CONNECTOR, ConnectorStatus.State.RUNNING, WORKER_ID, 0); store.put(status); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/ConvertingFutureCallbackTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/ConvertingFutureCallbackTest.java index 5281ecc1e7cc3..8e44747602fff 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/ConvertingFutureCallbackTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/ConvertingFutureCallbackTest.java @@ -43,7 +43,7 @@ public class ConvertingFutureCallbackTest { public void setup() { executor = Executors.newSingleThreadExecutor(); } - + @Test public void shouldConvertBeforeGetOnSuccessfulCompletion() throws Exception { final Object expectedConversion = new Object(); @@ -95,7 +95,7 @@ public void shouldRecordOnlyFirstErrorBeforeGetOnFailedCompletion() throws Excep assertEquals(expectedError, e.getCause()); } } - + @Test public void shouldCancelBeforeGetIfMayCancelWhileRunning() { TestConvertingFutureCallback testCallback = new TestConvertingFutureCallback(); @@ -190,12 +190,12 @@ public void shouldNotCancelIfMayNotCancelWhileRunning() throws Exception { assertEquals(1, testCallback.numberOfConversions()); if (testThreadException.get() != null) assertThrows(CancellationException.class, testThreadException::get); } - + protected static class TestConvertingFutureCallback extends ConvertingFutureCallback { private final AtomicInteger numberOfConversions = new AtomicInteger(); private final CountDownLatch getInvoked = new CountDownLatch(1); private final CountDownLatch cancelInvoked = new CountDownLatch(1); - + public int numberOfConversions() { return numberOfConversions.get(); } @@ -207,7 +207,7 @@ public void waitForGet() throws InterruptedException { public void waitForCancel() throws InterruptedException { cancelInvoked.await(); } - + @Override public Object convert(Object result) { numberOfConversions.incrementAndGet(); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/TopicAdminTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/TopicAdminTest.java index b40683865b454..05a1d5d6720bc 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/TopicAdminTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/TopicAdminTest.java @@ -100,7 +100,7 @@ public void returnEmptyWithApiVersionMismatchOnCreate() { assertTrue(admin.createOrFindTopics(newTopic).isEmpty()); } } - + @Test public void returnEmptyWithClusterAuthorizationFailureOnCreate() { final NewTopic newTopic = TopicAdmin.defineTopic("myTopic").partitions(1).compacted().build(); @@ -731,7 +731,7 @@ private MetadataResponse prepareMetadataResponse(Cluster cluster, Errors topicEr for (String topic : cluster.topics()) { List pms = new ArrayList<>(); for (PartitionInfo pInfo : cluster.availablePartitionsForTopic(topic)) { - MetadataResponseData.MetadataResponsePartition pm = new MetadataResponseData.MetadataResponsePartition() + MetadataResponseData.MetadataResponsePartition pm = new MetadataResponseData.MetadataResponsePartition() .setErrorCode(partitionError.code()) .setPartitionIndex(pInfo.partition()) .setLeaderId(pInfo.leader().id()) diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/ConnectAssertions.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/ConnectAssertions.java index 9b8156a4ce2ed..657edb580c648 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/ConnectAssertions.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/ConnectAssertions.java @@ -211,8 +211,8 @@ public void assertTopicSettings(String topicName, int replicas, int partitions, ).orElse(false), VALIDATION_DURATION_MS, "Topic " + topicName + " does not exist or does not have exactly " - + partitions + " partitions or at least " - + replicas + " per partition"); + + partitions + " partitions or at least " + + replicas + " per partition"); } catch (AssertionError e) { throw new AssertionError(detailMessage, e); } @@ -562,7 +562,7 @@ protected void waitForConnectorState( if (lastInfo.get() != null) { return result + " When last checked, " + stateSummary(lastInfo.get()); } else if (lastInfoError.get() != null) { - result += " The last attempt to check the connector state failed: " + lastInfoError.get().getClass(); + result += " The last attempt to check the connector state failed: " + lastInfoError.get().getClass(); String exceptionMessage = lastInfoError.get().getMessage(); if (exceptionMessage != null) { result += ": " + exceptionMessage; diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java index 8784516c66e34..8daf560ea8114 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java @@ -507,6 +507,7 @@ public ConnectorStateInfo restartConnectorAndTasks(String connName, boolean only throw new ConnectException("Could not parse connector state", e); } } + /** * Get the connector names of the connectors currently running on this cluster. * diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java index 7913d60fc2837..feeae56ee3044 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java @@ -474,7 +474,7 @@ public ConsumerRecords consume(int n, long maxDuration, Map> r = rec.records(partition); records.computeIfAbsent(partition, t -> new ArrayList<>()).addAll(r); final ConsumerRecord lastRecord = r.get(r.size() - 1); diff --git a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/DropHeaders.java b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/DropHeaders.java index 13f005f9115a0..651fe96dae8bf 100644 --- a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/DropHeaders.java +++ b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/DropHeaders.java @@ -39,7 +39,7 @@ public class DropHeaders> implements Transformation updatedHeaders); public static class Key> extends HeaderFrom { diff --git a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/MaskField.java b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/MaskField.java index 99ece9be309dd..3d8feeef2fbb3 100644 --- a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/MaskField.java +++ b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/MaskField.java @@ -53,7 +53,7 @@ public abstract class MaskField> implements Transform private static final String REPLACE_NULL_WITH_DEFAULT_CONFIG = "replace.null.with.default"; public static final ConfigDef CONFIG_DEF = new ConfigDef() - .define(FIELDS_CONFIG, ConfigDef.Type.LIST, ConfigDef.NO_DEFAULT_VALUE, + .define(FIELDS_CONFIG, ConfigDef.Type.LIST, ConfigDef.NO_DEFAULT_VALUE, ConfigDef.ValidList.anyNonDuplicateValues(false, false), ConfigDef.Importance.HIGH, "Names of fields to mask.") .define(REPLACEMENT_CONFIG, ConfigDef.Type.STRING, null, new ConfigDef.NonEmptyString(), diff --git a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/ReplaceField.java b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/ReplaceField.java index ca6bbb73c5851..42fe833a49726 100644 --- a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/ReplaceField.java +++ b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/ReplaceField.java @@ -54,15 +54,15 @@ interface ConfigName { } public static final ConfigDef CONFIG_DEF = new ConfigDef() - .define(ConfigName.EXCLUDE, - ConfigDef.Type.LIST, - List.of(), - ConfigDef.ValidList.anyNonDuplicateValues(true, false), + .define(ConfigName.EXCLUDE, + ConfigDef.Type.LIST, + List.of(), + ConfigDef.ValidList.anyNonDuplicateValues(true, false), ConfigDef.Importance.MEDIUM, "Fields to exclude. This takes precedence over the fields to include.") - .define(ConfigName.INCLUDE, - ConfigDef.Type.LIST, - List.of(), + .define(ConfigName.INCLUDE, + ConfigDef.Type.LIST, + List.of(), ConfigDef.ValidList.anyNonDuplicateValues(true, false), ConfigDef.Importance.MEDIUM, "Fields to include. If specified, only these fields will be used.") diff --git a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/TimestampConverter.java b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/TimestampConverter.java index 95c97eb6bad18..ec8bba6b865ad 100644 --- a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/TimestampConverter.java +++ b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/TimestampConverter.java @@ -276,6 +276,7 @@ private static class Config { this.format = format; this.unixPrecision = unixPrecision; } + String field; String type; SimpleDateFormat format; diff --git a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/predicates/HasHeaderKey.java b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/predicates/HasHeaderKey.java index c393b1308a917..3a87981334da2 100644 --- a/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/predicates/HasHeaderKey.java +++ b/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/predicates/HasHeaderKey.java @@ -34,7 +34,7 @@ public class HasHeaderKey> implements Predicate { private static final String NAME_CONFIG = "name"; public static final String OVERVIEW_DOC = "A predicate which is true for records with at least one header with the configured name."; public static final ConfigDef CONFIG_DEF = new ConfigDef() - .define(NAME_CONFIG, ConfigDef.Type.STRING, ConfigDef.NO_DEFAULT_VALUE, + .define(NAME_CONFIG, ConfigDef.Type.STRING, ConfigDef.NO_DEFAULT_VALUE, new ConfigDef.NonEmptyString(), ConfigDef.Importance.MEDIUM, "The header name."); private String name; diff --git a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/CastTest.java b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/CastTest.java index 1a470095a417d..f7024e5d2e199 100644 --- a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/CastTest.java +++ b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/CastTest.java @@ -63,6 +63,7 @@ public static Stream data() { Arguments.of(true, "10") ); } + @AfterEach public void teardown() { xformKey.close(); diff --git a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/FlattenTest.java b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/FlattenTest.java index 8873f4c03b0b8..f33aafd7ade6b 100644 --- a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/FlattenTest.java +++ b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/FlattenTest.java @@ -284,7 +284,7 @@ public void testArrayWithSchema() { innerValue.put("baz", nestedValue); Struct value = new Struct(structSchema); value.put("foo", List.of(innerValue)); - SourceRecord transformed = xformValue.apply(new SourceRecord(null, null, "topic", null, null, structSchema, value)); + SourceRecord transformed = xformValue.apply(new SourceRecord(null, null, "topic", null, null, structSchema, value)); assertEquals(value, transformed.value()); assertEquals(structSchema, transformed.valueSchema()); } diff --git a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/HoistFieldTest.java b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/HoistFieldTest.java index 93b69d5413d83..f8afa59513e2d 100644 --- a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/HoistFieldTest.java +++ b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/HoistFieldTest.java @@ -57,7 +57,7 @@ public void withSchema() { final SinkRecord transformedRecord = xform.apply(record); assertEquals(Schema.Type.STRUCT, transformedRecord.keySchema().type()); - assertEquals(record.keySchema(), transformedRecord.keySchema().field("magic").schema()); + assertEquals(record.keySchema(), transformedRecord.keySchema().field("magic").schema()); assertEquals(42, ((Struct) transformedRecord.key()).get("magic")); } diff --git a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampConverterTest.java b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampConverterTest.java index d67d031482dd6..d489d7e63d6c3 100644 --- a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampConverterTest.java +++ b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampConverterTest.java @@ -298,16 +298,19 @@ public void testSchemalessNullValueToString() { testSchemalessNullValueConversion("string"); testSchemalessNullFieldConversion("string"); } + @Test public void testSchemalessNullValueToDate() { testSchemalessNullValueConversion("Date"); testSchemalessNullFieldConversion("Date"); } + @Test public void testSchemalessNullValueToTimestamp() { testSchemalessNullValueConversion("Timestamp"); testSchemalessNullFieldConversion("Timestamp"); } + @Test public void testSchemalessNullValueToUnix() { testSchemalessNullValueConversion("unix"); diff --git a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampRouterTest.java b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampRouterTest.java index a98c4406ad9ed..37cf9b845ae01 100644 --- a/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampRouterTest.java +++ b/connect/transforms/src/test/java/org/apache/kafka/connect/transforms/TimestampRouterTest.java @@ -29,6 +29,7 @@ public class TimestampRouterTest { private TimestampRouter xform; + @BeforeEach public void setup() { xform = new TimestampRouter<>(); diff --git a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorResult.java b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorResult.java index 16fa565953a95..8a9aa97809094 100644 --- a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorResult.java +++ b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorResult.java @@ -205,6 +205,7 @@ public int hashCode() { result = 31 * result + (isAtomic ? 1 : 0); return result; } + @Override public String toString() { return "CoordinatorResult(records=" + records + diff --git a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntime.java b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntime.java index eab9c5f1a6485..4ceb689cc9b5c 100644 --- a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntime.java +++ b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntime.java @@ -572,7 +572,7 @@ private void load() { loader.load(tp, coordinator).whenComplete((summary, exception) -> { scheduleInternalOperation("CompleteLoad(tp=" + tp + ", epoch=" + epoch + ")", tp, () -> { CoordinatorContext context = coordinators.get(tp); - if (context != null) { + if (context != null) { if (context.state != CoordinatorState.LOADING) { log.info("Ignored load completion from {} because context is in {} state.", context.tp, context.state); diff --git a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntimeMetricsImpl.java b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntimeMetricsImpl.java index 8835455cb288e..4fbad9808bf04 100644 --- a/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntimeMetricsImpl.java +++ b/coordinator-common/src/main/java/org/apache/kafka/coordinator/common/runtime/CoordinatorRuntimeMetricsImpl.java @@ -212,7 +212,7 @@ public CoordinatorRuntimeMetricsImpl(Metrics metrics, String metricsGroup, boole BATCH_BUFFER_CACHE_DISCARD_COUNT_METRIC_NAME, "The count of over-sized append buffers that were discarded instead of being cached upon release." ); - + metrics.addMetric(numPartitionsLoading, (Gauge) (config, now) -> numPartitionsLoadingCounter.get()); metrics.addMetric(numPartitionsActive, (Gauge) (config, now) -> numPartitionsActiveCounter.get()); metrics.addMetric(numPartitionsFailed, (Gauge) (config, now) -> numPartitionsFailedCounter.get()); diff --git a/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MockPartitionWriter.java b/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MockPartitionWriter.java index a09777e2154c5..2aa34442e4242 100644 --- a/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MockPartitionWriter.java +++ b/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MockPartitionWriter.java @@ -126,8 +126,8 @@ public long append( if (currentEpoch != null) { // TV2: markerEpoch must be > currentEpoch (strict validation) // TV1/TV0: markerEpoch must be >= currentEpoch - boolean invalidEpoch = (transactionVersion >= 2) - ? (markerEpoch <= currentEpoch) + boolean invalidEpoch = (transactionVersion >= 2) + ? (markerEpoch <= currentEpoch) : (markerEpoch < currentEpoch); if (invalidEpoch) { diff --git a/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MultiThreadedEventProcessorTest.java b/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MultiThreadedEventProcessorTest.java index 6018055c602ab..3e29557ec155d 100644 --- a/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MultiThreadedEventProcessorTest.java +++ b/coordinator-common/src/test/java/org/apache/kafka/coordinator/common/runtime/MultiThreadedEventProcessorTest.java @@ -408,9 +408,9 @@ public void testMetrics() throws Exception { // Enqueue the other event. FutureEvent otherEvent = new FutureEvent<>( new TopicPartition("foo", 0), () -> { - mockTime.sleep(5000L); - return numEventsExecuted.incrementAndGet(); - }, + mockTime.sleep(5000L); + return numEventsExecuted.incrementAndGet(); + }, false, mockTime.milliseconds() ); diff --git a/core/src/main/java/kafka/docker/Log4jConfiguration.java b/core/src/main/java/kafka/docker/Log4jConfiguration.java index 2409df8170d3a..dc15babb17fe2 100644 --- a/core/src/main/java/kafka/docker/Log4jConfiguration.java +++ b/core/src/main/java/kafka/docker/Log4jConfiguration.java @@ -41,7 +41,7 @@ public void setConfiguration(Configuration configuration) { } } -@JsonPropertyOrder({ "Properties", "Appenders", "Loggers" }) +@JsonPropertyOrder({"Properties", "Appenders", "Loggers"}) @JsonIgnoreProperties(ignoreUnknown = true) class Configuration { private Properties properties; @@ -165,7 +165,7 @@ public void setOtherProperties(String key, Object value) { } } -@JsonPropertyOrder({ "name", "level" }) +@JsonPropertyOrder({"name", "level"}) @JsonIgnoreProperties(ignoreUnknown = true) class Logger { private String name; diff --git a/core/src/main/java/kafka/server/ClientRequestQuotaManager.java b/core/src/main/java/kafka/server/ClientRequestQuotaManager.java index 3f2398b8358f5..065a608f09410 100644 --- a/core/src/main/java/kafka/server/ClientRequestQuotaManager.java +++ b/core/src/main/java/kafka/server/ClientRequestQuotaManager.java @@ -50,9 +50,9 @@ public class ClientRequestQuotaManager extends ClientQuotaManager { private final Sensor exemptSensor; public ClientRequestQuotaManager( - ClientQuotaManagerConfig config, - Metrics metrics, Time time, - String threadNamePrefix, + ClientQuotaManagerConfig config, + Metrics metrics, Time time, + String threadNamePrefix, Optional> quotaCallbackPlugin ) { super(config, metrics, QuotaType.REQUEST, time, threadNamePrefix, quotaCallbackPlugin); diff --git a/core/src/main/java/kafka/server/QuotaFactory.java b/core/src/main/java/kafka/server/QuotaFactory.java index aef041dff46a9..45c856a003156 100644 --- a/core/src/main/java/kafka/server/QuotaFactory.java +++ b/core/src/main/java/kafka/server/QuotaFactory.java @@ -103,8 +103,8 @@ public static QuotaManagers instantiate( } private static Optional> createClientQuotaCallback( - KafkaConfig cfg, - Metrics metrics, + KafkaConfig cfg, + Metrics metrics, String role ) { ClientQuotaCallback clientQuotaCallback = cfg.getConfiguredInstance( diff --git a/core/src/main/java/kafka/server/TierStateMachine.java b/core/src/main/java/kafka/server/TierStateMachine.java index 05b7fc13712e6..4a8342521bab9 100644 --- a/core/src/main/java/kafka/server/TierStateMachine.java +++ b/core/src/main/java/kafka/server/TierStateMachine.java @@ -74,6 +74,7 @@ public class TierStateMachine { private final LeaderEndPoint leader; private final ReplicaManager replicaMgr; private final boolean useFutureLog; + public TierStateMachine(LeaderEndPoint leader, ReplicaManager replicaMgr, boolean useFutureLog) { diff --git a/core/src/main/java/kafka/server/builders/ReplicaManagerBuilder.java b/core/src/main/java/kafka/server/builders/ReplicaManagerBuilder.java index 561447d9f974b..60ba32ffa9ce4 100644 --- a/core/src/main/java/kafka/server/builders/ReplicaManagerBuilder.java +++ b/core/src/main/java/kafka/server/builders/ReplicaManagerBuilder.java @@ -126,7 +126,7 @@ public ReplicaManager build() { Option.empty(), Option.empty(), Option.empty(), - () -> -1L, + () -> -1L, Option.empty(), DirectoryEventHandler.NOOP, new DelayedActionQueue()); diff --git a/core/src/main/java/kafka/server/logger/RuntimeLoggerManager.java b/core/src/main/java/kafka/server/logger/RuntimeLoggerManager.java index 3cb226e06867c..74d23e521da73 100644 --- a/core/src/main/java/kafka/server/logger/RuntimeLoggerManager.java +++ b/core/src/main/java/kafka/server/logger/RuntimeLoggerManager.java @@ -49,7 +49,7 @@ public class RuntimeLoggerManager { private final int nodeId; private final Logger log; - public RuntimeLoggerManager(int nodeId, Logger log) { + public RuntimeLoggerManager(int nodeId, Logger log) { this.nodeId = nodeId; this.log = log; } diff --git a/core/src/main/java/kafka/server/share/SharePartition.java b/core/src/main/java/kafka/server/share/SharePartition.java index 4044c94cbcc83..ac10f10a6bd91 100644 --- a/core/src/main/java/kafka/server/share/SharePartition.java +++ b/core/src/main/java/kafka/server/share/SharePartition.java @@ -1623,7 +1623,7 @@ private int numInFlightRecords() { } private boolean stateNotActive() { - return partitionState() != SharePartitionState.ACTIVE; + return partitionState() != SharePartitionState.ACTIVE; } private boolean emptyToInitialState() { @@ -1780,7 +1780,7 @@ private ShareAcquiredRecords acquireNewBatchRecords( // Create batches of acquired records. List acquiredRecords = createBatches(memberId, batches, isRecordLimitMode, maxFetchRecords, firstAcquiredOffset, lastAcquiredOffset, batchSize); // if the cachedState was empty before acquiring the new batches then startOffset needs to be updated - if (cachedState.firstKey() == firstAcquiredOffset) { + if (cachedState.firstKey() == firstAcquiredOffset) { startOffset = firstAcquiredOffset; } @@ -2865,7 +2865,7 @@ private long lastOffsetFromBatchWithRequestOffset( RecordBatch previousBatch = null; for (RecordBatch batch : batches) { if (offset >= batch.baseOffset()) { - previousBatch = batch; + previousBatch = batch; continue; } break; diff --git a/core/src/test/java/kafka/security/JaasTestUtils.java b/core/src/test/java/kafka/security/JaasTestUtils.java index 8a3b843396145..719da63a69e1f 100644 --- a/core/src/test/java/kafka/security/JaasTestUtils.java +++ b/core/src/test/java/kafka/security/JaasTestUtils.java @@ -316,6 +316,7 @@ public static Properties securityConfigs(ConnectionMode connectionMode, return securityConfigs(connectionMode, securityProtocol, trustStoreFile, certAlias, certCn, saslProperties, TestSslUtils.DEFAULT_TLS_PROTOCOL_FOR_TESTS, Optional.empty()); } + /** * Returns security configuration options for broker or clients * diff --git a/core/src/test/java/kafka/security/minikdc/MiniKdc.java b/core/src/test/java/kafka/security/minikdc/MiniKdc.java index e82f74d58e99f..adfdc42a12229 100644 --- a/core/src/test/java/kafka/security/minikdc/MiniKdc.java +++ b/core/src/test/java/kafka/security/minikdc/MiniKdc.java @@ -265,7 +265,7 @@ public void stop() { System.clearProperty(SUN_SECURITY_KRB5_DEBUG); // Close kdc acceptors and wait for them to terminate, ensuring that sockets are closed before returning. - for (Transport transport: kdc.getTransports()) { + for (Transport transport : kdc.getTransports()) { IoAcceptor acceptor = transport.getAcceptor(); if (acceptor != null) acceptor.dispose(true); } diff --git a/core/src/test/java/kafka/server/share/SharePartitionTest.java b/core/src/test/java/kafka/server/share/SharePartitionTest.java index 2cbb103349ad0..25eedf90d0ded 100644 --- a/core/src/test/java/kafka/server/share/SharePartitionTest.java +++ b/core/src/test/java/kafka/server/share/SharePartitionTest.java @@ -7235,7 +7235,7 @@ public void testAcknowledgeBatchAndOffsetPostLsoMovement() { assertNotNull(sharePartition.cachedState().get(2L).batchAcquisitionLockTimeoutTask()); // Check cached offset state map. - Map expectedOffsetStateMap = new HashMap<>(); + Map expectedOffsetStateMap = new HashMap<>(); expectedOffsetStateMap.put(10L, new InFlightState(RecordState.ACQUIRED, (short) 1, MEMBER_ID)); expectedOffsetStateMap.put(11L, new InFlightState(RecordState.ACQUIRED, (short) 1, MEMBER_ID)); expectedOffsetStateMap.put(12L, new InFlightState(RecordState.AVAILABLE, (short) 1, EMPTY_MEMBER_ID)); @@ -7335,7 +7335,7 @@ public void testLsoMovementThenAcquisitionLockTimeoutThenAcknowledge() throws In mockTimer.advanceClock(DEFAULT_MAX_WAIT_ACQUISITION_LOCK_TIMEOUT_MS); TestUtils.waitForCondition( () -> sharePartition.nextFetchOffset() == 7 && sharePartition.cachedState().isEmpty() && - sharePartition.startOffset() == 7 && sharePartition.endOffset() == 7, + sharePartition.startOffset() == 7 && sharePartition.endOffset() == 7, DEFAULT_MAX_WAIT_ACQUISITION_LOCK_TIMEOUT_MS, () -> assertionFailedMessage(sharePartition, Map.of())); assertEquals(0, sharePartition.deliveryCompleteCount()); @@ -9362,16 +9362,16 @@ public void testTerminalRecordsUpdatedWhenAbortedTransactionBatchesAreArchived() // Create 3 batches: first batch (0-8), middle batch with ABORTED transactions (10-18), last batch (20-28), each having // a transaction marker at the end. ByteBuffer buffer = ByteBuffer.allocate(2048); - + // First batch: normal records (0-8) newTransactionalRecords(buffer, ControlRecordType.COMMIT, 9, 1, 0); - + // Middle batch: ABORTED transaction records (10-18) newTransactionalRecords(buffer, ControlRecordType.ABORT, 9, 2, 10); - + // Last batch: normal records (20-28) newTransactionalRecords(buffer, ControlRecordType.COMMIT, 9, 3, 20); - + buffer.flip(); Records records = MemoryRecords.readableRecords(buffer); @@ -9989,7 +9989,7 @@ public void testRecordArchivedWithWriteStateRPCFailure() throws InterruptedExcep // is run successfully post write state RPC failure. mockTimer.advanceClock(DEFAULT_MAX_WAIT_ACQUISITION_LOCK_TIMEOUT_MS); TestUtils.waitForCondition( - () -> sharePartition.cachedState().get(2L).offsetState().get(3L).state() == RecordState.AVAILABLE && + () -> sharePartition.cachedState().get(2L).offsetState().get(3L).state() == RecordState.AVAILABLE && sharePartition.cachedState().get(7L).batchState() == RecordState.AVAILABLE && sharePartition.cachedState().get(2L).offsetState().get(3L).deliveryCount() == 1 && sharePartition.cachedState().get(7L).batchDeliveryCount() == 1 && @@ -10018,8 +10018,8 @@ public void testRecordArchivedWithWriteStateRPCFailure() throws InterruptedExcep // but the acquisition lock timeout task should be just expired for acknowledged offsets, though // the state should not be archived. TestUtils.waitForCondition( - () -> sharePartition.cachedState().get(2L).offsetState().get(2L).state() == RecordState.ARCHIVED && - sharePartition.cachedState().get(2L).offsetState().get(3L).state() == RecordState.ACKNOWLEDGED && + () -> sharePartition.cachedState().get(2L).offsetState().get(2L).state() == RecordState.ARCHIVED && + sharePartition.cachedState().get(2L).offsetState().get(3L).state() == RecordState.ACKNOWLEDGED && sharePartition.cachedState().get(2L).offsetState().get(3L).acquisitionLockTimeoutTask().hasExpired() && sharePartition.cachedState().get(7L).batchState() == RecordState.ACKNOWLEDGED && sharePartition.cachedState().get(7L).batchAcquisitionLockTimeoutTask().hasExpired(), diff --git a/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java b/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java index 62f1c8d676279..49f4c82d81412 100644 --- a/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java +++ b/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java @@ -50,7 +50,7 @@ */ public class ExactlyOnceMessageProcessor extends Thread implements ConsumerRebalanceListener, AutoCloseable { private static final int MAX_RETRIES = 5; - + private final String bootstrapServers; private final String inputTopic; private final String outputTopic; @@ -233,7 +233,7 @@ private int maybeRetry(int retries, KafkaConsumer consumer) { Utils.printErr("The number of retries must be greater than zero"); shutdown(); } - + if (retries < MAX_RETRIES) { // retry: reset fetch offset // the consumer fetch position needs to be restored to the committed offset before the transaction started diff --git a/examples/src/main/java/kafka/examples/TransactionalClientDemo.java b/examples/src/main/java/kafka/examples/TransactionalClientDemo.java index fb1c6744588d5..7c977fbdf068e 100644 --- a/examples/src/main/java/kafka/examples/TransactionalClientDemo.java +++ b/examples/src/main/java/kafka/examples/TransactionalClientDemo.java @@ -151,7 +151,7 @@ public static void initializeApplication() { Utils.printOut("Initializing Kafka consumer and producer"); consumer = createKafkaConsumer(); producer = createKafkaProducer(); - + producer.initTransactions(); Utils.printOut("Producer initialized with transactions"); } diff --git a/generator/src/main/java/org/apache/kafka/message/JsonConverterGenerator.java b/generator/src/main/java/org/apache/kafka/message/JsonConverterGenerator.java index ce5403198b618..e2b6196921fbc 100644 --- a/generator/src/main/java/org/apache/kafka/message/JsonConverterGenerator.java +++ b/generator/src/main/java/org/apache/kafka/message/JsonConverterGenerator.java @@ -54,7 +54,7 @@ public void generateAndWrite(MessageSpec message, BufferedWriter writer) generateConverters(message.dataClassName(), message.struct(), message.validVersions()); for (Iterator iter = structRegistry.structs(); - iter.hasNext(); ) { + iter.hasNext();) { StructRegistry.StructInfo info = iter.next(); buffer.printf("%n"); buffer.printf("public static class %s {%n", diff --git a/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java b/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java index a09da80f3e386..b0d486490aa53 100644 --- a/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java +++ b/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java @@ -127,7 +127,7 @@ private void generateClass(Optional topLevelMessageSpec, } generateSubclasses(className, struct, parentVersions, isSetElement); if (isTopLevel) { - for (Iterator iter = structRegistry.commonStructs(); iter.hasNext(); ) { + for (Iterator iter = structRegistry.commonStructs(); iter.hasNext();) { StructSpec commonStruct = iter.next(); generateClass(Optional.empty(), commonStruct.name(), @@ -1422,13 +1422,13 @@ private void generateFieldHashCode(FieldSpec field) { buffer.printf("hashCode = 31 * hashCode + (%s ? 1231 : 1237);%n", field.camelCaseName()); } else if ((field.type() instanceof FieldType.Int8FieldType) || - (field.type() instanceof FieldType.Int16FieldType) || - (field.type() instanceof FieldType.Uint16FieldType) || - (field.type() instanceof FieldType.Int32FieldType)) { + (field.type() instanceof FieldType.Int16FieldType) || + (field.type() instanceof FieldType.Uint16FieldType) || + (field.type() instanceof FieldType.Int32FieldType)) { buffer.printf("hashCode = 31 * hashCode + %s;%n", field.camelCaseName()); } else if (field.type() instanceof FieldType.Int64FieldType || - (field.type() instanceof FieldType.Uint32FieldType)) { + (field.type() instanceof FieldType.Uint32FieldType)) { buffer.printf("hashCode = 31 * hashCode + ((int) (%s >> 32) ^ (int) %s);%n", field.camelCaseName(), field.camelCaseName()); } else if (field.type() instanceof FieldType.UUIDFieldType) { diff --git a/generator/src/main/java/org/apache/kafka/message/SchemaGenerator.java b/generator/src/main/java/org/apache/kafka/message/SchemaGenerator.java index efb4cfb757e80..adfe1dca95895 100644 --- a/generator/src/main/java/org/apache/kafka/message/SchemaGenerator.java +++ b/generator/src/main/java/org/apache/kafka/message/SchemaGenerator.java @@ -84,7 +84,7 @@ void generateSchemas(MessageSpec message) { // First generate schemas for common structures so that they are // available when we generate the inline structures - for (Iterator iter = structRegistry.commonStructs(); iter.hasNext(); ) { + for (Iterator iter = structRegistry.commonStructs(); iter.hasNext();) { StructSpec struct = iter.next(); generateSchemas(struct.name(), struct, message.struct().versions()); } diff --git a/generator/src/main/java/org/apache/kafka/message/VersionConditional.java b/generator/src/main/java/org/apache/kafka/message/VersionConditional.java index 9a1abfa105f09..3e6825d091c52 100644 --- a/generator/src/main/java/org/apache/kafka/message/VersionConditional.java +++ b/generator/src/main/java/org/apache/kafka/message/VersionConditional.java @@ -207,7 +207,7 @@ void generate(CodeBuffer buffer) { generateAlwaysFalseCheck(ifNotVersions, buffer); } } else if (possibleVersions.highest() >= containingVersions.lowest() && - (possibleVersions.lowest() <= containingVersions.highest())) { + (possibleVersions.lowest() <= containingVersions.highest())) { if (possibleVersions.highest() > containingVersions.highest()) { generateUpperRangeCheck(ifVersions, ifNotVersions, buffer); } else { diff --git a/generator/src/test/java/org/apache/kafka/message/checker/MetadataSchemaCheckerToolTest.java b/generator/src/test/java/org/apache/kafka/message/checker/MetadataSchemaCheckerToolTest.java index ba435198de2b4..991d2ded52b67 100644 --- a/generator/src/test/java/org/apache/kafka/message/checker/MetadataSchemaCheckerToolTest.java +++ b/generator/src/test/java/org/apache/kafka/message/checker/MetadataSchemaCheckerToolTest.java @@ -35,7 +35,7 @@ public void testVerifyEvolutionGit() throws Exception { // Try to find the Git root directory Path rootKafkaDirectory = Paths.get("").toAbsolutePath(); boolean gitFound = false; - + while (rootKafkaDirectory != null) { if (Files.exists(rootKafkaDirectory.resolve(".git"))) { gitFound = true; @@ -43,9 +43,9 @@ public void testVerifyEvolutionGit() throws Exception { } rootKafkaDirectory = rootKafkaDirectory.getParent(); } - + assumeTrue(gitFound, "Skipping test - not in a Git repository"); - + try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { Path schemaPath = rootKafkaDirectory.resolve("metadata/src/main/resources/common/metadata/AbortTransactionRecord.json"); MetadataSchemaCheckerTool.run( diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/Group.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/Group.java index e0bff1d51c4c2..7a90009e80b24 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/Group.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/Group.java @@ -69,7 +69,7 @@ public static GroupType parse(String name) { return type == null ? UNKNOWN : type; } - + static String[] documentValidValues() { return Arrays.stream(GroupType.values()) .filter(type -> type != UNKNOWN) diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorConfig.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorConfig.java index 30e79e4631cfe..e0e58aa96a789 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorConfig.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorConfig.java @@ -401,10 +401,10 @@ public class GroupCoordinatorConfig { STREAMS_GROUP_ASSIGNMENT_INTERVAL_MS_CONFIG, STREAMS_GROUP_ASSIGNOR_OFFLOAD_ENABLE_CONFIG ); - + public static final ConfigDef CONFIG_DEF = new ConfigDef() // Group coordinator configs - .define(GROUP_COORDINATOR_REBALANCE_PROTOCOLS_CONFIG, LIST, GROUP_COORDINATOR_REBALANCE_PROTOCOLS_DEFAULT, + .define(GROUP_COORDINATOR_REBALANCE_PROTOCOLS_CONFIG, LIST, GROUP_COORDINATOR_REBALANCE_PROTOCOLS_DEFAULT, ConfigDef.ValidList.in(false, Group.GroupType.documentValidValues()), MEDIUM, GROUP_COORDINATOR_REBALANCE_PROTOCOLS_DOC) .define(GROUP_COORDINATOR_NUM_THREADS_CONFIG, INT, GROUP_COORDINATOR_NUM_THREADS_DEFAULT, atLeast(1), HIGH, GROUP_COORDINATOR_NUM_THREADS_DOC) .define(GROUP_COORDINATOR_NUM_BACKGROUND_THREADS_CONFIG, INT, GROUP_COORDINATOR_NUM_BACKGROUND_THREADS_DEFAULT, atLeast(1), HIGH, GROUP_COORDINATOR_NUM_BACKGROUND_THREADS_DOC) diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpers.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpers.java index b73749ba45f43..14a2c14302be5 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpers.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpers.java @@ -498,7 +498,7 @@ static short offsetCommitValueVersion(boolean expireTimestampMs) { if (expireTimestampMs) { return 1; } else { - return 4; + return 4; } } diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorService.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorService.java index 7bcff80722ccd..8044e5421b702 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorService.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorService.java @@ -518,8 +518,8 @@ public CompletableFuture consumerGroupHeartb private static void throwIfInvalidTopology( StreamsGroupHeartbeatRequestData.Topology topology ) throws StreamsInvalidTopologyException { - for (StreamsGroupHeartbeatRequestData.Subtopology subtopology: topology.subtopologies()) { - for (StreamsGroupHeartbeatRequestData.TopicInfo topicInfo: subtopology.stateChangelogTopics()) { + for (StreamsGroupHeartbeatRequestData.Subtopology subtopology : topology.subtopologies()) { + for (StreamsGroupHeartbeatRequestData.TopicInfo topicInfo : subtopology.stateChangelogTopics()) { if (topicInfo.partitions() != 0) { throw new StreamsInvalidTopologyException(String.format( "Changelog topic %s must have an undefined partition count, but it is set to %d.", @@ -747,7 +747,7 @@ CompletableFuture persisterInitialize( }); } - + private AlterShareGroupOffsetsResponseData buildErrorResponse(AlterShareGroupOffsetsResponseData response, InitializeShareGroupStateResult result) { AlterShareGroupOffsetsResponseData data = new AlterShareGroupOffsetsResponseData(); Map> topicPartitionErrorsMap = result.getErrors(); @@ -1240,7 +1240,7 @@ public CompletableFuture> return FutureUtils.combineFutures(futures, ArrayList::new, List::addAll); } - + /** * See {@link GroupCoordinator#shareGroupDescribe(AuthorizableRequestContext, List)}. */ @@ -1305,7 +1305,7 @@ public CompletableFuture alterShareGroupOffs if (!isActive.get() || metadataImage == null) { return CompletableFuture.completedFuture(AlterShareGroupOffsetsRequest.getErrorResponseData(Errors.COORDINATOR_NOT_AVAILABLE)); } - + if (groupId == null || groupId.isEmpty()) { return CompletableFuture.completedFuture(AlterShareGroupOffsetsRequest.getErrorResponseData(Errors.INVALID_GROUP_ID)); } diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorShard.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorShard.java index 9fc202ebae7fa..c976cc1e4cd6c 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorShard.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupCoordinatorShard.java @@ -302,7 +302,7 @@ public static class DeleteShareGroupOffsetsResultHolder { private final DeleteShareGroupStateParameters deleteStateRequestParameters; DeleteShareGroupOffsetsResultHolder(short topLevelErrorCode, String topLevelErrorMessage) { - this(topLevelErrorCode, topLevelErrorMessage, null, null); + this(topLevelErrorCode, topLevelErrorMessage, null, null); } DeleteShareGroupOffsetsResultHolder( diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java index 21fab03083f42..1eb37908864a4 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java @@ -6307,7 +6307,7 @@ public void replay( ) { String groupId = key.group(); - if (value == null) { + if (value == null) { // Tombstone. Group should be removed. removeGroup(groupId); } else { @@ -7458,7 +7458,7 @@ private boolean acceptJoiningMember(ClassicGroup group, String memberId) { // 2) using the number of awaiting members allows to kick out the last rejoining // members of the group. (group.hasMember(memberId) && group.member(memberId).isAwaitingJoin()) || - group.numAwaitingJoinResponse() < config.classicGroupMaxSize(); + group.numAwaitingJoinResponse() < config.classicGroupMaxSize(); case COMPLETING_REBALANCE, STABLE -> // An existing member is accepted. New members are accepted up to the max group size. // Note that the group size is used here. When the group transitions to CompletingRebalance, @@ -8158,7 +8158,7 @@ private CoordinatorResult classicGrou List memberResponses = new ArrayList<>(); - for (MemberIdentity member: request.members()) { + for (MemberIdentity member : request.members()) { String reason = member.reason() != null ? member.reason() : "not provided"; // The LeaveGroup API allows administrative removal of members by GroupInstanceId // in which case we expect the MemberId to be undefined. @@ -8765,7 +8765,7 @@ private boolean maybeDeleteEmptyConsumerGroup(String groupId, List onTopicsDeleted( private void appendOffsetCommitTombstone( String groupId, String topic, - int partition, + int partition, List records ) { records.add(GroupCoordinatorRecordHelpers.newOffsetCommitTombstoneRecord(groupId, topic, partition)); diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetrics.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetrics.java index 4e109c90fd708..4148678f3abc0 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetrics.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetrics.java @@ -303,7 +303,7 @@ public GroupCoordinatorMetrics(MetricsRegistry registry, Metrics metrics) { metrics.metricName("share-group-rebalance-count", METRICS_GROUP, "The total number of share group rebalances"))); - + Sensor streamsGroupRebalanceSensor = metrics.sensor(STREAMS_GROUP_REBALANCES_SENSOR_NAME); streamsGroupRebalanceSensor.add(new Meter( metrics.metricName("streams-group-rebalance-rate", @@ -351,7 +351,7 @@ private long numStreamsGroups() { private long numStreamsGroups(StreamsGroupState state) { return shards.values().stream().mapToLong(shard -> shard.numStreamsGroups(state)).sum(); } - + private long numShareGroups() { return shards.values().stream().mapToLong(GroupCoordinatorMetricsShard::numShareGroups).sum(); } diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsShard.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsShard.java index 6dc8c6b330532..35b702facb976 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsShard.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsShard.java @@ -122,7 +122,7 @@ public void incrementNumOffsets() { public void setConsumerGroupGauges(Map consumerGroupGauges) { this.consumerGroupGauges = consumerGroupGauges; } - + /** * Set the number of streams groups. * This method should be the only way to update the map and is called by the scheduled task @@ -208,7 +208,7 @@ public long numConsumerGroups() { return consumerGroupGauges.values().stream() .mapToLong(Long::longValue).sum(); } - + /** * Get the number of streams groups in the specified state. * diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/MemberState.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/MemberState.java index a444a9673dd94..ecc8b091c3ca6 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/MemberState.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/MemberState.java @@ -53,7 +53,7 @@ public enum MemberState { private static final Map VALUES_TO_ENUMS = new HashMap<>(); static { - for (MemberState state: MemberState.values()) { + for (MemberState state : MemberState.values()) { VALUES_TO_ENUMS.put(state.value(), state); } } diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsCoordinatorRecordHelpers.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsCoordinatorRecordHelpers.java index 4f75de8137f49..c1f2e0f3a011c 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsCoordinatorRecordHelpers.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsCoordinatorRecordHelpers.java @@ -329,15 +329,15 @@ private static List toTaskIdsW List> sortedEntries = partitionEpochMap.entrySet().stream() .sorted(Comparator.comparingInt(Map.Entry::getKey)) .toList(); - + List partitions = new ArrayList<>(sortedEntries.size()); List epochs = new ArrayList<>(sortedEntries.size()); - + for (Map.Entry entry : sortedEntries) { partitions.add(entry.getKey()); epochs.add(entry.getValue()); } - + taskIds.add(new StreamsGroupCurrentMemberAssignmentValue.TaskIds() .setSubtopologyId(subtopologyId) .setPartitions(partitions) diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsGroup.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsGroup.java index a74871871a6ef..b68b385fcfc74 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsGroup.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/StreamsGroup.java @@ -1261,7 +1261,7 @@ private CommitPartitionValidator createAssignmentEpochValidator( // Retrieve topology once for all partitions - not per partition! final StreamsTopology streamsTopology = topology.get().orElseThrow(() -> new StaleMemberEpochException("Topology is not available for offset commit validation.")); - + final TasksTupleWithEpochs assignedTasks = member.assignedTasks(); final TasksTupleWithEpochs tasksPendingRevocation = member.tasksPendingRevocation(); diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTuple.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTuple.java index 5e2e6e04d70fd..4181b12db67ca 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTuple.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTuple.java @@ -153,19 +153,19 @@ static String taskAssignmentToString( Map> assignment ) { StringBuilder builder = new StringBuilder("["); - + // Sort subtopology IDs for deterministic output String[] subtopologyIds = assignment.keySet().toArray(new String[0]); java.util.Arrays.sort(subtopologyIds); - + boolean first = true; for (String subtopologyId : subtopologyIds) { Set partitions = assignment.get(subtopologyId); - + // Sort partition IDs for deterministic output Integer[] partitionIds = partitions.toArray(new Integer[0]); java.util.Arrays.sort(partitionIds); - + for (Integer partitionId : partitionIds) { if (!first) { builder.append(", "); diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochs.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochs.java index 99220d466bc9e..a0daa1603ca36 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochs.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochs.java @@ -187,19 +187,19 @@ public String toString() { private static String taskAssignmentToString(Map> assignment) { StringBuilder builder = new StringBuilder("["); - + // Sort subtopology IDs String[] subtopologyIds = assignment.keySet().toArray(new String[0]); java.util.Arrays.sort(subtopologyIds); - + boolean first = true; for (String subtopologyId : subtopologyIds) { Map partitions = assignment.get(subtopologyId); - + // Sort partition IDs Integer[] partitionIds = partitions.keySet().toArray(new Integer[0]); java.util.Arrays.sort(partitionIds); - + for (Integer partitionId : partitionIds) { if (!first) { builder.append(", "); diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignor.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignor.java index 4828f0238b266..70260e4f1df94 100644 --- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignor.java +++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignor.java @@ -52,7 +52,7 @@ public String toString() { @Override public GroupAssignment assign(final GroupSpec groupSpec, final TopologyDescriber topologyDescriber) throws TaskAssignorException { initialize(groupSpec, topologyDescriber); - final GroupAssignment assignments = doAssign(groupSpec, topologyDescriber); + final GroupAssignment assignments = doAssign(groupSpec, topologyDescriber); localState = null; return assignments; } @@ -219,7 +219,7 @@ private void assignActive(final LinkedList activeTasks) { // 3. assign any remaining unassigned tasks final PriorityQueue processByLoad = new PriorityQueue<>(Comparator.comparingDouble(ProcessState::load)); processByLoad.addAll(localState.processIdToState.values()); - for (final TaskId task: activeTasks) { + for (final TaskId task : activeTasks) { final ProcessState processWithLeastLoad = processByLoad.poll(); if (processWithLeastLoad == null) { throw new TaskAssignorException(String.format("No process available to assign active task %s.", task)); @@ -318,7 +318,7 @@ private boolean hasUnfulfilledTaskQuota(final ProcessState process, final Member private void assignStandby(final LinkedList standbyTasks) { final ArrayList toLeastLoaded = new ArrayList<>(standbyTasks.size() * localState.numStandbyReplicas); - + // Assuming our current assignment is range-based, we want to sort by partition first. standbyTasks.sort(Comparator.comparing(TaskId::partition).thenComparing(TaskId::subtopologyId).reversed()); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpersTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpersTest.java index dc8f643fed36b..bc20987d84684 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpersTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorRecordHelpersTest.java @@ -604,7 +604,7 @@ public void testNewGroupMetadataRecordThrowsWhenEmptyAssignment() { Map.of() )); } - + @Test public void testEmptyGroupMetadataRecord() { Time time = new MockTime(); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorServiceTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorServiceTest.java index b879f8ff152ec..f161132e6e4a8 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorServiceTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorServiceTest.java @@ -576,6 +576,7 @@ public void testStreamsGroupHeartbeatWithException( future.get(5, TimeUnit.SECONDS) ); } + @Test public void testStreamsGroupHeartbeatFailsForUnsupportedFeatures() throws Exception { @@ -5201,7 +5202,7 @@ public void testDeleteShareGroupOffsetsPersisterReturnsNoSuccessfulTopics() thro .setGroupId(groupId) .setTopics(List.of( new DeleteShareGroupOffsetsRequestData.DeleteShareGroupOffsetsRequestTopic() - .setTopicName(TOPIC_NAME), + .setTopicName(TOPIC_NAME), new DeleteShareGroupOffsetsRequestData.DeleteShareGroupOffsetsRequestTopic() .setTopicName(badTopicName) )); @@ -5308,7 +5309,7 @@ public void testDeleteShareGroupOffsetsCompleteDeleteStateReturnsError() throws .setTopicId(TOPIC_ID) .setPartitions(List.of( new DeleteShareGroupStateResponseData.PartitionResult() - .setPartition(partition) + .setPartition(partition) .setErrorCode(Errors.NONE.code()) .setErrorMessage(null) )) diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorShardTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorShardTest.java index 3a31f403873d8..3354c153fbec2 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorShardTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupCoordinatorShardTest.java @@ -1222,7 +1222,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentWithNullValue() { verify(groupMetadataManager).replay(key, null); } - + @Test public void testReplayKeyCannotBeNull() { GroupMetadataManager groupMetadataManager = mock(GroupMetadataManager.class); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java index 954b379283075..ab74261258963 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java @@ -5817,7 +5817,7 @@ public void testStaticMembersJoinGroupWithMaxSize() { // Members which were accepted can rejoin, others are rejected, while // completing rebalance - List secondRoundJoinResults = IntStream.range(0, groupMaxSize + 1).mapToObj(i -> context.sendClassicGroupJoin( + List secondRoundJoinResults = IntStream.range(0, groupMaxSize + 1).mapToObj(i -> context.sendClassicGroupJoin( request .setMemberId(memberIds.get(i)) .setGroupInstanceId(groupInstanceIds.get(i)) @@ -5847,7 +5847,7 @@ public void testDynamicMembersCanRejoinGroupWithMaxSizeWhileRebalancing() { .build(); // First round of join requests. Generate member ids. - List firstRoundJoinResults = IntStream.range(0, groupMaxSize + 1) + List firstRoundJoinResults = IntStream.range(0, groupMaxSize + 1) .mapToObj(__ -> context.sendClassicGroupJoin(request, requiredKnownMemberId)) .toList(); @@ -15738,7 +15738,7 @@ public void testClassicGroupHeartbeatToConsumerGroupMaintainsSession() throws Ex // Consumer group with a member using the classic protocol. GroupMetadataManagerTestContext context = new GroupMetadataManagerTestContext.Builder() .withConsumerGroup(new ConsumerGroupBuilder(groupId, 10) - .withMember(new ConsumerGroupMember.Builder(memberId) + .withMember(new ConsumerGroupMember.Builder(memberId) .setClassicMemberMetadata( new ConsumerGroupMemberMetadataValue.ClassicMemberMetadata() .setSessionTimeoutMs(sessionTimeout) @@ -17114,7 +17114,7 @@ public void testShareGroupMemberJoinsEmptyGroupWithAssignments() { .addTopic(fooTopicId, fooTopicName, 6) .addTopic(barTopicId, barTopicName, 3) .build(); - + CoordinatorMetadataImage coordinatorMetadataImage = new KRaftCoordinatorMetadataImage(image); MetadataDelta delta = new MetadataDelta.Builder() @@ -17778,7 +17778,7 @@ barTopicName, computeTopicHash(barTopicName, metadataImage) .setAssignedTasks(mkTasksTupleWithCommonEpoch(TaskRole.ACTIVE, 2, TaskAssignmentTestUtil.mkTasks(subtopology1, 0, 1, 2, 3, 4, 5), TaskAssignmentTestUtil.mkTasks(subtopology2, 0, 1, 2))) - + .build(); List expectedRecords = List.of( @@ -22492,8 +22492,8 @@ public void testClassicGroupLeaveOnShareGroup() throws Exception { .setClientHost(DEFAULT_CLIENT_ADDRESS.toString()) .setSubscribedTopicNames(List.of("foo")) .build()) - .withAssignment(memberId, mkAssignment()) - .withAssignmentEpoch(1)) + .withAssignment(memberId, mkAssignment()) + .withAssignmentEpoch(1)) .build(); assertThrows(UnknownMemberIdException.class, () -> context.sendClassicGroupLeave( @@ -26864,11 +26864,11 @@ public void testReplayStreamsGroupCurrentMemberAssignmentWithCompaction() { GroupMetadataManagerTestContext context = new GroupMetadataManagerTestContext.Builder().build(); // Initialize members with process Ids. - context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, + context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdA) .setProcessId(processIdA) .build())); - context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, + context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdB) .setProcessId(processIdB) .build())); @@ -26887,7 +26887,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentWithCompaction() { .setState(org.apache.kafka.coordinator.group.streams.MemberState.STABLE) .setMemberEpoch(11) .setPreviousMemberEpoch(10) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyId, Map.of(0, 11)))) .build())); @@ -26895,7 +26895,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentWithCompaction() { context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupCurrentAssignmentRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdB) .setMemberEpoch(12) .setPreviousMemberEpoch(11) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyId, Map.of(0, 12)))) .build())); @@ -26903,7 +26903,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentWithCompaction() { context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupCurrentAssignmentRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdA) .setMemberEpoch(13) .setPreviousMemberEpoch(12) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyId, Map.of(1, 13)))) .build())); @@ -26925,11 +26925,11 @@ public void testReplayStreamsGroupCurrentMemberAssignmentUnownedTopologyWithComp GroupMetadataManagerTestContext context = new GroupMetadataManagerTestContext.Builder().build(); // Initialize members with process Ids. - context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, + context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdA) .setProcessId(processIdA) .build())); - context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, + context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupMemberRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdB) .setProcessId(processIdB) .build())); @@ -26949,7 +26949,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentUnownedTopologyWithComp .setState(org.apache.kafka.coordinator.group.streams.MemberState.STABLE) .setMemberEpoch(11) .setPreviousMemberEpoch(10) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyFoo, Map.of(0, 11)))) .build())); @@ -26957,7 +26957,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentUnownedTopologyWithComp context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupCurrentAssignmentRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdB) .setMemberEpoch(12) .setPreviousMemberEpoch(11) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyFoo, Map.of(0, 12)))) .build())); @@ -26971,7 +26971,7 @@ public void testReplayStreamsGroupCurrentMemberAssignmentUnownedTopologyWithComp context.replay(StreamsCoordinatorRecordHelpers.newStreamsGroupCurrentAssignmentRecord(groupId, streamsGroupMemberBuilderWithDefaults(memberIdA) .setMemberEpoch(14) .setPreviousMemberEpoch(13) - .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, + .setAssignedTasks(TaskAssignmentTestUtil.mkTasksTupleWithEpochs(TaskRole.ACTIVE, TaskAssignmentTestUtil.mkTasksWithEpochs(subtopologyBar, Map.of(0, 14)))) .build())); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTestContext.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTestContext.java index 3edeb452d0545..912ada49f8c38 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTestContext.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTestContext.java @@ -492,7 +492,7 @@ public Builder withStreamsGroup(StreamsGroupBuilder builder) { this.streamsGroupBuilders.add(builder); return this; } - + public Builder withShareGroup(ShareGroupBuilder builder) { this.shareGroupBuilders.add(builder); return this; @@ -507,7 +507,7 @@ public Builder withAuthorizerPlugin(Plugin authorizerPlugin) { this.authorizerPlugin = Optional.of(authorizerPlugin); return this; } - + public Builder withStreamsGroupTaskAssignors(List assignors) { this.streamsGroupAssignors = assignors; return this; @@ -666,7 +666,7 @@ public org.apache.kafka.coordinator.group.streams.MemberState streamsGroupMember .getMemberOrThrow(memberId) .state(); } - + public CoordinatorResult consumerGroupHeartbeat( ConsumerGroupHeartbeatRequestData request ) { diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/OffsetMetadataManagerTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/OffsetMetadataManagerTest.java index 570c1094728d7..d47dfbdd3b922 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/OffsetMetadataManagerTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/OffsetMetadataManagerTest.java @@ -2801,7 +2801,7 @@ public void testConsumerGroupOffsetFetchWithUnknownMemberId() { verifyFetchWithUnknownMemberId(context); } - + @Test public void testStreamsGroupOffsetFetchWithUnknownMemberId() { OffsetMetadataManagerTestContext context = new OffsetMetadataManagerTestContext.Builder().build(); @@ -2839,7 +2839,7 @@ public void testConsumerGroupOffsetFetchWithStaleMemberEpoch() { verifyOffsetFetchWithStaleMemberEpoch(context); } - + @Test public void testStreamsGroupOffsetFetchWithStaleMemberEpoch() { OffsetMetadataManagerTestContext context = new OffsetMetadataManagerTestContext.Builder().build(); @@ -2941,7 +2941,7 @@ public void testConsumerGroupOffsetDelete() { ); verifyOffsetDelete(context, group); } - + @Test public void testStreamsGroupOffsetDelete() { OffsetMetadataManagerTestContext context = new OffsetMetadataManagerTestContext.Builder().build(); @@ -2971,7 +2971,7 @@ public void testConsumerGroupOffsetDeleteWithErrors() { group.updateMember(member1); verifyOffsetDeleteWithErrors(context, group); } - + @Test public void testStreamsGroupOffsetDeleteWithErrors() { OffsetMetadataManagerTestContext context = new OffsetMetadataManagerTestContext.Builder().build(); @@ -3011,7 +3011,7 @@ public void testConsumerGroupOffsetDeleteWithPendingTransactionalOffsets() { ); verifyOffsetDeleteWithPendingTransactionalOffsets(context, group); } - + @Test public void testStreamsGroupOffsetDeleteWithPendingTransactionalOffsets() { OffsetMetadataManagerTestContext context = new OffsetMetadataManagerTestContext.Builder().build(); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/assignor/GroupSpecImplTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/assignor/GroupSpecImplTest.java index b0b86837f5a86..8cacada41512e 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/assignor/GroupSpecImplTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/assignor/GroupSpecImplTest.java @@ -51,7 +51,7 @@ void setUp() { invertedTargetAssignment = new HashMap<>(); topicId = Uuid.randomUuid(); - members.put(TEST_MEMBER, new MemberSubscriptionAndAssignmentImpl( + members.put(TEST_MEMBER, new MemberSubscriptionAndAssignmentImpl( Optional.empty(), Optional.empty(), Set.of(topicId), diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/classic/ClassicGroupMemberTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/classic/ClassicGroupMemberTest.java index b97db1e1b1cec..dda14d833185a 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/classic/ClassicGroupMemberTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/classic/ClassicGroupMemberTest.java @@ -215,7 +215,7 @@ public void testHasValidGroupInstanceId() { assertTrue(member.isStaticMember()); assertEquals(Optional.of("group-instance-id"), member.groupInstanceId()); } - + @Test public void testPlainProtocolSet() { JoinGroupRequestProtocolCollection protocolCollection = diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsTest.java index f4d2ad325b1d9..dcac423bf0047 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/metrics/GroupCoordinatorMetricsTest.java @@ -260,7 +260,7 @@ public void aggregateShards() { metrics.metricName("group-count", METRICS_GROUP, Map.of("protocol", "share")), 8 ); - + assertEquals(2, shard0.numStreamsGroups()); assertEquals(3, shard1.numStreamsGroups()); assertGaugeValue( diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroupTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroupTest.java index 73bf9655a76ce..6eed33d66713a 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroupTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroupTest.java @@ -1124,7 +1124,7 @@ public void testAsListedGroup() { public void testValidateOffsetFetch() { SnapshotRegistry snapshotRegistry = new SnapshotRegistry(new LogContext()); ConsumerGroup group = new ConsumerGroup( - new LogContext(), + new LogContext(), snapshotRegistry, "group-foo" ); @@ -1503,7 +1503,7 @@ public void testFromClassicGroup() { ); ConsumerGroup expectedConsumerGroup = new ConsumerGroup( - new LogContext(), + new LogContext(), new SnapshotRegistry(logContext), groupId ); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/CurrentAssignmentBuilderTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/CurrentAssignmentBuilderTest.java index b383a35f786f3..5cea8184d3e2a 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/CurrentAssignmentBuilderTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/CurrentAssignmentBuilderTest.java @@ -169,7 +169,7 @@ public void testStableToStableWithNewTasks(TaskRole taskRole) { .setMemberEpoch(memberEpoch + 1) .setPreviousMemberEpoch(memberEpoch) .setAssignedTasks(mkTasksTupleWithEpochs(taskRole, - mkTasksWithEpochs(SUBTOPOLOGY_ID1, Map.of(1, 9, 2, 8, 4, memberEpoch + 1)), + mkTasksWithEpochs(SUBTOPOLOGY_ID1, Map.of(1, 9, 2, 8, 4, memberEpoch + 1)), mkTasksWithEpochs(SUBTOPOLOGY_ID2, Map.of(3, 9, 4, 8, 7, memberEpoch + 1)))) .setTasksPendingRevocation(TasksTupleWithEpochs.EMPTY) .build(), diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupMemberTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupMemberTest.java index d332ffb632a8e..d0f17ca8446ea 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupMemberTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupMemberTest.java @@ -211,7 +211,7 @@ public void testBuilderUpdateWithStreamsGroupMemberMetadataValue() { public void testBuilderUpdateWithConsumerGroupCurrentMemberAssignmentValue() { List assignmentEpochsForTasks1 = List.of(5, 6, 7); List assignmentEpochsForTasks4 = List.of(4, 3, 2); - + StreamsGroupCurrentMemberAssignmentValue record = new StreamsGroupCurrentMemberAssignmentValue() .setMemberEpoch(MEMBER_EPOCH) .setPreviousMemberEpoch(PREVIOUS_MEMBER_EPOCH) diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupTest.java index c5fc85ea7d3bf..c69dbc111cf4b 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsGroupTest.java @@ -691,21 +691,21 @@ public void testValidateOffsetCommit(short version) { @Test public void testValidateOffsetCommitWithOlderEpoch() { StreamsGroup group = createStreamsGroup("group-foo"); - + group.setTopology(new StreamsTopology(1, Map.of("0", new StreamsGroupTopologyValue.Subtopology() .setSubtopologyId("0") .setSourceTopics(List.of("input-topic"))))); - + group.updateMember(new StreamsGroupMember.Builder("member-1") .setMemberEpoch(2) .setAssignedTasks(new TasksTupleWithEpochs( Map.of("0", Map.of(0, 2, 1, 1)), Map.of(), Map.of())) .build()); - + CommitPartitionValidator validator = group.validateOffsetCommit( "member-1", "", 1, false, ApiKeys.OFFSET_COMMIT.latestVersion()); - + // Received epoch (1) < assignment epoch (2) should throw assertThrows(StaleMemberEpochException.class, () -> validator.validate("input-topic", Uuid.ZERO_UUID, 0)); @@ -714,11 +714,11 @@ public void testValidateOffsetCommitWithOlderEpoch() { @Test public void testValidateOffsetCommitWithOlderEpochMissingTopology() { StreamsGroup group = createStreamsGroup("group-foo"); - + group.updateMember(new StreamsGroupMember.Builder("member-1") .setMemberEpoch(2) .build()); - + // Topology is retrieved when creating validator, so exception is thrown here assertThrows(StaleMemberEpochException.class, () -> group.validateOffsetCommit("member-1", "", 1, false, ApiKeys.OFFSET_COMMIT.latestVersion())); @@ -727,18 +727,18 @@ public void testValidateOffsetCommitWithOlderEpochMissingTopology() { @Test public void testValidateOffsetCommitWithOlderEpochMissingSubtopology() { StreamsGroup group = createStreamsGroup("group-foo"); - + group.setTopology(new StreamsTopology(1, Map.of("0", new StreamsGroupTopologyValue.Subtopology() .setSubtopologyId("0") .setSourceTopics(List.of("input-topic"))))); - + group.updateMember(new StreamsGroupMember.Builder("member-1") .setMemberEpoch(2) .build()); - + CommitPartitionValidator validator = group.validateOffsetCommit( "member-1", "", 1, false, ApiKeys.OFFSET_COMMIT.latestVersion()); - + assertThrows(StaleMemberEpochException.class, () -> validator.validate("unknown-topic", Uuid.ZERO_UUID, 0)); } @@ -746,11 +746,11 @@ public void testValidateOffsetCommitWithOlderEpochMissingSubtopology() { @Test public void testValidateOffsetCommitWithOlderEpochUnassignedPartition() { StreamsGroup group = createStreamsGroup("group-foo"); - + group.setTopology(new StreamsTopology(1, Map.of("0", new StreamsGroupTopologyValue.Subtopology() .setSubtopologyId("0") .setSourceTopics(List.of("input-topic"))))); - + group.updateMember(new StreamsGroupMember.Builder("member-1") .setMemberEpoch(2) .setAssignedTasks(new TasksTupleWithEpochs( @@ -758,7 +758,7 @@ public void testValidateOffsetCommitWithOlderEpochUnassignedPartition() { Map.of(), Map.of())) .setTasksPendingRevocation(TasksTupleWithEpochs.EMPTY) .build()); - + CommitPartitionValidator validator = group.validateOffsetCommit( "member-1", "", 1, false, ApiKeys.OFFSET_COMMIT.latestVersion()); @@ -770,21 +770,21 @@ public void testValidateOffsetCommitWithOlderEpochUnassignedPartition() { @Test public void testValidateOffsetCommitWithOlderEpochValidAssignment() { StreamsGroup group = createStreamsGroup("group-foo"); - + group.setTopology(new StreamsTopology(1, Map.of("0", new StreamsGroupTopologyValue.Subtopology() .setSubtopologyId("0") .setSourceTopics(List.of("input-topic"))))); - + group.updateMember(new StreamsGroupMember.Builder("member-1") .setMemberEpoch(5) .setAssignedTasks(new TasksTupleWithEpochs( Map.of("0", Map.of(0, 2, 1, 2)), Map.of(), Map.of())) .build()); - + CommitPartitionValidator validator = group.validateOffsetCommit( "member-1", "", 2, false, ApiKeys.OFFSET_COMMIT.latestVersion()); - + // Received epoch 2 == assignment epoch 2 should succeed validator.validate("input-topic", Uuid.ZERO_UUID, 0); validator.validate("input-topic", Uuid.ZERO_UUID, 1); @@ -1075,7 +1075,7 @@ public void testIsSubscribedToTopic() { streamsGroup.setTopology(topology); streamsGroup.updateMember(streamsGroup.getOrCreateDefaultMember("member-id")); - + assertTrue(streamsGroup.isSubscribedToTopic("test-topic1")); assertTrue(streamsGroup.isSubscribedToTopic("test-topic2")); assertFalse(streamsGroup.isSubscribedToTopic("non-existent-topic")); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsTopologyTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsTopologyTest.java index 751be12df866e..9465dec63c6a8 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsTopologyTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/StreamsTopologyTest.java @@ -136,7 +136,7 @@ public void asStreamsGroupDescribeTopologyShouldReturnCorrectStructure() { assertEquals(2, describeTopology.subtopologies().size()); // Verify subtopologies are correctly converted and sorted - List sortedSubtopologies = + List sortedSubtopologies = describeTopology.subtopologies().stream() .sorted(Comparator.comparing(StreamsGroupDescribeResponseData.Subtopology::subtopologyId)) .toList(); @@ -145,7 +145,7 @@ public void asStreamsGroupDescribeTopologyShouldReturnCorrectStructure() { StreamsGroupDescribeResponseData.Subtopology sub1 = sortedSubtopologies.get(0); assertEquals(SUBTOPOLOGY_ID_1, sub1.subtopologyId()); // Source topics are sorted alphabetically - assertEquals(List.of(REPARTITION_TOPIC_1, REPARTITION_TOPIC_2, SOURCE_TOPIC_1, SOURCE_TOPIC_2), + assertEquals(List.of(REPARTITION_TOPIC_1, REPARTITION_TOPIC_2, SOURCE_TOPIC_1, SOURCE_TOPIC_2), sub1.sourceTopics()); assertEquals(List.of(REPARTITION_TOPIC_3), sub1.repartitionSinkTopics()); assertEquals(2, sub1.repartitionSourceTopics().size()); @@ -174,7 +174,7 @@ public void asStreamsGroupDescribeTopicInfoShouldConvertCorrectly() { // Verify repartition source topics are correctly converted List repartitionTopics = describedSub.repartitionSourceTopics(); assertEquals(2, repartitionTopics.size()); - + // Find the first repartition topic (they should be sorted by name) StreamsGroupDescribeResponseData.TopicInfo firstTopic = repartitionTopics.stream() .filter(topic -> topic.name().equals(REPARTITION_TOPIC_1)) @@ -185,7 +185,7 @@ public void asStreamsGroupDescribeTopicInfoShouldConvertCorrectly() { // Verify changelog topics are correctly converted List changelogTopics = describedSub.stateChangelogTopics(); assertEquals(2, changelogTopics.size()); - + // Find the first changelog topic (they should be sorted by name) StreamsGroupDescribeResponseData.TopicInfo firstChangelog = changelogTopics.stream() .filter(topic -> topic.name().equals(CHANGELOG_TOPIC_1)) @@ -211,14 +211,14 @@ public void sourceTopicMapShouldBeComputedCorrectly() { mkEntry(SUBTOPOLOGY_ID_2, mkSubtopology2()) ); StreamsTopology topology = new StreamsTopology(1, subtopologies); - + // Verify sourceTopicMap contains all source topics from both subtopologies Map sourceTopicMap = topology.sourceTopicMap(); - + // From subtopology 1: SOURCE_TOPIC_1, SOURCE_TOPIC_2, REPARTITION_TOPIC_1, REPARTITION_TOPIC_2 // From subtopology 2: SOURCE_TOPIC_3, REPARTITION_TOPIC_3 assertEquals(6, sourceTopicMap.size()); - + // Verify regular source topics assertTrue(sourceTopicMap.containsKey(SOURCE_TOPIC_1)); assertEquals(mkSubtopology1(), sourceTopicMap.get(SOURCE_TOPIC_1)); @@ -226,7 +226,7 @@ public void sourceTopicMapShouldBeComputedCorrectly() { assertEquals(mkSubtopology1(), sourceTopicMap.get(SOURCE_TOPIC_2)); assertTrue(sourceTopicMap.containsKey(SOURCE_TOPIC_3)); assertEquals(mkSubtopology2(), sourceTopicMap.get(SOURCE_TOPIC_3)); - + // Verify repartition source topics assertTrue(sourceTopicMap.containsKey(REPARTITION_TOPIC_1)); assertEquals(mkSubtopology1(), sourceTopicMap.get(REPARTITION_TOPIC_1)); @@ -242,7 +242,7 @@ public void sourceTopicMapShouldBeImmutable() { mkEntry(SUBTOPOLOGY_ID_1, mkSubtopology1()) ); StreamsTopology topology = new StreamsTopology(1, subtopologies); - + assertThrows( UnsupportedOperationException.class, () -> topology.sourceTopicMap().put("test-topic", mkSubtopology1()) diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TargetAssignmentBuilderTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TargetAssignmentBuilderTest.java index dcce6b024612c..1f0f0cecb62f2 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TargetAssignmentBuilderTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TargetAssignmentBuilderTest.java @@ -139,7 +139,7 @@ public void testEmpty() { assertEquals(Map.of(), result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testAssignmentHasNotChanged(TaskRole taskRole) { @@ -181,11 +181,11 @@ public void testAssignmentHasNotChanged(TaskRole taskRole) { )), result.records()); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2, 3), mkTasks(barSubtopologyId, 1, 2, 3) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 4, 5, 6), mkTasks(barSubtopologyId, 4, 5, 6) )); @@ -193,7 +193,7 @@ public void testAssignmentHasNotChanged(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testAssignmentSwapped(TaskRole taskRole) { @@ -248,11 +248,11 @@ public void testAssignmentSwapped(TaskRole taskRole) { ), result.records().get(2)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2, 3), mkTasks(barSubtopologyId, 1, 2, 3) )); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 4, 5, 6), mkTasks(barSubtopologyId, 4, 5, 6) )); @@ -260,7 +260,7 @@ public void testAssignmentSwapped(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testNewMember(TaskRole taskRole) { @@ -326,15 +326,15 @@ public void testNewMember(TaskRole taskRole) { ), result.records().get(3)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2), mkTasks(barSubtopologyId, 1, 2) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 3, 4), mkTasks(barSubtopologyId, 3, 4) )); - expectedAssignment.put("member-3", mkTasksTuple(taskRole, + expectedAssignment.put("member-3", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 5, 6), mkTasks(barSubtopologyId, 5, 6) )); @@ -342,7 +342,7 @@ public void testNewMember(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testUpdateMember(TaskRole taskRole) { @@ -416,15 +416,15 @@ public void testUpdateMember(TaskRole taskRole) { ), result.records().get(3)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2), mkTasks(barSubtopologyId, 1, 2) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 3, 4), mkTasks(barSubtopologyId, 3, 4) )); - expectedAssignment.put("member-3", mkTasksTuple(taskRole, + expectedAssignment.put("member-3", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 5, 6), mkTasks(barSubtopologyId, 5, 6) )); @@ -432,7 +432,7 @@ public void testUpdateMember(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testPartialAssignmentUpdate(TaskRole taskRole) { @@ -498,15 +498,15 @@ public void testPartialAssignmentUpdate(TaskRole taskRole) { ), result.records().get(2)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2), mkTasks(barSubtopologyId, 1, 2) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 3, 4, 5), mkTasks(barSubtopologyId, 3, 4, 5) )); - expectedAssignment.put("member-3", mkTasksTuple(taskRole, + expectedAssignment.put("member-3", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 6), mkTasks(barSubtopologyId, 6) )); @@ -514,7 +514,7 @@ public void testPartialAssignmentUpdate(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testDeleteMember(TaskRole taskRole) { @@ -576,11 +576,11 @@ public void testDeleteMember(TaskRole taskRole) { ), result.records().get(2)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2, 3), mkTasks(barSubtopologyId, 1, 2, 3) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 4, 5, 6), mkTasks(barSubtopologyId, 4, 5, 6) )); @@ -588,7 +588,7 @@ public void testDeleteMember(TaskRole taskRole) { assertEquals(expectedAssignment, result.targetAssignment()); } - + @ParameterizedTest @EnumSource(TaskRole.class) public void testReplaceStaticMember(TaskRole taskRole) { @@ -656,16 +656,16 @@ public void testReplaceStaticMember(TaskRole taskRole) { ), result.records().get(1)); Map expectedAssignment = new HashMap<>(); - expectedAssignment.put("member-1", mkTasksTuple(taskRole, + expectedAssignment.put("member-1", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 1, 2), mkTasks(barSubtopologyId, 1, 2) )); - expectedAssignment.put("member-2", mkTasksTuple(taskRole, + expectedAssignment.put("member-2", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 3, 4), mkTasks(barSubtopologyId, 3, 4) )); - expectedAssignment.put("member-3-a", mkTasksTuple(taskRole, + expectedAssignment.put("member-3-a", mkTasksTuple(taskRole, mkTasks(fooSubtopologyId, 5, 6), mkTasks(barSubtopologyId, 5, 6) )); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochsTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochsTest.java index d31db67af7a6c..fb71d8cb351bd 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochsTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/TasksTupleWithEpochsTest.java @@ -258,7 +258,7 @@ public void testToString() { ); String result = tuple.toString(); - + // Verify the exact toString format assertEquals( "(active=[1-1@10, 1-2@11, 2-3@20], " + diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignorTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignorTest.java index 161f3e6a5d808..226e7e357e9f0 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignorTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/assignor/StickyTaskAssignorTest.java @@ -844,7 +844,7 @@ public void shouldHandleLargeNumberOfTasksWithStandbyAssignment() { final int numTasks = 100; final int numClients = 5; final int numStandbyReplicas = 2; - + Map members = new HashMap<>(); for (int i = 0; i < numClients; i++) { members.put("member" + i, createAssignmentMemberSpec("process" + i)); @@ -873,7 +873,7 @@ public void shouldHandleLargeNumberOfTasksWithStandbyAssignment() { assertTrue(allStandbyTasks.size() > 0, "Should have some standby tasks assigned"); // Maximum possible = numTasks * min(numStandbyReplicas, numClients - 1) = 100 * 2 = 200 int maxPossibleStandbyTasks = numTasks * Math.min(numStandbyReplicas, numClients - 1); - assertTrue(allStandbyTasks.size() <= maxPossibleStandbyTasks, + assertTrue(allStandbyTasks.size() <= maxPossibleStandbyTasks, "Should not exceed maximum possible standby tasks: " + maxPossibleStandbyTasks); // Verify no client has both active and standby for the same task @@ -895,7 +895,7 @@ public void shouldHandleLargeNumberOfTasksWithStandbyAssignment() { // With 100 tasks and 5 clients, each should have 20 tasks assertEquals(20, minActiveTasks); assertEquals(20, maxActiveTasks); - + // Verify standby task distribution is reasonable int minStandbyTasks = Integer.MAX_VALUE; int maxStandbyTasks = 0; @@ -915,7 +915,7 @@ public void shouldHandleOddNumberOfClientsWithStandbyTasks() { final int numTasks = 14; final int numClients = 7; final int numStandbyReplicas = 1; - + Map members = new HashMap<>(); for (int i = 0; i < numClients; i++) { members.put("member" + i, createAssignmentMemberSpec("process" + i)); @@ -966,7 +966,7 @@ public void shouldHandleHighStandbyReplicaCount() { final int numTasks = 6; final int numClients = 3; final int numStandbyReplicas = 5; - + Map members = new HashMap<>(); for (int i = 0; i < numClients; i++) { members.put("member" + i, createAssignmentMemberSpec("process" + i)); @@ -992,7 +992,7 @@ public void shouldHandleHighStandbyReplicaCount() { List memberStandbyTasks = getAllStandbyTaskIds(result, memberId); allStandbyTasks.addAll(memberStandbyTasks); } - + // Maximum possible = numTasks * min(numStandbyReplicas, numClients - 1) = 6 * 2 = 12 int maxPossibleStandbyTasks = numTasks * Math.min(numStandbyReplicas, numClients - 1); assertTrue(allStandbyTasks.size() <= maxPossibleStandbyTasks); @@ -1005,12 +1005,12 @@ public void shouldHandleLargeNumberOfSubtopologiesWithStandbyTasks() { final int numSubtopologies = 10; final int numClients = 4; final int numStandbyReplicas = 1; - + List subtopologies = new ArrayList<>(); for (int i = 0; i < numSubtopologies; i++) { subtopologies.add("subtopology-" + i); } - + Map members = new HashMap<>(); for (int i = 0; i < numClients; i++) { members.put("member" + i, createAssignmentMemberSpec("process" + i)); @@ -1043,7 +1043,7 @@ public void shouldHandleEdgeCaseWithSingleClientAndMultipleStandbyReplicas() { // Test edge case: single client with multiple standby replicas final int numTasks = 10; final int numStandbyReplicas = 3; - + Map members = mkMap( mkEntry("member1", createAssignmentMemberSpec("process1")) ); @@ -1055,7 +1055,7 @@ public void shouldHandleEdgeCaseWithSingleClientAndMultipleStandbyReplicas() { // Single client should get all active tasks assertEquals(numTasks, getAllActiveTaskCount(result, "member1")); - + // No standby tasks should be assigned since there's only one client // (standby tasks can't be assigned to the same client as active tasks) assertTrue(getAllStandbyTaskIds(result, "member1").isEmpty()); @@ -1092,7 +1092,7 @@ public void shouldHandleEdgeCaseWithMoreStandbyReplicasThanAvailableClients() { List memberStandbyTasks = getAllStandbyTaskIds(result, memberId); allStandbyTasks.addAll(memberStandbyTasks); } - + // Maximum possible = numTasks * 1 = 4 assertEquals(numTasks, allStandbyTasks.size()); } @@ -1166,18 +1166,18 @@ public void shouldRangeAssignTasksWhenScalingUp() { assertNotNull(testMember1); assertEquals(1, testMember1.activeTasks().get("test-subtopology1").size()); assertEquals(1, testMember1.activeTasks().get("test-subtopology2").size()); - + final MemberAssignment testMember2 = result.members().get("member2"); assertNotNull(testMember2); assertEquals(1, testMember2.activeTasks().get("test-subtopology1").size()); assertEquals(1, testMember2.activeTasks().get("test-subtopology2").size()); - + // Verify all tasks are assigned exactly once final Set allSubtopology1Tasks = new HashSet<>(); allSubtopology1Tasks.addAll(testMember1.activeTasks().get("test-subtopology1")); allSubtopology1Tasks.addAll(testMember2.activeTasks().get("test-subtopology1")); assertEquals(Sets.newSet(0, 1), allSubtopology1Tasks); - + final Set allSubtopology2Tasks = new HashSet<>(); allSubtopology2Tasks.addAll(testMember1.activeTasks().get("test-subtopology2")); allSubtopology2Tasks.addAll(testMember2.activeTasks().get("test-subtopology2")); @@ -1257,17 +1257,17 @@ public void shouldAssignStandbyTaskToPreviousOwnerBasedOnBelowQuotaCondition() { // Process1: active=[0], standby=[1] (previously had both active and standby tasks) // Process2: active=[1] (had the active task that process1 had as standby) // Process3: no previous tasks - final AssignmentMemberSpec memberSpec1 = createAssignmentMemberSpec("process1", - mkMap(mkEntry("test-subtopology", Sets.newSet(0))), + final AssignmentMemberSpec memberSpec1 = createAssignmentMemberSpec("process1", + mkMap(mkEntry("test-subtopology", Sets.newSet(0))), mkMap(mkEntry("test-subtopology", Sets.newSet(1)))); final AssignmentMemberSpec memberSpec2 = createAssignmentMemberSpec("process2", - mkMap(mkEntry("test-subtopology", Sets.newSet(1))), + mkMap(mkEntry("test-subtopology", Sets.newSet(1))), Map.of()); final AssignmentMemberSpec memberSpec3 = createAssignmentMemberSpec("process3"); final Map members = mkMap( - mkEntry("member1", memberSpec1), - mkEntry("member2", memberSpec2), + mkEntry("member1", memberSpec1), + mkEntry("member2", memberSpec2), mkEntry("member3", memberSpec3)); // We have 2 active tasks + 1 standby replica = 4 total tasks @@ -1282,18 +1282,18 @@ public void shouldAssignStandbyTaskToPreviousOwnerBasedOnBelowQuotaCondition() { // which is below the quota of 2 tasks per process final MemberAssignment member1 = result.members().get("member1"); assertNotNull(member1); - + // Member1 should retain its active task 0 assertTrue(member1.activeTasks().get("test-subtopology").contains(0)); - + // Member1 should get standby task 1 because it previously owned it and is below quota assertNotNull(member1.standbyTasks().get("test-subtopology"), "Member1 should have standby tasks assigned"); - assertTrue(member1.standbyTasks().get("test-subtopology").contains(1), + assertTrue(member1.standbyTasks().get("test-subtopology").contains(1), "Member1 should have standby task 1, but has: " + member1.standbyTasks().get("test-subtopology")); - + // Verify that member1 doesn't have active task 1 (standby can't be same as active) assertFalse(member1.activeTasks().get("test-subtopology").contains(1)); - + // Verify the process1's total task count is at or below quota int member1ActiveCount = member1.activeTasks().get("test-subtopology").size(); int member1StandbyCount = member1.standbyTasks().get("test-subtopology").size(); diff --git a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/topics/EndpointToPartitionsManagerTest.java b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/topics/EndpointToPartitionsManagerTest.java index 97af1bd9ccfda..d81bb2bb7b1ba 100644 --- a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/topics/EndpointToPartitionsManagerTest.java +++ b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/streams/topics/EndpointToPartitionsManagerTest.java @@ -67,7 +67,7 @@ public void setUp() { streamsGroupMember = mock(StreamsGroupMember.class); configuredTopology = mock(ConfiguredTopology.class); configuredSubtopologyOne = new ConfiguredSubtopology(1, Set.of("Topic-A"), new HashMap<>(), new HashSet<>(), new HashMap<>()); - Map repartitionSourceTopics = Map.of("Topic-B", new ConfiguredInternalTopic("Topic-B", 1, Optional.of((short) 1), Collections.emptyMap())); + Map repartitionSourceTopics = Map.of("Topic-B", new ConfiguredInternalTopic("Topic-B", 1, Optional.of((short) 1), Collections.emptyMap())); configuredSubtopologyTwo = new ConfiguredSubtopology(1, new HashSet<>(), repartitionSourceTopics, new HashSet<>(), new HashMap<>()); SortedMap configuredSubtopologyOneMap = new TreeMap<>(); configuredSubtopologyOneMap.put("0", configuredSubtopologyOne); @@ -156,7 +156,7 @@ void testEndpointToPartitionsWithTwoTopicsAndDifferentPartitions(int topicAParti StreamsGroupHeartbeatResponseData.TopicPartition topicAPartition = result.activePartitions().get(0); assertEquals("Topic-A", topicAPartition.topic()); assertEquals(topicAExpectedPartitions, topicAPartition.partitions().stream().sorted().toList()); - + StreamsGroupHeartbeatResponseData.TopicPartition topicBPartition = result.activePartitions().get(1); assertEquals("Topic-B", topicBPartition.topic()); assertEquals(topicBExpectedPartitions, topicBPartition.partitions().stream().sorted().toList()); diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/connect/JsonConverterBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/connect/JsonConverterBenchmark.java index bd9456e14cc64..9565a2faef245 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/connect/JsonConverterBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/connect/JsonConverterBenchmark.java @@ -325,6 +325,7 @@ private static org.apache.kafka.connect.data.Schema buildEnvelopeSchema() { .field("transaction", buildTransactionSchema()) .build(); } + private static org.apache.kafka.connect.data.Schema buildValueSchema() { return SchemaBuilder.struct() @@ -423,7 +424,7 @@ private static Struct buildTransactionStruct() { @Setup(Level.Trial) - public void setup(BenchmarkParams params) { + public void setup(BenchmarkParams params) { converter = new JsonConverter(Boolean.parseBoolean(params.getParam("blackbirdModule"))); converter.configure(Map.of(), false); diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/core/TestPurgatoryPerformance.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/core/TestPurgatoryPerformance.java index e0fd3d8c8d4c5..84b1791a3ee79 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/core/TestPurgatoryPerformance.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/core/TestPurgatoryPerformance.java @@ -350,9 +350,9 @@ public long next() { public void printStats() { System.out.printf( - "# interval samples: rate = %f, min = %d, max = %d%n", - 1000d / (samples.stream().mapToDouble(s -> s).sum() / samples.size()), - samples.stream().min(Comparator.comparingDouble(s -> s)).get(), + "# interval samples: rate = %f, min = %d, max = %d%n", + 1000d / (samples.stream().mapToDouble(s -> s).sum() / samples.size()), + samples.stream().min(Comparator.comparingDouble(s -> s)).get(), samples.stream().max(Comparator.comparingDouble(s -> s)).get()); } } diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetcher/ReplicaFetcherThreadBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetcher/ReplicaFetcherThreadBenchmark.java index 28f3577f4a5b0..f3aa3763cfcd5 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetcher/ReplicaFetcherThreadBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetcher/ReplicaFetcherThreadBenchmark.java @@ -121,7 +121,7 @@ public class ReplicaFetcherThreadBenchmark { public void setup() throws IOException { scheduler.startup(); Properties configs = BenchmarkConfigUtils.createDummyBrokerConfig(); - KafkaConfig config = KafkaConfig.fromProps(configs); + KafkaConfig config = KafkaConfig.fromProps(configs); LogConfig logConfig = createLogConfig(); BrokerTopicStats brokerTopicStats = new BrokerTopicStats(false); diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetchsession/FetchSessionBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetchsession/FetchSessionBenchmark.java index 38da51f699c9b..25472050cead1 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetchsession/FetchSessionBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/fetchsession/FetchSessionBenchmark.java @@ -97,7 +97,7 @@ public void setUp() { handler.handleResponse(FetchResponse.of(Errors.NONE, 0, 1, respMap, List.of()), ApiKeys.FETCH.latestVersion()); int counter = 0; - for (TopicPartition topicPartition: new ArrayList<>(fetches.keySet())) { + for (TopicPartition topicPartition : new ArrayList<>(fetches.keySet())) { if (updatedPercentage != 0 && counter % (100 / updatedPercentage) == 0) { // reorder in fetch session, and update log start offset fetches.remove(topicPartition); @@ -117,7 +117,7 @@ public void incrementalFetchSessionBuild() { else builder = handler.newBuilder(); - for (Map.Entry entry: fetches.entrySet()) { + for (Map.Entry entry : fetches.entrySet()) { TopicPartition topicPartition = entry.getKey(); builder.add(topicPartition, entry.getValue()); } diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/metadata/KRaftMetadataRequestBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/metadata/KRaftMetadataRequestBenchmark.java index c062089aa7e70..079abafa024dc 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/metadata/KRaftMetadataRequestBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/metadata/KRaftMetadataRequestBenchmark.java @@ -179,7 +179,7 @@ private List endpoints(final int brokerId) } private KafkaApis createKafkaApis() { - Properties kafkaProps = new Properties(); + Properties kafkaProps = new Properties(); kafkaProps.put(KRaftConfigs.NODE_ID_CONFIG, brokerId + ""); kafkaProps.put(KRaftConfigs.PROCESS_ROLES_CONFIG, "broker"); kafkaProps.put(QuorumConfig.QUORUM_VOTERS_CONFIG, "9000@foo:8092"); diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/partition/PartitionMakeFollowerBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/partition/PartitionMakeFollowerBenchmark.java index 68dddd2c8d22d..fcc143311f916 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/partition/PartitionMakeFollowerBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/partition/PartitionMakeFollowerBenchmark.java @@ -82,7 +82,7 @@ public class PartitionMakeFollowerBenchmark { private final KafkaScheduler scheduler = new KafkaScheduler(1, true, "scheduler"); private final int[] replicas = {0, 1, 2}; private final OffsetCheckpoints offsetCheckpoints = Mockito.mock(OffsetCheckpoints.class); - private final DelayedOperations delayedOperations = Mockito.mock(DelayedOperations.class); + private final DelayedOperations delayedOperations = Mockito.mock(DelayedOperations.class); private final ExecutorService executorService = Executors.newSingleThreadExecutor(); private Option topicId; private Partition partition; @@ -133,7 +133,7 @@ public void setup() throws IOException { }; int initialOffSet = 0; while (true) { - MemoryRecords memoryRecords = MemoryRecords.withRecords(initialOffSet, Compression.NONE, 0, simpleRecords); + MemoryRecords memoryRecords = MemoryRecords.withRecords(initialOffSet, Compression.NONE, 0, simpleRecords); partition.appendRecordsToFollowerOrFutureReplica(memoryRecords, false, Integer.MAX_VALUE); initialOffSet = initialOffSet + 2; } diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/record/CompressedRecordBatchValidationBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/record/CompressedRecordBatchValidationBenchmark.java index 0584ef67245c0..6a70a3636d6e6 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/record/CompressedRecordBatchValidationBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/record/CompressedRecordBatchValidationBenchmark.java @@ -53,7 +53,7 @@ Compression compression() { public void measureValidateMessagesAndAssignOffsetsCompressed(Blackhole bh) { MemoryRecords records = MemoryRecords.readableRecords(singleBatchBuffer.duplicate()); new LogValidator(records, new TopicPartition("a", 0), - Time.SYSTEM, compressionType, compression(), false, messageVersion, + Time.SYSTEM, compressionType, compression(), false, messageVersion, TimestampType.CREATE_TIME, Long.MAX_VALUE, Long.MAX_VALUE, 0, AppendOrigin.CLIENT ).validateMessagesAndAssignOffsetsCompressed(PrimitiveRef.ofLong(startingOffset), validatorMetricsRecorder, requestLocal.bufferSupplier()); diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/streams/RawBytesExtractionBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/streams/RawBytesExtractionBenchmark.java index 09a47d2856ef0..88e2f1fe314f0 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/streams/RawBytesExtractionBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/streams/RawBytesExtractionBenchmark.java @@ -76,7 +76,7 @@ public static class IterationStateForEmptyHeadersTimestamp extends IterationStat @Setup(Level.Iteration) public void setup() { this.values = new byte[DATA_SET_SAMPLE_SIZE][]; - for (int i = 0; i < DATA_SET_SAMPLE_SIZE; i++) { + for (int i = 0; i < DATA_SET_SAMPLE_SIZE; i++) { values[i] = new byte[1 + StateSerdes.TIMESTAMP_SIZE + 8]; final ByteBuffer buf = ByteBuffer.wrap(values[i]); buf.put((byte) 0x00); // header size @@ -105,7 +105,7 @@ public void setup() { } } - + @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public void testRawAggregationWithoutHeaders(IterationStateForEmptyHeaders state, Blackhole bh) { @@ -248,7 +248,7 @@ private static byte[] rawAggregationPre20249(final byte[] aggregationWithHeaders } final ByteBuffer buffer = ByteBuffer.wrap(aggregationWithHeaders); - Utils.readHeaders(buffer); + Utils.readHeaders(buffer); return Utils.readBytes(buffer, buffer.remaining()); } @@ -285,8 +285,8 @@ private static byte[] rawTimestampedValuePre20249(final byte[] rawValueTimestamp // Skip headers, keep timestamp + value if (headersSize < 0 || headersSize > buffer.remaining() || buffer.remaining() - headersSize < StateSerdes.TIMESTAMP_SIZE) { throw new SerializationException( - "Invalid format: headers size " + headersSize + - ", timestamp expected size " + StateSerdes.TIMESTAMP_SIZE + + "Invalid format: headers size " + headersSize + + ", timestamp expected size " + StateSerdes.TIMESTAMP_SIZE + ", but buffer size " + buffer.remaining() ); } diff --git a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/util/ByteUtilsBenchmark.java b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/util/ByteUtilsBenchmark.java index 1d0ee29edfed3..63965a9bce6d3 100644 --- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/util/ByteUtilsBenchmark.java +++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/util/ByteUtilsBenchmark.java @@ -58,6 +58,7 @@ public class ByteUtilsBenchmark { public static class BaseBenchmarkState { private ByteBuffer testBuffer; private SecureRandom random; + @Setup(Level.Trial) public void setUpBenchmarkLevel() { // Initialize the random number generator with a seed so that for each benchmark it produces the same sequence @@ -315,7 +316,7 @@ private static int readUnsignedVarintLegacy(ByteBuffer buffer) { /* * Implementation in Trunk as of Apr 2023 / v3.4 */ - private static long readUnsignedVarlongLegacy(ByteBuffer buffer) { + private static long readUnsignedVarlongLegacy(ByteBuffer buffer) { long value = 0L; int i = 0; long b; diff --git a/metadata/src/main/java/org/apache/kafka/controller/BrokersToIsrs.java b/metadata/src/main/java/org/apache/kafka/controller/BrokersToIsrs.java index 649fed99e1fea..de4fb76f0897b 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/BrokersToIsrs.java +++ b/metadata/src/main/java/org/apache/kafka/controller/BrokersToIsrs.java @@ -103,7 +103,7 @@ public TopicIdPartition next() { * Partitions with no isr members appear in this map under id NO_LEADER. */ private final TimelineHashMap> isrMembers; - + BrokersToIsrs(SnapshotRegistry snapshotRegistry) { this.snapshotRegistry = snapshotRegistry; this.isrMembers = new TimelineHashMap<>(snapshotRegistry, 0); diff --git a/metadata/src/main/java/org/apache/kafka/controller/ClusterFeatureSupportDescriber.java b/metadata/src/main/java/org/apache/kafka/controller/ClusterFeatureSupportDescriber.java index 77dc11fb938bb..a7234e9ec9f12 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/ClusterFeatureSupportDescriber.java +++ b/metadata/src/main/java/org/apache/kafka/controller/ClusterFeatureSupportDescriber.java @@ -26,5 +26,6 @@ public interface ClusterFeatureSupportDescriber { Iterator>> brokerSupported(); + Iterator>> controllerSupported(); } diff --git a/metadata/src/main/java/org/apache/kafka/controller/ConfigurationControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/ConfigurationControlManager.java index 013a04c3bac18..a7b86e83f95ea 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/ConfigurationControlManager.java +++ b/metadata/src/main/java/org/apache/kafka/controller/ConfigurationControlManager.java @@ -216,7 +216,7 @@ ControllerResult> incrementalAlterConfigs( BoundedList.newArrayBacked(MAX_RECORDS_PER_USER_OP); Map outputResults = new HashMap<>(); for (Entry>> resourceEntry : - configChanges.entrySet()) { + configChanges.entrySet()) { ApiError apiError = incrementalAlterConfigResource(resourceEntry.getKey(), resourceEntry.getValue(), newlyCreatedResource, diff --git a/metadata/src/main/java/org/apache/kafka/controller/DelegationTokenControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/DelegationTokenControlManager.java index 4f9436637f072..f154d8a60c995 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/DelegationTokenControlManager.java +++ b/metadata/src/main/java/org/apache/kafka/controller/DelegationTokenControlManager.java @@ -164,7 +164,7 @@ public ControllerResult createDelegationToken ) { long now = time.milliseconds(); KafkaPrincipal owner = context.principal(); - if ((requestData.ownerPrincipalName() != null) && + if ((requestData.ownerPrincipalName() != null) && (!requestData.ownerPrincipalName().isEmpty())) { owner = new KafkaPrincipal(requestData.ownerPrincipalType(), requestData.ownerPrincipalName()); @@ -318,7 +318,7 @@ public ControllerResult expireDelegationToken setTokenId(myTokenInformation.tokenId()), (short) 0)); } else if (myTokenInformation.maxTimestamp() < now || myTokenInformation.expiryTimestamp() < now) { responseData.setErrorCode(DELEGATION_TOKEN_EXPIRED.code()); - } else { + } else { long expiryTimestamp = Math.min(myTokenInformation.maxTimestamp(), sum(now, requestData.expiryTimePeriodMs())); responseData @@ -338,7 +338,7 @@ public ControllerResult sweepExpiredDelegationTokens() { long now = time.milliseconds(); List records = new ArrayList<>(0); - for (TokenInformation oldTokenInformation: tokenCache.tokens()) { + for (TokenInformation oldTokenInformation : tokenCache.tokens()) { if ((oldTokenInformation.maxTimestamp() < now) || (oldTokenInformation.expiryTimestamp() < now)) { log.info("Delegation token expired for token: {} for owner: {}", diff --git a/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java index a6b1538d2b0b9..b48d8bf070d99 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java +++ b/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java @@ -224,7 +224,7 @@ private MetadataVersion metadataVersionOrThrow(long epoch) { new IllegalStateException("Unknown metadata version for FeatureControlManager")); } - @SuppressWarnings({ "CyclomaticComplexity" }) + @SuppressWarnings({"CyclomaticComplexity"}) private ApiError updateFeature( String featureName, short newVersion, @@ -329,7 +329,7 @@ private Optional reasonNotSupported( numControllersChecked++; for (Iterator>> iter = clusterSupportDescriber.brokerSupported(); - iter.hasNext(); ) { + iter.hasNext();) { Entry> entry = iter.next(); reason = QuorumFeatures.reasonNotSupported(newVersion, "Broker " + entry.getKey(), @@ -342,8 +342,8 @@ private Optional reasonNotSupported( foundControllers.add(quorumFeatures.nodeId()); if (metadataVersionOrThrow().isControllerRegistrationSupported()) { for (Iterator>> iter = - clusterSupportDescriber.controllerSupported(); - iter.hasNext(); ) { + clusterSupportDescriber.controllerSupported(); + iter.hasNext();) { Entry> entry = iter.next(); if (entry.getKey() == quorumFeatures.nodeId()) { // No need to re-check the features supported by this controller, since we @@ -402,7 +402,7 @@ private ApiError updateMetadataVersion( if (!metadataChanged) { log.warn("Downgrading metadata.version from {} to {}.", currentVersion, newVersion); } else if (allowUnsafeDowngrade) { - return unsupportedMetadataDowngrade(currentVersion, newVersion, + return unsupportedMetadataDowngrade(currentVersion, newVersion, "Unsafe metadata downgrade is not supported in this version."); } else { // The phrase "Retry using UNSAFE_DOWNGRADE if you want to force the downgrade to proceed." has been removed @@ -429,7 +429,7 @@ private ApiError invalidMetadataVersion(short version, String message) { } private ApiError unsupportedMetadataDowngrade(MetadataVersion currentVersion, MetadataVersion targetVersion, String message) { - String errorMessage = String.format("Unsupported metadata.version downgrade from %s to %s. %s", + String errorMessage = String.format("Unsupported metadata.version downgrade from %s to %s. %s", currentVersion.featureLevel(), targetVersion.featureLevel(), message); log.warn(errorMessage); return new ApiError(Errors.INVALID_UPDATE_VERSION, errorMessage); diff --git a/metadata/src/main/java/org/apache/kafka/controller/ReplicationControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/ReplicationControlManager.java index 198e8b2f4ed29..545d6f7b60a20 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/ReplicationControlManager.java +++ b/metadata/src/main/java/org/apache/kafka/controller/ReplicationControlManager.java @@ -453,7 +453,7 @@ public void replay(PartitionRecord record) { updatePartitionInfo(record.topicId(), record.partitionId(), null, newPartInfo); updatePartitionDirectories(record.topicId(), record.partitionId(), null, newPartInfo.directories); updateReassigningTopicsIfNeeded(record.topicId(), record.partitionId(), - false, isReassignmentInProgress(newPartInfo)); + false, isReassignmentInProgress(newPartInfo)); } else if (!newPartInfo.equals(prevPartInfo)) { log.info("Replayed PartitionRecord for existing partition {} and {}.", description, newPartInfo); @@ -1220,7 +1220,7 @@ private static String logPartitionChangeInfo(PartitionRegistration oldRegistrati */ static void validateTotalNumberOfPartitions(CreateTopicsRequestData request, int defaultNumPartitions) { int totalPartitions = 0; - for (CreatableTopic topic: request.topics()) { + for (CreatableTopic topic : request.topics()) { if (topic.assignments().isEmpty()) { if (topic.numPartitions() == -1) { totalPartitions += defaultNumPartitions; @@ -2117,7 +2117,7 @@ void generateLeaderAndIsrUpdates(String context, StringBuilder bld = new StringBuilder(); String prefix = ""; for (ListIterator iter = records.listIterator(oldSize); - iter.hasNext(); ) { + iter.hasNext();) { ApiMessageAndVersion apiMessageAndVersion = iter.next(); PartitionChangeRecord record = (PartitionChangeRecord) apiMessageAndVersion.message(); bld.append(prefix).append(topics.get(record.topicId()).name).append("-"). diff --git a/metadata/src/main/java/org/apache/kafka/controller/ScramControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/ScramControlManager.java index f593e2e0e4b2c..3682515f9d2cf 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/ScramControlManager.java +++ b/metadata/src/main/java/org/apache/kafka/controller/ScramControlManager.java @@ -258,7 +258,7 @@ public ControllerResult alterCredentials( } static ApiError finishUpsertion(List records, ScramCredentialUpsertion upsertion) { - org.apache.kafka.common.security.scram.internals.ScramMechanism internalMechanism = + org.apache.kafka.common.security.scram.internals.ScramMechanism internalMechanism = org.apache.kafka.common.security.scram.internals.ScramMechanism.forMechanismName( ScramMechanism.fromType(upsertion.mechanism()).mechanismName()); diff --git a/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetrics.java b/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetrics.java index d85f8b86d4ac1..8e7d2bbbeaf39 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetrics.java +++ b/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetrics.java @@ -236,7 +236,7 @@ public int brokerRegistrationState(int brokerId) { BrokerRegistrationState.UNREGISTERED.state() ); } - + public void setGlobalTopicCount(int topicCount) { this.globalTopicCount.set(topicCount); } @@ -292,7 +292,7 @@ public void incrementMetadataErrorCount() { public int metadataErrorCount() { return this.metadataErrorCount.get(); } - + public void updateUncleanLeaderElection(int count) { this.uncleanLeaderElectionMeter.ifPresent(m -> m.mark(count)); } diff --git a/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetricsPublisher.java b/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetricsPublisher.java index 111285ab9f9dc..cec0df91efb21 100644 --- a/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetricsPublisher.java +++ b/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetricsPublisher.java @@ -92,7 +92,7 @@ private void publishDelta(MetadataDelta delta) { ControllerMetricsChanges changes = new ControllerMetricsChanges(); if (delta.clusterDelta() != null) { for (Entry> entry : - delta.clusterDelta().changedBrokers().entrySet()) { + delta.clusterDelta().changedBrokers().entrySet()) { changes.handleBrokerChange( prevImage.cluster().brokers().get(entry.getKey()), entry.getValue().orElse(null), diff --git a/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java b/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java index 553fc54c07b2d..b9efe714f0202 100644 --- a/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java +++ b/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java @@ -73,6 +73,7 @@ public Uuid id() { public Map partitionToElrElectionCount() { return partitionToElrElectionCount; } + public Map partitionToUncleanLeaderElectionCount() { return partitionToUncleanLeaderElectionCount; } diff --git a/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java index 9b0ad7a916aba..500512335669d 100644 --- a/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java +++ b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java @@ -168,7 +168,7 @@ public TopicsImage apply() { ImmutableMap newTopicsById = image.topicsById(); ImmutableMap newTopicsByName = image.topicsByName(); // apply all the deletes - for (Uuid topicId: deletedTopicIds) { + for (Uuid topicId : deletedTopicIds) { // it was deleted, so we have to remove it from the maps TopicImage originalTopicToBeDeleted = image.topicsById().get(topicId); if (originalTopicToBeDeleted == null) { @@ -179,7 +179,7 @@ public TopicsImage apply() { } } // apply all the updates/additions - for (Map.Entry entry: changedTopics.entrySet()) { + for (Map.Entry entry : changedTopics.entrySet()) { Uuid topicId = entry.getKey(); TopicImage newTopicToBeAddedOrUpdated = entry.getValue().apply(); // put new information into the maps diff --git a/metadata/src/main/java/org/apache/kafka/image/loader/MetadataLoader.java b/metadata/src/main/java/org/apache/kafka/image/loader/MetadataLoader.java index bfd42e2bdc756..65ca477ed1d5c 100644 --- a/metadata/src/main/java/org/apache/kafka/image/loader/MetadataLoader.java +++ b/metadata/src/main/java/org/apache/kafka/image/loader/MetadataLoader.java @@ -323,7 +323,7 @@ void initializeNewPublishers() { image.provenance(), time.nanoseconds() - startNs); for (Iterator iter = uninitializedPublishers.values().iterator(); - iter.hasNext(); ) { + iter.hasNext();) { MetadataPublisher publisher = iter.next(); iter.remove(); try { @@ -604,12 +604,12 @@ class ShutdownEvent implements EventQueue.Event { @Override public void run() throws Exception { for (Iterator iter = uninitializedPublishers.values().iterator(); - iter.hasNext(); ) { + iter.hasNext();) { closePublisher(iter.next()); iter.remove(); } for (Iterator iter = publishers.values().iterator(); - iter.hasNext(); ) { + iter.hasNext();) { closePublisher(iter.next()); iter.remove(); } diff --git a/metadata/src/main/java/org/apache/kafka/image/writer/ImageWriterOptions.java b/metadata/src/main/java/org/apache/kafka/image/writer/ImageWriterOptions.java index b6d676b3744a2..b25a6c8d17df1 100644 --- a/metadata/src/main/java/org/apache/kafka/image/writer/ImageWriterOptions.java +++ b/metadata/src/main/java/org/apache/kafka/image/writer/ImageWriterOptions.java @@ -88,6 +88,7 @@ private ImageWriterOptions( public MetadataVersion metadataVersion() { return metadataVersion; } + public boolean isEligibleLeaderReplicasEnabled() { return isEligibleLeaderReplicasEnabled; } diff --git a/metadata/src/main/java/org/apache/kafka/metadata/BrokerRegistration.java b/metadata/src/main/java/org/apache/kafka/metadata/BrokerRegistration.java index 4dcb5ba1b3605..c9ec1317613d7 100644 --- a/metadata/src/main/java/org/apache/kafka/metadata/BrokerRegistration.java +++ b/metadata/src/main/java/org/apache/kafka/metadata/BrokerRegistration.java @@ -248,7 +248,7 @@ public Optional node(String listenerName) { } return Optional.of(new Node(id, endpoint.host(), endpoint.port(), rack.orElse(null), fenced)); } - + public List nodes() { return listeners.keySet().stream().flatMap(l -> node(l).stream()).toList(); } diff --git a/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java b/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java index 5a0749648f9a9..ee6875d13ce3a 100644 --- a/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java +++ b/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java @@ -184,7 +184,7 @@ public void configure(Map configs) { } // VisibleForTesting - Set superUsers() { + Set superUsers() { return new HashSet<>(data.superUsers()); } diff --git a/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java b/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java index 3d3d322682669..ebeebdc2ec020 100644 --- a/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java +++ b/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java @@ -367,7 +367,7 @@ private short effectiveKRaftFeatureLevel(Optional configuredKRaftVersionL } } - BootstrapMetadata calculateBootstrapMetadata() throws Exception { + BootstrapMetadata calculateBootstrapMetadata() throws Exception { BootstrapMetadata bootstrapMetadata = BootstrapMetadata. fromVersions(releaseVersion, featureLevels, "format command"); List bootstrapRecords = new ArrayList<>(bootstrapMetadata.records()); diff --git a/metadata/src/test/java/org/apache/kafka/controller/AclControlManagerTest.java b/metadata/src/test/java/org/apache/kafka/controller/AclControlManagerTest.java index a443cfa0fe2ec..7dcf5b3c33f47 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/AclControlManagerTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/AclControlManagerTest.java @@ -323,7 +323,7 @@ public void testCreateAclDeleteAcl() { assertEquals(2, deleteResult.response().size()); Set deleted = new HashSet<>(); for (AclDeleteResult.AclBindingDeleteResult result : - deleteResult.response().get(0).aclBindingDeleteResults()) { + deleteResult.response().get(0).aclBindingDeleteResults()) { assertEquals(Optional.empty(), result.exception()); deleted.add(result.aclBinding()); } diff --git a/metadata/src/test/java/org/apache/kafka/controller/BrokerHeartbeatManagerTest.java b/metadata/src/test/java/org/apache/kafka/controller/BrokerHeartbeatManagerTest.java index 3dfeb0ef9403a..19117ac443112 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/BrokerHeartbeatManagerTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/BrokerHeartbeatManagerTest.java @@ -55,7 +55,7 @@ private static BrokerHeartbeatManager newBrokerHeartbeatManager() { @Test public void testHasValidSession() { BrokerHeartbeatManager manager = newBrokerHeartbeatManager(); - MockTime time = (MockTime) manager.time(); + MockTime time = (MockTime) manager.time(); assertFalse(manager.hasValidSession(0, 100L)); for (int brokerId = 0; brokerId < 3; brokerId++) { manager.register(brokerId, true); @@ -112,7 +112,7 @@ private static Set usableBrokersToSet(BrokerHeartbeatManager manag manager.brokers().iterator(), id -> id % 2 == 0 ? Optional.of("rack1") : Optional.of("rack2"), id -> id % 3 != 0); - iterator.hasNext(); ) { + iterator.hasNext();) { brokers.add(iterator.next()); } return brokers; diff --git a/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java b/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java index ace704b5bef92..2de6274794156 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java @@ -120,7 +120,7 @@ public void testUpdateFeatures() { result = manager.updateFeatures( updateMap(TestFeatureVersion.FEATURE_NAME, 1), Map.of(), false, 0); - expectedError = ApiError.NONE; + expectedError = ApiError.NONE; assertEquals(expectedError, result.response()); expectedMessages = new ArrayList<>(); expectedMessages.add(new ApiMessageAndVersion(new FeatureLevelRecord(). @@ -428,7 +428,7 @@ public void testCreateFeatureLevelRecords() { List.of())). build(); manager.replay(new FeatureLevelRecord().setName(MetadataVersion.FEATURE_NAME).setFeatureLevel(MetadataVersion.MINIMUM_VERSION.featureLevel())); - ControllerResult result = manager.updateFeatures( + ControllerResult result = manager.updateFeatures( Map.of(Feature.TEST_VERSION.featureName(), (short) 1), Map.of(Feature.TEST_VERSION.featureName(), FeatureUpdate.UpgradeType.UPGRADE), false, @@ -439,7 +439,7 @@ public void testCreateFeatureLevelRecords() { RecordTestUtils.replayAll(manager, result.records()); assertEquals(Optional.of((short) 1), manager.finalizedFeatures(Long.MAX_VALUE).get(Feature.TEST_VERSION.featureName())); - ControllerResult result2 = manager.updateFeatures( + ControllerResult result2 = manager.updateFeatures( Map.of(Feature.TEST_VERSION.featureName(), (short) 0), Map.of(Feature.TEST_VERSION.featureName(), FeatureUpdate.UpgradeType.UNSAFE_DOWNGRADE), false, diff --git a/metadata/src/test/java/org/apache/kafka/controller/PartitionChangeBuilderTest.java b/metadata/src/test/java/org/apache/kafka/controller/PartitionChangeBuilderTest.java index 0902e71e11b0b..52141d3680867 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/PartitionChangeBuilderTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/PartitionChangeBuilderTest.java @@ -92,7 +92,7 @@ public void testChangeRecordIsNoOp() { assertFalse( changeRecordIsNoOp( new PartitionChangeRecord() - .setLeaderRecoveryState(LeaderRecoveryState.RECOVERED.value()) + .setLeaderRecoveryState(LeaderRecoveryState.RECOVERED.value()) ) ); assertFalse(changeRecordIsNoOp(new PartitionChangeRecord().setDirectories(List.of( diff --git a/metadata/src/test/java/org/apache/kafka/controller/QuorumControllerTest.java b/metadata/src/test/java/org/apache/kafka/controller/QuorumControllerTest.java index 85c04d669e5fd..85157e4e54ee9 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/QuorumControllerTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/QuorumControllerTest.java @@ -348,7 +348,7 @@ public void testFenceMultipleBrokers() throws Throwable { } @Test - public void testElrEnabledByDefault() throws Throwable { + public void testElrEnabledByDefault() throws Throwable { long sessionTimeoutMillis = 500; try ( MockRaftClientTestEnv clientEnv = new MockRaftClientTestEnv.Builder(1). @@ -617,8 +617,8 @@ public void testMinIsrUpdateWithElr() throws Throwable { long sessionTimeoutMillis = 300; try ( - MockRaftClientTestEnv clientEnv = new MockRaftClientTestEnv.Builder(1).build(); - QuorumControllerTestEnv controlEnv = new QuorumControllerTestEnv.Builder(clientEnv). + MockRaftClientTestEnv clientEnv = new MockRaftClientTestEnv.Builder(1).build(); + QuorumControllerTestEnv controlEnv = new QuorumControllerTestEnv.Builder(clientEnv). setSessionTimeoutMillis(OptionalLong.of(sessionTimeoutMillis)). setBootstrapMetadata(BootstrapMetadata.fromVersion(MetadataVersion.IBP_4_0_IV1, "test-provided bootstrap ELR enabled")). build() @@ -1267,8 +1267,8 @@ private List generateTestRecords(Uuid fooId, Map checker.accept(new ConfigResource(BROKER, "999"))); @@ -1566,7 +1566,7 @@ public void testInsertBootstrapRecordsToEmptyLog() throws Exception { } } - static class TestAppender implements Function, Long> { + static class TestAppender implements Function, Long> { private long offset = 0; @Override diff --git a/metadata/src/test/java/org/apache/kafka/controller/ReplicationControlManagerTest.java b/metadata/src/test/java/org/apache/kafka/controller/ReplicationControlManagerTest.java index 23366ac378bc3..2b1ff4477d944 100644 --- a/metadata/src/test/java/org/apache/kafka/controller/ReplicationControlManagerTest.java +++ b/metadata/src/test/java/org/apache/kafka/controller/ReplicationControlManagerTest.java @@ -245,7 +245,7 @@ private ReplicationControlTestContext( setFeatureLevel(metadataVersion.featureLevel())); featureControl.replay(new FeatureLevelRecord() .setName(EligibleLeaderReplicasVersion.FEATURE_NAME) - .setFeatureLevel(isElrEnabled ? + .setFeatureLevel(isElrEnabled ? EligibleLeaderReplicasVersion.ELRV_1.featureLevel() : EligibleLeaderReplicasVersion.ELRV_0.featureLevel()) ); @@ -2329,10 +2329,10 @@ public void testCancelReassignPartitions() { setErrorMessage(null). setResponses(List.of( new ReassignableTopicResponse().setName("foo").setPartitions(List.of( - new ReassignablePartitionResponse().setPartitionIndex(0).setErrorMessage(null), - new ReassignablePartitionResponse().setPartitionIndex(1).setErrorMessage(null), + new ReassignablePartitionResponse().setPartitionIndex(0).setErrorMessage(null), + new ReassignablePartitionResponse().setPartitionIndex(1).setErrorMessage(null), new ReassignablePartitionResponse().setPartitionIndex(2).setErrorCode(INVALID_REPLICA_ASSIGNMENT.code()). - setErrorMessage("The manual partition assignment includes broker 5, but no such broker is registered."), + setErrorMessage("The manual partition assignment includes broker 5, but no such broker is registered."), new ReassignablePartitionResponse().setPartitionIndex(3).setErrorCode(INVALID_REPLICA_ASSIGNMENT.code()). setErrorMessage("The manual partition assignment includes an empty replica list."))), new ReassignableTopicResponse().setName("bar").setPartitions(List.of( @@ -3272,34 +3272,34 @@ void testHandleAssignReplicasToDirs() { Uuid topicC = ctx.createTestTopic("c", new int[][]{new int[]{2}}).topicId(); ControllerResult controllerResult = ctx.assignReplicasToDirs(1, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 0), dir1b1); - put(new TopicIdPartition(topicA, 1), dir2b1); - put(new TopicIdPartition(topicA, 2), offlineDir); // unknown/offline dir + put(new TopicIdPartition(topicA, 0), dir1b1); + put(new TopicIdPartition(topicA, 1), dir2b1); + put(new TopicIdPartition(topicA, 2), offlineDir); // unknown/offline dir put(new TopicIdPartition(topicB, 0), dir1b1); - put(new TopicIdPartition(topicB, 1), DirectoryId.LOST); - put(new TopicIdPartition(Uuid.fromString("nLU9hKNXSZuMe5PO2A4dVQ"), 1), dir2b1); // expect UNKNOWN_TOPIC_ID + put(new TopicIdPartition(topicB, 1), DirectoryId.LOST); + put(new TopicIdPartition(Uuid.fromString("nLU9hKNXSZuMe5PO2A4dVQ"), 1), dir2b1); // expect UNKNOWN_TOPIC_ID put(new TopicIdPartition(topicA, 137), dir1b1); // expect UNKNOWN_TOPIC_OR_PARTITION put(new TopicIdPartition(topicC, 0), dir1b1); // expect NOT_LEADER_OR_FOLLOWER }}); assertEquals(AssignmentsHelper.normalize(AssignmentsHelper.buildResponseData((short) 0, 0, new HashMap<>() {{ - put(dir1b1, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 0), NONE); - put(new TopicIdPartition(topicA, 137), UNKNOWN_TOPIC_OR_PARTITION); - put(new TopicIdPartition(topicB, 0), NONE); - put(new TopicIdPartition(topicC, 0), NOT_LEADER_OR_FOLLOWER); - }}); - put(dir2b1, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 1), NONE); - put(new TopicIdPartition(Uuid.fromString("nLU9hKNXSZuMe5PO2A4dVQ"), 1), UNKNOWN_TOPIC_ID); - }}); - put(offlineDir, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 2), NONE); - }}); - put(DirectoryId.LOST, new HashMap<>() {{ - put(new TopicIdPartition(topicB, 1), NONE); - }}); - }})), AssignmentsHelper.normalize(controllerResult.response())); + put(dir1b1, new HashMap<>() {{ + put(new TopicIdPartition(topicA, 0), NONE); + put(new TopicIdPartition(topicA, 137), UNKNOWN_TOPIC_OR_PARTITION); + put(new TopicIdPartition(topicB, 0), NONE); + put(new TopicIdPartition(topicC, 0), NOT_LEADER_OR_FOLLOWER); + }}); + put(dir2b1, new HashMap<>() {{ + put(new TopicIdPartition(topicA, 1), NONE); + put(new TopicIdPartition(Uuid.fromString("nLU9hKNXSZuMe5PO2A4dVQ"), 1), UNKNOWN_TOPIC_ID); + }}); + put(offlineDir, new HashMap<>() {{ + put(new TopicIdPartition(topicA, 2), NONE); + }}); + put(DirectoryId.LOST, new HashMap<>() {{ + put(new TopicIdPartition(topicB, 1), NONE); + }}); + }})), AssignmentsHelper.normalize(controllerResult.response())); short recordVersion = ctx.featureControl.metadataVersionOrThrow().partitionChangeRecordVersion(); assertEquals(sortPartitionChangeRecords(List.of( new ApiMessageAndVersion( @@ -3332,15 +3332,15 @@ void testHandleAssignReplicasToDirs() { ctx.replay(controllerResult.records()); assertEquals(new HashSet() {{ - add(new TopicIdPartition(topicA, 0)); - add(new TopicIdPartition(topicA, 1)); - add(new TopicIdPartition(topicB, 0)); - }}, RecordTestUtils.iteratorToSet(ctx.replicationControl.brokersToIsrs().iterator(1, true))); + add(new TopicIdPartition(topicA, 0)); + add(new TopicIdPartition(topicA, 1)); + add(new TopicIdPartition(topicB, 0)); + }}, RecordTestUtils.iteratorToSet(ctx.replicationControl.brokersToIsrs().iterator(1, true))); assertEquals(new HashSet() {{ - add(new TopicIdPartition(topicA, 2)); - add(new TopicIdPartition(topicB, 1)); - add(new TopicIdPartition(topicC, 0)); - }}, + add(new TopicIdPartition(topicA, 2)); + add(new TopicIdPartition(topicB, 1)); + add(new TopicIdPartition(topicC, 0)); + }}, RecordTestUtils.iteratorToSet(ctx.replicationControl.brokersToIsrs().iterator(2, true))); } @@ -3357,17 +3357,17 @@ void testHandleDirectoriesOffline() { Uuid topicA = ctx.createTestTopic("a", new int[][]{new int[]{b1, b2}, new int[]{b1, b2}}).topicId(); Uuid topicB = ctx.createTestTopic("b", new int[][]{new int[]{b1, b2}, new int[]{b1, b2}}).topicId(); ctx.assignReplicasToDirs(b1, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 0), dir1b1); - put(new TopicIdPartition(topicA, 1), dir2b1); - put(new TopicIdPartition(topicB, 0), dir1b1); - put(new TopicIdPartition(topicB, 1), dir2b1); - }}); + put(new TopicIdPartition(topicA, 0), dir1b1); + put(new TopicIdPartition(topicA, 1), dir2b1); + put(new TopicIdPartition(topicB, 0), dir1b1); + put(new TopicIdPartition(topicB, 1), dir2b1); + }}); ctx.assignReplicasToDirs(b2, new HashMap<>() {{ - put(new TopicIdPartition(topicA, 0), dir1b2); - put(new TopicIdPartition(topicA, 1), dir2b2); - put(new TopicIdPartition(topicB, 0), dir1b2); - put(new TopicIdPartition(topicB, 1), dir2b2); - }}); + put(new TopicIdPartition(topicA, 0), dir1b2); + put(new TopicIdPartition(topicA, 1), dir2b2); + put(new TopicIdPartition(topicB, 0), dir1b2); + put(new TopicIdPartition(topicB, 1), dir2b2); + }}); List records = new ArrayList<>(); ctx.replicationControl.handleDirectoriesOffline(b1, defaultBrokerEpoch(b1), List.of( dir1b1, diff --git a/metadata/src/test/java/org/apache/kafka/image/MetadataVersionChangeTest.java b/metadata/src/test/java/org/apache/kafka/image/MetadataVersionChangeTest.java index 4cfd4334694aa..e49410b981ad1 100644 --- a/metadata/src/test/java/org/apache/kafka/image/MetadataVersionChangeTest.java +++ b/metadata/src/test/java/org/apache/kafka/image/MetadataVersionChangeTest.java @@ -61,19 +61,19 @@ public void testMetadataVersionChangeExceptionToString() { @Test public void testConstructorThrowsExceptionWhenOldVersionIsNull() { - assertThrows(NullPointerException.class, () -> + assertThrows(NullPointerException.class, () -> new MetadataVersionChange(null, MetadataVersion.MINIMUM_VERSION)); } @Test public void testConstructorThrowsExceptionWhenNewVersionIsNull() { - assertThrows(NullPointerException.class, () -> + assertThrows(NullPointerException.class, () -> new MetadataVersionChange(MetadataVersion.MINIMUM_VERSION, null)); } @Test public void testConstructorThrowsExceptionWhenBothVersionsAreNull() { - assertThrows(NullPointerException.class, () -> + assertThrows(NullPointerException.class, () -> new MetadataVersionChange(null, null)); } } diff --git a/metadata/src/test/java/org/apache/kafka/image/loader/metrics/MetadataLoaderMetricsTest.java b/metadata/src/test/java/org/apache/kafka/image/loader/metrics/MetadataLoaderMetricsTest.java index fcbc2714cf6dc..36a01c18968fd 100644 --- a/metadata/src/test/java/org/apache/kafka/image/loader/metrics/MetadataLoaderMetricsTest.java +++ b/metadata/src/test/java/org/apache/kafka/image/loader/metrics/MetadataLoaderMetricsTest.java @@ -264,6 +264,7 @@ public void testFinalizedFeatureLevelMetrics() { registry.shutdown(); } } + @Test public void testAvgIdleRatio() { final double delta = 0.001; diff --git a/metadata/src/test/java/org/apache/kafka/image/node/TopicImageNodeTest.java b/metadata/src/test/java/org/apache/kafka/image/node/TopicImageNodeTest.java index 84d70cd90c165..130cfd8190354 100644 --- a/metadata/src/test/java/org/apache/kafka/image/node/TopicImageNodeTest.java +++ b/metadata/src/test/java/org/apache/kafka/image/node/TopicImageNodeTest.java @@ -50,6 +50,7 @@ private static TopicImage newTopicImage(String name, Uuid id, PartitionRegistrat } return new TopicImage(name, id, partitionMap); } + @Test public void testChildNames() { assertEquals(List.of("name", "id", "0"), NODE.childNames()); diff --git a/metadata/src/test/java/org/apache/kafka/image/publisher/BrokerRegistrationTrackerTest.java b/metadata/src/test/java/org/apache/kafka/image/publisher/BrokerRegistrationTrackerTest.java index 2b90702b517ec..247e68b3aedb4 100644 --- a/metadata/src/test/java/org/apache/kafka/image/publisher/BrokerRegistrationTrackerTest.java +++ b/metadata/src/test/java/org/apache/kafka/image/publisher/BrokerRegistrationTrackerTest.java @@ -75,13 +75,13 @@ MetadataDelta newDelta() { @Test public void testTrackerName() { - BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); + BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); assertEquals("BrokerRegistrationTracker(id=1)", ctx.tracker.name()); } @Test public void testMetadataVersionUpdateWithoutRegistrationDoesNothing() { - BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); + BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); MetadataDelta delta = ctx.newDelta(); delta.replay(new FeatureLevelRecord(). setName(MetadataVersion.FEATURE_NAME). @@ -92,7 +92,7 @@ public void testMetadataVersionUpdateWithoutRegistrationDoesNothing() { @Test public void testBrokerUpdateWithoutNewMvDoesNothing() { - BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); + BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); MetadataDelta delta = ctx.newDelta(); delta.replay(new RegisterBrokerRecord(). setBrokerId(1). @@ -108,7 +108,7 @@ public void testBrokerUpdateWithoutNewMvDoesNothing() { @ParameterizedTest @ValueSource(booleans = {false, true}) public void testBrokerUpdateWithNewMv(boolean jbodMv) { - BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); + BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); MetadataDelta delta = ctx.newDelta(); delta.replay(new RegisterBrokerRecord(). setBrokerId(1). @@ -129,7 +129,7 @@ public void testBrokerUpdateWithNewMv(boolean jbodMv) { @ParameterizedTest @ValueSource(booleans = {false, true}) public void testBrokerUpdateWithNewMvWithTwoDeltas(boolean jbodMv) { - BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); + BrokerRegistrationTrackerTestContext ctx = new BrokerRegistrationTrackerTestContext(); MetadataDelta delta = ctx.newDelta(); delta.replay(new RegisterBrokerRecord(). setBrokerId(1). diff --git a/metadata/src/test/java/org/apache/kafka/image/writer/ImageWriterOptionsTest.java b/metadata/src/test/java/org/apache/kafka/image/writer/ImageWriterOptionsTest.java index 433177b5c80dd..6013e130d1c89 100644 --- a/metadata/src/test/java/org/apache/kafka/image/writer/ImageWriterOptionsTest.java +++ b/metadata/src/test/java/org/apache/kafka/image/writer/ImageWriterOptionsTest.java @@ -60,8 +60,8 @@ public void testHandleLoss() { String expectedMessage = "stuff"; for (int i = MetadataVersion.MINIMUM_VERSION.ordinal(); - i < MetadataVersion.VERSIONS.length; - i++) { + i < MetadataVersion.VERSIONS.length; + i++) { MetadataVersion version = MetadataVersion.VERSIONS[i]; String formattedMessage = String.format("Metadata has been lost because the following could not be represented in metadata.version %s: %s", version, expectedMessage); Consumer customLossHandler = e -> assertEquals(formattedMessage, e.getMessage()); diff --git a/metadata/src/test/java/org/apache/kafka/metadata/KafkaConfigSchemaTest.java b/metadata/src/test/java/org/apache/kafka/metadata/KafkaConfigSchemaTest.java index 92c6e87a0189b..7a085f6aa2901 100644 --- a/metadata/src/test/java/org/apache/kafka/metadata/KafkaConfigSchemaTest.java +++ b/metadata/src/test/java/org/apache/kafka/metadata/KafkaConfigSchemaTest.java @@ -176,20 +176,20 @@ public void testResolveEffectiveDynamicInternalTopicConfig() { "internal", "internal,change" ); Map expected = Map.of( - "abc", new ConfigEntry("abc", null, - ConfigEntry.ConfigSource.DEFAULT_CONFIG, false, false, List.of(), + "abc", new ConfigEntry("abc", null, + ConfigEntry.ConfigSource.DEFAULT_CONFIG, false, false, List.of(), ConfigEntry.ConfigType.LIST, "abc doc"), - "def", new ConfigEntry("def", null, - ConfigEntry.ConfigSource.DEFAULT_CONFIG, false, false, List.of(), + "def", new ConfigEntry("def", null, + ConfigEntry.ConfigSource.DEFAULT_CONFIG, false, false, List.of(), ConfigEntry.ConfigType.LONG, "def doc"), - "ghi", new ConfigEntry("ghi", "true", - ConfigEntry.ConfigSource.DYNAMIC_TOPIC_CONFIG, false, false, List.of(), + "ghi", new ConfigEntry("ghi", "true", + ConfigEntry.ConfigSource.DYNAMIC_TOPIC_CONFIG, false, false, List.of(), ConfigEntry.ConfigType.BOOLEAN, "ghi doc"), - "xyz", new ConfigEntry("xyz", "thedefault", - ConfigEntry.ConfigSource.DEFAULT_CONFIG, true, false, List.of(), + "xyz", new ConfigEntry("xyz", "thedefault", + ConfigEntry.ConfigSource.DEFAULT_CONFIG, true, false, List.of(), ConfigEntry.ConfigType.PASSWORD, "xyz doc"), - "internal", new ConfigEntry("internal", "internal,change", - ConfigEntry.ConfigSource.DYNAMIC_TOPIC_CONFIG, false, false, List.of(), + "internal", new ConfigEntry("internal", "internal,change", + ConfigEntry.ConfigSource.DYNAMIC_TOPIC_CONFIG, false, false, List.of(), ConfigEntry.ConfigType.STRING, "internal doc") ); assertEquals(expected, SCHEMA.resolveEffectiveTopicConfigs(Map.of(), Map.of(), Map.of(), dynamicTopicConfigs)); diff --git a/metadata/src/test/java/org/apache/kafka/metadata/authorizer/StandardAuthorizerPropertyTest.java b/metadata/src/test/java/org/apache/kafka/metadata/authorizer/StandardAuthorizerPropertyTest.java index 2090fa710a6cb..3377c12c6fc7d 100644 --- a/metadata/src/test/java/org/apache/kafka/metadata/authorizer/StandardAuthorizerPropertyTest.java +++ b/metadata/src/test/java/org/apache/kafka/metadata/authorizer/StandardAuthorizerPropertyTest.java @@ -56,9 +56,9 @@ public class StandardAuthorizerPropertyTest { - @Target({ ElementType.ANNOTATION_TYPE, ElementType.PARAMETER, ElementType.TYPE_USE }) + @Target({ElementType.ANNOTATION_TYPE, ElementType.PARAMETER, ElementType.TYPE_USE}) @Retention(RetentionPolicy.RUNTIME) - @AlphaChars @NumericChars @Chars({ '_', '-', '.' }) + @AlphaChars @NumericChars @Chars({'_', '-', '.'}) public @interface ValidTopicChars { } @Property(tries = 5000) @@ -267,7 +267,7 @@ private void addRandomPrefixAllowAcls( pattern -> !pattern.isEmpty() ); } - + private void addRandomPrefixRules( StandardAuthorizer authorizer, String topic, @@ -293,7 +293,7 @@ private void addRandomPrefixRules( PatternType.PREFIXED, permissionType )); - } + } } } diff --git a/metadata/src/test/java/org/apache/kafka/metadata/storage/ScramParserTest.java b/metadata/src/test/java/org/apache/kafka/metadata/storage/ScramParserTest.java index 12a219dbacfb6..d2cbd644d8d07 100644 --- a/metadata/src/test/java/org/apache/kafka/metadata/storage/ScramParserTest.java +++ b/metadata/src/test/java/org/apache/kafka/metadata/storage/ScramParserTest.java @@ -121,6 +121,7 @@ public void testConfiguredIterations() { Optional.of("my pass"), Optional.empty()).iterations()); } + @Test public void testParsePerMechanismArgument() { assertEquals(new AbstractMap.SimpleImmutableEntry<>( diff --git a/raft/src/main/java/org/apache/kafka/raft/Endpoints.java b/raft/src/main/java/org/apache/kafka/raft/Endpoints.java index 4d0342211a3bb..1cea5e66617d9 100644 --- a/raft/src/main/java/org/apache/kafka/raft/Endpoints.java +++ b/raft/src/main/java/org/apache/kafka/raft/Endpoints.java @@ -147,6 +147,7 @@ public UpdateRaftVoterRequestData.ListenerCollection toUpdateVoterRequest() { } private static final Endpoints EMPTY = new Endpoints(Map.of()); + public static Endpoints empty() { return EMPTY; } diff --git a/raft/src/main/java/org/apache/kafka/raft/KRaftConfigs.java b/raft/src/main/java/org/apache/kafka/raft/KRaftConfigs.java index 58c4965ff8f2b..fac4a61eae3be 100644 --- a/raft/src/main/java/org/apache/kafka/raft/KRaftConfigs.java +++ b/raft/src/main/java/org/apache/kafka/raft/KRaftConfigs.java @@ -31,7 +31,7 @@ public class KRaftConfigs { /** KRaft mode configs */ public static final String PROCESS_ROLES_CONFIG = "process.roles"; public static final String PROCESS_ROLES_DOC = "The roles that this process plays: 'broker', 'controller', or 'broker,controller' if it is both. "; - + public static final String INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_CONFIG = "initial.broker.registration.timeout.ms"; public static final int INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_DEFAULT = 60000; public static final String INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_DOC = "When initially registering with the controller quorum, the number of milliseconds to wait before declaring failure and exiting the broker process."; @@ -69,7 +69,7 @@ public class KRaftConfigs { public static final long CONTROLLER_PERFORMANCE_ALWAYS_LOG_THRESHOLD_MS_DEFAULT = 2000; public static final String CONTROLLER_PERFORMANCE_ALWAYS_LOG_THRESHOLD_MS_DOC = "We will log an error message about controller events that take longer than this threshold."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(PROCESS_ROLES_CONFIG, LIST, ConfigDef.NO_DEFAULT_VALUE, ConfigDef.ValidList.in(false, "broker", "controller"), HIGH, PROCESS_ROLES_DOC) .define(NODE_ID_CONFIG, INT, ConfigDef.NO_DEFAULT_VALUE, atLeast(0), HIGH, NODE_ID_DOC) .define(INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_CONFIG, INT, INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_DEFAULT, null, MEDIUM, INITIAL_BROKER_REGISTRATION_TIMEOUT_MS_DOC) diff --git a/raft/src/main/java/org/apache/kafka/raft/KafkaNetworkChannel.java b/raft/src/main/java/org/apache/kafka/raft/KafkaNetworkChannel.java index 898a82ef3fdca..9791f9fa0a71b 100644 --- a/raft/src/main/java/org/apache/kafka/raft/KafkaNetworkChannel.java +++ b/raft/src/main/java/org/apache/kafka/raft/KafkaNetworkChannel.java @@ -68,7 +68,7 @@ public SendThread(String name, KafkaClient networkClient, int requestTimeoutMs, @Override public Collection generateRequests() { - List list = new ArrayList<>(); + List list = new ArrayList<>(); while (true) { RequestAndCompletionHandler request = queue.poll(); if (request == null) { diff --git a/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java b/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java index a3f929629b7ed..7b000804e4155 100644 --- a/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java +++ b/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java @@ -165,7 +165,7 @@ * as FileRecords, but we use {@link UnalignedRecords} in FetchSnapshotResponse because the records * are not necessarily offset-aligned. */ -@SuppressWarnings({ "ClassDataAbstractionCoupling", "ClassFanOutComplexity", "ParameterNumber", "NPathComplexity", "JavaNCSS" }) +@SuppressWarnings({"ClassDataAbstractionCoupling", "ClassFanOutComplexity", "ParameterNumber", "NPathComplexity", "JavaNCSS"}) public final class KafkaRaftClient implements RaftClient { private static final int MAX_NUMBER_OF_BATCHES = 10; private static final int MAX_FETCH_WAIT_MS = 500; @@ -2783,6 +2783,7 @@ private boolean isValidVoterKey(Optional voterKey) { }) .orElse(true); } + /** * Validate a request which is intended for the current quorum leader. * If an error is present in the returned value, it should be returned @@ -2863,7 +2864,7 @@ private RequestSendResult maybeSendRequest( long currentTimeMs, Node destination, Supplier requestSupplier - ) { + ) { var requestSent = false; if (requestManager.isBackingOff(destination, currentTimeMs)) { @@ -2946,7 +2947,7 @@ private long maybeSendRequests( Function requestSupplier ) { long minBackoffMs = Long.MAX_VALUE; - for (ReplicaKey voter: remoteVoters) { + for (ReplicaKey voter : remoteVoters) { long backoffMs = maybeSendRequest( currentTimeMs, destinationSupplier.apply(voter.id()), diff --git a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java index d6d3d5a61809e..e6b82d378907a 100644 --- a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java +++ b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java @@ -140,7 +140,7 @@ protected LeaderState( this.epoch = epoch; this.epochStartOffset = epochStartOffset; - for (VoterSet.VoterNode voterNode: voterSetAtEpochStart.voterNodes()) { + for (VoterSet.VoterNode voterNode : voterSetAtEpochStart.voterNodes()) { boolean hasAcknowledgedLeader = voterNode.isVoter(localVoterNode.voterKey()); this.voterStates.put( voterNode.voterKey().id(), @@ -155,7 +155,7 @@ protected LeaderState( this.checkQuorumTimer = time.timer(checkQuorumTimeoutMs); this.beginQuorumEpochTimeoutMs = fetchTimeoutMs / 2; this.beginQuorumEpochTimer = time.timer(0); - this.voterSetAtEpochStart = voterSetAtEpochStart; + this.voterSetAtEpochStart = voterSetAtEpochStart; this.offsetOfVotersAtEpochStart = offsetOfVotersAtEpochStart; this.kraftVersionAtEpochStart = kraftVersionAtEpochStart; @@ -205,7 +205,7 @@ public Set needToSendBeginQuorumRequests(long currentTimeMs) { .stream() .filter( state -> state.replicaKey.id() != localVoterNode.voterKey().id() && - currentTimeMs - state.lastFetchTimestamp >= beginQuorumEpochTimeoutMs + currentTimeMs - state.lastFetchTimestamp >= beginQuorumEpochTimeoutMs ) .map(ReplicaState::replicaKey) .collect(Collectors.toUnmodifiableSet()); diff --git a/raft/src/main/java/org/apache/kafka/raft/MetadataLogConfig.java b/raft/src/main/java/org/apache/kafka/raft/MetadataLogConfig.java index 331c64e858f12..fca0ce725ff9d 100644 --- a/raft/src/main/java/org/apache/kafka/raft/MetadataLogConfig.java +++ b/raft/src/main/java/org/apache/kafka/raft/MetadataLogConfig.java @@ -118,7 +118,7 @@ public MetadataLogConfig(AbstractConfig config) { public int logSegmentBytes() { return logSegmentBytes; } - + public Integer internalSegmentBytes() { return internalSegmentBytes; } diff --git a/raft/src/main/java/org/apache/kafka/raft/QuorumConfig.java b/raft/src/main/java/org/apache/kafka/raft/QuorumConfig.java index 3ecc1b2c19064..362157c65fe90 100644 --- a/raft/src/main/java/org/apache/kafka/raft/QuorumConfig.java +++ b/raft/src/main/java/org/apache/kafka/raft/QuorumConfig.java @@ -117,7 +117,7 @@ public class QuorumConfig { "Always returns at least one batch even if it is greater than controller.quorum.fetch.max.bytes."; public static final int DEFAULT_QUORUM_FETCH_MAX_BYTES = 1048576; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(QUORUM_VOTERS_CONFIG, LIST, DEFAULT_QUORUM_VOTERS, new ControllerQuorumVotersValidator(), HIGH, QUORUM_VOTERS_DOC) .define(QUORUM_BOOTSTRAP_SERVERS_CONFIG, LIST, DEFAULT_QUORUM_BOOTSTRAP_SERVERS, new ControllerQuorumBootstrapServersValidator(), HIGH, QUORUM_BOOTSTRAP_SERVERS_DOC) .define(QUORUM_ELECTION_TIMEOUT_MS_CONFIG, INT, DEFAULT_QUORUM_ELECTION_TIMEOUT_MS, atLeast(0), HIGH, QUORUM_ELECTION_TIMEOUT_MS_DOC) diff --git a/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java b/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java index d3a4f7609687f..8c89757ad784b 100644 --- a/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java +++ b/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java @@ -52,7 +52,7 @@ import java.util.function.UnaryOperator; import java.util.stream.Collectors; -@SuppressWarnings({ "ClassDataAbstractionCoupling", "ClassFanOutComplexity" }) +@SuppressWarnings({"ClassDataAbstractionCoupling", "ClassFanOutComplexity"}) public class RaftUtil { public static ApiMessage errorResponse(ApiKeys apiKey, Errors error) { @@ -717,50 +717,50 @@ static boolean hasValidTopicPartition(FetchResponseData data, TopicPartition top static boolean hasValidTopicPartition(VoteResponseData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(VoteRequestData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(BeginQuorumEpochRequestData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(BeginQuorumEpochResponseData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(EndQuorumEpochRequestData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(EndQuorumEpochResponseData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } static boolean hasValidTopicPartition(DescribeQuorumRequestData data, TopicPartition topicPartition) { return data.topics().size() == 1 && - data.topics().get(0).topicName().equals(topicPartition.topic()) && - data.topics().get(0).partitions().size() == 1 && - data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); + data.topics().get(0).topicName().equals(topicPartition.topic()) && + data.topics().get(0).partitions().size() == 1 && + data.topics().get(0).partitions().get(0).partitionIndex() == topicPartition.partition(); } } diff --git a/raft/src/main/java/org/apache/kafka/raft/VoterSet.java b/raft/src/main/java/org/apache/kafka/raft/VoterSet.java index 23f968cdeeb58..e80a277aa684c 100644 --- a/raft/src/main/java/org/apache/kafka/raft/VoterSet.java +++ b/raft/src/main/java/org/apache/kafka/raft/VoterSet.java @@ -458,6 +458,7 @@ public static VoterNode of( } private static final VoterSet EMPTY = new VoterSet(Map.of()); + public static VoterSet empty() { return EMPTY; } @@ -470,7 +471,7 @@ public static VoterSet empty() { */ public static VoterSet fromVotersRecord(VotersRecord voters) { HashMap voterNodes = new HashMap<>(voters.voters().size()); - for (VotersRecord.Voter voter: voters.voters()) { + for (VotersRecord.Voter voter : voters.voters()) { voterNodes.put( voter.voterId(), new VoterNode( diff --git a/raft/src/main/java/org/apache/kafka/raft/internals/BatchBuilder.java b/raft/src/main/java/org/apache/kafka/raft/internals/BatchBuilder.java index dda02eb72ae1b..076e87f8fecae 100644 --- a/raft/src/main/java/org/apache/kafka/raft/internals/BatchBuilder.java +++ b/raft/src/main/java/org/apache/kafka/raft/internals/BatchBuilder.java @@ -334,7 +334,7 @@ private int bytesNeededForRecords( } int recordSizeInBytes = DefaultRecord.sizeOfBodyInBytes( - (int) (expectedNextOffset - baseOffset), + (int) (expectedNextOffset - baseOffset), 0, -1, serde.recordSize(record, serializationCache), diff --git a/raft/src/main/java/org/apache/kafka/raft/internals/DefaultRequestSender.java b/raft/src/main/java/org/apache/kafka/raft/internals/DefaultRequestSender.java index 0cee3c255d1b0..74da744b48ff0 100644 --- a/raft/src/main/java/org/apache/kafka/raft/internals/DefaultRequestSender.java +++ b/raft/src/main/java/org/apache/kafka/raft/internals/DefaultRequestSender.java @@ -34,7 +34,7 @@ import java.util.OptionalLong; import java.util.function.Supplier; -public final class DefaultRequestSender implements RequestSender { +public final class DefaultRequestSender implements RequestSender { private final RequestManager requestManager; private final NetworkChannel channel; private final RaftMessageQueue messageQueue; diff --git a/raft/src/main/java/org/apache/kafka/snapshot/Snapshots.java b/raft/src/main/java/org/apache/kafka/snapshot/Snapshots.java index 113aecc9519e9..58edd11dee014 100644 --- a/raft/src/main/java/org/apache/kafka/snapshot/Snapshots.java +++ b/raft/src/main/java/org/apache/kafka/snapshot/Snapshots.java @@ -163,7 +163,7 @@ public static Path markForDelete(Path logDir, OffsetAndEpoch snapshotId) { public static long lastContainedLogTimestamp(RawSnapshotReader reader, LogContext logContext) { try (var bufferSupplier = new BufferSupplier.GrowableBufferSupplier(); RecordsSnapshotReader recordsSnapshotReader = - RecordsSnapshotReader.of( + RecordsSnapshotReader.of( reader, IdentitySerde.INSTANCE, bufferSupplier, diff --git a/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java b/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java index 1b3226064e56d..f13019adb49d8 100644 --- a/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java @@ -56,7 +56,7 @@ private CandidateState newCandidateState(VoterSet voters) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testSingleNodeQuorum(boolean withDirectoryId) { CandidateState state = newCandidateState(voterSetWithLocal(IntStream.empty(), withDirectoryId)); assertTrue(state.epochElection().isVoteGranted()); @@ -65,7 +65,7 @@ public void testSingleNodeQuorum(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testTwoNodeQuorumVoteRejected(boolean withDirectoryId) { ReplicaKey otherNode = replicaKey(1, withDirectoryId); CandidateState state = newCandidateState( @@ -80,7 +80,7 @@ public void testTwoNodeQuorumVoteRejected(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testTwoNodeQuorumVoteGranted(boolean withDirectoryId) { ReplicaKey otherNode = replicaKey(1, withDirectoryId); CandidateState state = newCandidateState( @@ -96,7 +96,7 @@ public void testTwoNodeQuorumVoteGranted(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testThreeNodeQuorumVoteGranted(boolean withDirectoryId) { ReplicaKey node1 = replicaKey(1, withDirectoryId); ReplicaKey node2 = replicaKey(2, withDirectoryId); @@ -117,7 +117,7 @@ public void testThreeNodeQuorumVoteGranted(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testThreeNodeQuorumVoteRejected(boolean withDirectoryId) { ReplicaKey node1 = replicaKey(1, withDirectoryId); ReplicaKey node2 = replicaKey(2, withDirectoryId); @@ -138,7 +138,7 @@ public void testThreeNodeQuorumVoteRejected(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotRejectVoteFromLocalId(boolean withDirectoryId) { int otherNodeId = 1; CandidateState state = newCandidateState( @@ -151,7 +151,7 @@ public void testCannotRejectVoteFromLocalId(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotChangeVoteGrantedToRejected(boolean withDirectoryId) { int otherNodeId = 1; CandidateState state = newCandidateState( @@ -163,7 +163,7 @@ public void testCannotChangeVoteGrantedToRejected(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotChangeVoteRejectedToGranted(boolean withDirectoryId) { int otherNodeId = 1; CandidateState state = newCandidateState( @@ -175,7 +175,7 @@ public void testCannotChangeVoteRejectedToGranted(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotGrantOrRejectNonVoters(boolean withDirectoryId) { int nonVoterId = 1; CandidateState state = newCandidateState(voterSetWithLocal(IntStream.empty(), withDirectoryId)); @@ -184,7 +184,7 @@ public void testCannotGrantOrRejectNonVoters(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testIdempotentGrant(boolean withDirectoryId) { int otherNodeId = 1; CandidateState state = newCandidateState( @@ -206,7 +206,7 @@ public void testIdempotentReject(boolean withDirectoryId) { } @ParameterizedTest - @CsvSource({ "true,true", "true,false", "false,true", "false,false" }) + @CsvSource({"true,true", "true,false", "false,true", "false,false"}) public void testGrantVote(boolean isLogUpToDate, boolean withDirectoryId) { ReplicaKey node0 = replicaKey(0, withDirectoryId); ReplicaKey node1 = replicaKey(1, withDirectoryId); diff --git a/raft/src/test/java/org/apache/kafka/raft/EpochElectionTest.java b/raft/src/test/java/org/apache/kafka/raft/EpochElectionTest.java index e14e4cb17ffe8..fb4c201d55387 100644 --- a/raft/src/test/java/org/apache/kafka/raft/EpochElectionTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/EpochElectionTest.java @@ -35,6 +35,7 @@ public class EpochElectionTest { ReplicaKey.of(voter1 + 1, Uuid.randomUuid()), ReplicaKey.of(voter1 + 2, Uuid.randomUuid()) ); + @Test public void testStateOnInitialization() { EpochElection epochElection = new EpochElection(voters); diff --git a/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java b/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java index 9571e9aa50571..4ce4a1eb6f0ee 100644 --- a/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java @@ -149,7 +149,7 @@ void testWriteReadUnknownLeader(KRaftVersion kraftVersion) throws IOException { } @Test - void testReload() throws IOException { + void testReload() throws IOException { final File stateFile = TestUtils.tempFile(); FileQuorumStateStore stateStore = new FileQuorumStateStore(stateFile); diff --git a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientClusterAuthTest.java b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientClusterAuthTest.java index 5fa6a0781a8b5..f580f458612eb 100644 --- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientClusterAuthTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientClusterAuthTest.java @@ -37,7 +37,7 @@ public class KafkaRaftClientClusterAuthTest { @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) void testClusterAuthorizationFailedInFetch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -65,7 +65,7 @@ void testClusterAuthorizationFailedInFetch(boolean withKip853Rpc) throws Excepti } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) void testClusterAuthorizationFailedInBeginQuorumEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -95,7 +95,7 @@ void testClusterAuthorizationFailedInBeginQuorumEpoch(boolean withKip853Rpc) thr } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) void testClusterAuthorizationFailedInVote(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -121,7 +121,7 @@ void testClusterAuthorizationFailedInVote(boolean withKip853Rpc) throws Exceptio } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) void testClusterAuthorizationFailedInEndQuorumEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; diff --git a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java index 9d00d7fe9f1c1..a3ea57b7bcf8d 100644 --- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java @@ -2410,7 +2410,7 @@ void testFollowerSendsUpdateVoterAfterElectionWithKraftVersion0(Errors updateVot void testKRaftUpgradeVersion() throws Exception { var local = replicaKey(randomReplicaId(), true); var voter1 = replicaKey(local.id() + 1, true); - var voter2 = replicaKey(local.id() + 2, true); + var voter2 = replicaKey(local.id() + 2, true); VoterSet startingVoters = VoterSetTest.voterSet( VoterSetTest.voterMap(IntStream.of(local.id(), voter1.id(), voter2.id()), false) @@ -2481,7 +2481,7 @@ void testKRaftUpgradeVersion() throws Exception { void testUpdateVoterAfterKRaftVersionUpgrade() throws Exception { var local = replicaKey(randomReplicaId(), true); var voter1 = replicaKey(local.id() + 1, true); - var voter2 = replicaKey(local.id() + 2, true); + var voter2 = replicaKey(local.id() + 2, true); VoterSet startingVoters = VoterSetTest.voterSet( VoterSetTest.voterMap(IntStream.of(local.id(), voter1.id(), voter2.id()), false) @@ -2588,7 +2588,7 @@ void testUpdateVoterAfterKRaftVersionUpgrade() throws Exception { void testInvalidKRaftUpgradeVersion() throws Exception { var local = replicaKey(randomReplicaId(), true); var voter1 = replicaKey(local.id() + 1, true); - var voter2 = replicaKey(local.id() + 2, true); + var voter2 = replicaKey(local.id() + 2, true); VoterSet startingVoters = VoterSetTest.voterSet( VoterSetTest.voterMap(IntStream.of(local.id(), voter1.id(), voter2.id()), false) diff --git a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java index 85278779b79c7..9bcccb626673e 100644 --- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java @@ -95,7 +95,7 @@ public void testLatestSnapshotIdMissing() throws Exception { } @ParameterizedTest - @CsvSource({ "false,false", "false,true", "true,false", "true,true" }) + @CsvSource({"false,false", "false,true", "true,false", "true,true"}) public void testLeaderListenerNotified(boolean entireLog, boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, false); @@ -133,7 +133,7 @@ public void testLeaderListenerNotified(boolean entireLog, boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerListenerNotified(boolean entireLog) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -187,7 +187,7 @@ public void testFollowerListenerNotified(boolean entireLog) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testSecondListenerNotified(boolean entireLog) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -244,7 +244,7 @@ public void testSecondListenerNotified(boolean entireLog) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testListenerRenotified(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -300,7 +300,7 @@ public void testListenerRenotified(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testLeaderImmediatelySendsSnapshotId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -334,7 +334,7 @@ public void testLeaderImmediatelySendsSnapshotId(boolean withKip853Rpc) throws E } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestOffsetLessThanLogStart(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -383,7 +383,7 @@ public void testFetchRequestOffsetLessThanLogStart(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestOffsetAtZero(boolean withKip853Rpc) throws Exception { // When the follower sends a FETCH request at offset 0, reply with snapshot id if it exists int localId = randomReplicaId(); @@ -432,7 +432,7 @@ public void testFetchRequestOffsetAtZero(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestWithLargerLastFetchedEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -473,7 +473,7 @@ public void testFetchRequestWithLargerLastFetchedEpoch(boolean withKip853Rpc) th } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestTruncateToLogStart(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -523,7 +523,7 @@ public void testFetchRequestTruncateToLogStart(boolean withKip853Rpc) throws Exc } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestAtLogStartOffsetWithValidEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -569,7 +569,7 @@ public void testFetchRequestAtLogStartOffsetWithValidEpoch(boolean withKip853Rpc } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestAtLogStartOffsetWithInvalidEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -621,7 +621,7 @@ public void testFetchRequestAtLogStartOffsetWithInvalidEpoch(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchRequestWithLastFetchedEpochLessThanOldestSnapshot( boolean withKip853Rpc ) throws Exception { @@ -674,7 +674,7 @@ public void testFetchRequestWithLastFetchedEpochLessThanOldestSnapshot( } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestMissingSnapshot(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -737,7 +737,7 @@ public void testFetchSnapshotRequestBootstrapSnapshot() throws Exception { } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestUnknownPartition(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -768,7 +768,7 @@ public void testFetchSnapshotRequestUnknownPartition(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestAsLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -819,7 +819,7 @@ public void testFetchSnapshotRequestAsLeader(boolean withKip853Rpc) throws Excep } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testLeaderShouldResignLeadershipIfNotGetFetchSnapshotRequestFromMajorityVoters( boolean withKip853Rpc ) throws Exception { @@ -914,7 +914,7 @@ public void testLeaderShouldResignLeadershipIfNotGetFetchSnapshotRequestFromMajo } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testPartialFetchSnapshotRequestAsLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -995,7 +995,7 @@ public void testPartialFetchSnapshotRequestAsLeader(boolean withKip853Rpc) throw } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestAsFollower(boolean withKip853Rpc) throws IOException { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1108,7 +1108,7 @@ public void testFetchSnapshotRequestWithPartialData() throws Exception { } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestWithInvalidPosition(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -1168,7 +1168,7 @@ public void testFetchSnapshotRequestWithInvalidPosition(boolean withKip853Rpc) t } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestWithOlderEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -1201,7 +1201,7 @@ public void testFetchSnapshotRequestWithOlderEpoch(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestWithNewerEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId, localId + 1); @@ -1234,7 +1234,7 @@ public void testFetchSnapshotRequestWithNewerEpoch(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchResponseWithInvalidSnapshotId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1297,7 +1297,7 @@ public void testFetchResponseWithInvalidSnapshotId(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchResponseWithSnapshotId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1378,7 +1378,7 @@ public void testFetchResponseWithSnapshotId(boolean withKip853Rpc) throws Except } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponsePartialData(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1491,7 +1491,7 @@ public void testFetchSnapshotResponsePartialData(boolean withKip853Rpc) throws E } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseMissingSnapshot(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1552,7 +1552,7 @@ public void testFetchSnapshotResponseMissingSnapshot(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseFromNewerEpochNotLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int firstLeaderId = localId + 1; @@ -1614,7 +1614,7 @@ public void testFetchSnapshotResponseFromNewerEpochNotLeader(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseFromNewerEpochLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1675,7 +1675,7 @@ public void testFetchSnapshotResponseFromNewerEpochLeader(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseFromOlderEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1746,7 +1746,7 @@ public void testFetchSnapshotResponseFromOlderEpoch(boolean withKip853Rpc) throw } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseWithInvalidId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1862,7 +1862,7 @@ public void testFetchSnapshotResponseWithInvalidId(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchSnapshotResponseToNotFollower(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -1936,7 +1936,7 @@ public void testFetchSnapshotResponseToNotFollower(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { false, true }) + @ValueSource(booleans = {false, true}) public void testFetchSnapshotRequestClusterIdValidation( boolean withKip853Rpc ) throws Exception { @@ -2014,7 +2014,7 @@ public void testFetchSnapshotRequestClusterIdValidation( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCreateSnapshotAsLeaderWithInvalidSnapshotId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2104,7 +2104,7 @@ public void testCreateSnapshotAsLeaderWithInvalidSnapshotId(boolean withKip853Rp } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCreateSnapshotAsFollowerWithInvalidSnapshotId(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; diff --git a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java index e4d879c64edf3..c1fe25791cff8 100644 --- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java @@ -87,7 +87,7 @@ public void testNodeDirectoryId() { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeSingleMemberQuorum(boolean withKip853Rpc) throws IOException { int localId = randomReplicaId(); RaftClientTestContext context = new RaftClientTestContext.Builder(localId, Set.of(localId)) @@ -98,7 +98,7 @@ public void testInitializeSingleMemberQuorum(boolean withKip853Rpc) throws IOExc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsLeaderFromStateStoreSingleMemberQuorum(boolean withKip853Rpc) throws Exception { // Start off as leader. We should still bump the epoch after initialization int localId = randomReplicaId(); @@ -118,7 +118,7 @@ public void testInitializeAsLeaderFromStateStoreSingleMemberQuorum(boolean withK } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testRejectVotesFromSameEpochAfterResigningLeadership(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -150,7 +150,7 @@ public void testRejectVotesFromSameEpochAfterResigningLeadership(boolean withKip } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testRejectVotesFromSameEpochAfterResigningCandidacy(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -182,7 +182,7 @@ public void testRejectVotesFromSameEpochAfterResigningCandidacy(boolean withKip8 } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testGrantVotesFromHigherEpochAfterResigningLeadership(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -219,7 +219,7 @@ public void testGrantVotesFromHigherEpochAfterResigningLeadership(boolean withKi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testGrantVotesFromHigherEpochAfterResigningCandidacy(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -256,7 +256,7 @@ public void testGrantVotesFromHigherEpochAfterResigningCandidacy(boolean withKip } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testGrantVotesWhenShuttingDown(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -298,7 +298,7 @@ public void testGrantVotesWhenShuttingDown(boolean withKip853Rpc) throws Excepti } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsResignedAndUnableToContactQuorum(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -336,7 +336,7 @@ public void testInitializeAsResignedAndUnableToContactQuorum(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsResignedLeaderFromStateStore(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -375,7 +375,7 @@ public void testInitializeAsResignedLeaderFromStateStore(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAppendFailedWithNotLeaderException(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -391,7 +391,7 @@ public void testAppendFailedWithNotLeaderException(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAppendFailedWithBufferAllocationException(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -418,7 +418,7 @@ public void testAppendFailedWithBufferAllocationException(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAppendFailedWithFencedEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -439,7 +439,7 @@ public void testAppendFailedWithFencedEpoch(boolean withKip853Rpc) throws Except } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAppendFailedWithRecordBatchTooLargeException(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -465,7 +465,7 @@ public void testAppendFailedWithRecordBatchTooLargeException(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumEpochRetriesWhileResigned(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int voter1 = localId + 1; @@ -511,7 +511,7 @@ public void testEndQuorumEpochRetriesWhileResigned(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testResignWillCompleteFetchPurgatory(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId = localId + 1; @@ -550,7 +550,7 @@ public void testResignWillCompleteFetchPurgatory(boolean withKip853Rpc) throws E } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testResignInOlderEpochIgnored(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -574,7 +574,7 @@ public void testResignInOlderEpochIgnored(boolean withKip853Rpc) throws Exceptio } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleBeginQuorumEpochAfterUserInitiatedResign( boolean withKip853Rpc ) throws Exception { @@ -604,7 +604,7 @@ public void testHandleBeginQuorumEpochAfterUserInitiatedResign( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testBeginQuorumEpochHeartbeat(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId1 = localId + 1; @@ -635,7 +635,7 @@ public void testBeginQuorumEpochHeartbeat(boolean withKip853Rpc) throws Exceptio } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testBeginQuorumShouldNotSendAfterFetchRequest(boolean withKip853Rpc) throws Exception { ReplicaKey localKey = replicaKey(randomReplicaId(), true); int remoteId1 = localKey.id() + 1; @@ -682,7 +682,7 @@ public void testBeginQuorumShouldNotSendAfterFetchRequest(boolean withKip853Rpc) @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderShouldResignLeadershipIfNotGetFetchRequestFromMajorityVoters(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int remoteId1 = localId + 1; @@ -742,7 +742,7 @@ public void testLeaderShouldResignLeadershipIfNotGetFetchRequestFromMajorityVote } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderShouldNotResignLeadershipIfOnlyOneVoters(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId); @@ -761,7 +761,7 @@ public void testLeaderShouldNotResignLeadershipIfOnlyOneVoters(boolean withKip85 } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testElectionTimeoutAfterUserInitiatedResign(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -819,7 +819,7 @@ public void testElectionTimeoutAfterUserInitiatedResign(boolean withKip853Rpc) t } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotResignWithLargerEpochThanCurrentEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -835,7 +835,7 @@ public void testCannotResignWithLargerEpochThanCurrentEpoch(boolean withKip853Rp } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotResignIfNotLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -852,7 +852,7 @@ public void testCannotResignIfNotLeader(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotResignIfObserver(boolean withKip853Rpc) throws Exception { int leaderId = randomReplicaId(); int otherNodeId = randomReplicaId() + 1; @@ -880,7 +880,7 @@ public void testCannotResignIfObserver(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsCandidateFromStateStore(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); // Need 3 node to require a 2-node majority @@ -900,7 +900,7 @@ public void testInitializeAsCandidateFromStateStore(boolean withKip853Rpc) throw } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsUnattachedAndBecomeLeader(boolean withKip853Rpc) throws Exception { final int localId = randomReplicaId(); final int otherNodeId = localId + 1; @@ -972,7 +972,7 @@ public void testInitializeAsUnattachedAndBecomeLeader(boolean withKip853Rpc) thr } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsCandidateAndBecomeLeaderQuorumOfThree(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); final int firstNodeId = localId + 1; @@ -1025,7 +1025,7 @@ public void testInitializeAsCandidateAndBecomeLeaderQuorumOfThree(boolean withKi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsOnlyVoterWithEmptyElectionState(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); RaftClientTestContext context = new RaftClientTestContext.Builder(localId, Set.of(localId)) @@ -1071,7 +1071,7 @@ public void testInitializeAsResignedAndOnlyVoter() throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleBeginQuorumRequest(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1135,7 +1135,7 @@ public void testHandleBeginQuorumRequestMoreEndpoints() throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleBeginQuorumResponse(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1154,7 +1154,7 @@ public void testHandleBeginQuorumResponse(boolean withKip853Rpc) throws Exceptio } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumIgnoredAsCandidateIfOlderEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1194,7 +1194,7 @@ public void testEndQuorumIgnoredAsCandidateIfOlderEpoch(boolean withKip853Rpc) t } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumIgnoredAsLeaderIfOlderEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int voter2 = localId + 1; @@ -1223,7 +1223,7 @@ public void testEndQuorumIgnoredAsLeaderIfOlderEpoch(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumStartsNewElectionImmediatelyIfFollowerUnattached( boolean withKip853Rpc ) throws Exception { @@ -1255,7 +1255,7 @@ public void testEndQuorumStartsNewElectionImmediatelyIfFollowerUnattached( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAccumulatorClearedAfterBecomingFollower(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1288,7 +1288,7 @@ public void testAccumulatorClearedAfterBecomingFollower(boolean withKip853Rpc) t } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAccumulatorClearedAfterBecomingVoted(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1322,7 +1322,7 @@ public void testAccumulatorClearedAfterBecomingVoted(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testAccumulatorClearedAfterBecomingUnattached(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1355,7 +1355,7 @@ public void testAccumulatorClearedAfterBecomingUnattached(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testChannelWokenUpIfLingerTimeoutReachedWithoutAppend(boolean withKip853Rpc) throws Exception { // This test verifies that the client will set its poll timeout accounting // for the lingerMs of a pending append @@ -1391,7 +1391,7 @@ public void testChannelWokenUpIfLingerTimeoutReachedWithoutAppend(boolean withKi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testChannelWokenUpIfLingerTimeoutReachedDuringAppend(boolean withKip853Rpc) throws Exception { // This test verifies that the client will get woken up immediately // if the linger timeout has expired during an append @@ -1428,7 +1428,7 @@ public void testChannelWokenUpIfLingerTimeoutReachedDuringAppend(boolean withKip } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleEndQuorumRequest(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int oldLeaderId = localId + 1; @@ -1457,7 +1457,7 @@ public void testHandleEndQuorumRequest(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleEndQuorumRequestWithLowerPriorityToBecomeLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey oldLeaderKey = replicaKey(localId + 1, withKip853Rpc); @@ -1500,7 +1500,7 @@ public void testHandleEndQuorumRequestWithLowerPriorityToBecomeLeader(boolean wi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testVoteRequestTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1542,7 +1542,7 @@ public void testVoteRequestTimeout(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleValidVoteRequestAsFollower(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1563,7 +1563,7 @@ public void testHandleValidVoteRequestAsFollower(boolean withKip853Rpc) throws E } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleVoteRequestAsFollowerWithElectedLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1585,7 +1585,7 @@ public void testHandleVoteRequestAsFollowerWithElectedLeader(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleVoteRequestAsFollowerWithVotedCandidate(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1606,7 +1606,7 @@ public void testHandleVoteRequestAsFollowerWithVotedCandidate(boolean withKip853 } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleVoteRequestAsProspective(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1634,7 +1634,7 @@ public void testHandleVoteRequestAsProspective(boolean withKip853Rpc) throws Exc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleVoteRequestAsProspectiveWithVotedCandidate(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1661,7 +1661,7 @@ public void testHandleVoteRequestAsProspectiveWithVotedCandidate(boolean withKip } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleInvalidVoteRequestWithOlderEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1681,7 +1681,7 @@ public void testHandleInvalidVoteRequestWithOlderEpoch(boolean withKip853Rpc) th } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleVoteRequestAsObserver(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 2; @@ -1702,7 +1702,7 @@ public void testHandleVoteRequestAsObserver(boolean withKip853Rpc) throws Except } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderIgnoreVoteRequestOnSameEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1725,7 +1725,7 @@ public void testLeaderIgnoreVoteRequestOnSameEpoch(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testListenerCommitCallbackAfterLeaderWrite(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1771,7 +1771,7 @@ public void testListenerCommitCallbackAfterLeaderWrite(boolean withKip853Rpc) th } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderImmediatelySendsDivergingEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1803,7 +1803,7 @@ public void testLeaderImmediatelySendsDivergingEpoch(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCandidateIgnoreVoteRequestOnSameEpoch(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -1824,7 +1824,7 @@ public void testCandidateIgnoreVoteRequestOnSameEpoch(boolean withKip853Rpc) thr } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCandidateWaitsRestOfElectionTimeoutAfterElectionLoss(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1883,7 +1883,7 @@ public void testCandidateWaitsRestOfElectionTimeoutAfterElectionLoss(boolean wit } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCandidateElectionTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1924,7 +1924,7 @@ public void testCandidateElectionTimeout(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsFollowerEmptyLog(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1944,7 +1944,7 @@ public void testInitializeAsFollowerEmptyLog(boolean withKip853Rpc) throws Excep } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeAsFollowerNonEmptyLog(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1965,7 +1965,7 @@ public void testInitializeAsFollowerNonEmptyLog(boolean withKip853Rpc) throws Ex } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testVoterBecomeProspectiveAfterFetchTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -1991,7 +1991,7 @@ public void testVoterBecomeProspectiveAfterFetchTimeout(boolean withKip853Rpc) t } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerAsObserverDoesNotBecomeProspectiveAfterFetchTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2021,7 +2021,7 @@ public void testFollowerAsObserverDoesNotBecomeProspectiveAfterFetchTimeout(bool } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testUnattachedAsObserverDoesNotBecomeProspectiveAfterElectionTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2058,7 +2058,7 @@ public void testUnattachedAsObserverDoesNotBecomeProspectiveAfterElectionTimeout } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testUnattachedAsVoterCanBecomeFollowerAfterFindingLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2089,7 +2089,7 @@ public void testUnattachedAsVoterCanBecomeFollowerAfterFindingLeader(boolean wit } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInitializeObserverNoPreviousState(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -2117,7 +2117,7 @@ public void testInitializeObserverNoPreviousState(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverQuorumDiscoveryFailure(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -2163,7 +2163,7 @@ public void testObserverQuorumDiscoveryFailure(boolean withKip853Rpc) throws Exc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverUnattachedSendFetchToBootstrapServers(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -2199,7 +2199,7 @@ public void testObserverUnattachedSendFetchToBootstrapServers(boolean withKip853 } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverFollowerSendFetchToBestNode(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -2241,7 +2241,7 @@ public void testObserverFollowerSendFetchToBestNode(boolean withKip853Rpc) throw } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverHandleRetryFetchToBootstrapServer(boolean withKip853Rpc) throws Exception { // This test tries to check that KRaft is able to handle a retrying Fetch request to // a bootstrap server after a Fetch request to the leader. @@ -2315,7 +2315,7 @@ public void testObserverHandleRetryFetchToBootstrapServer(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverHandleRetryFetchToLeader(boolean withKip853Rpc) throws Exception { // This test tries to check that KRaft is able to handle a retrying Fetch request to // the leader after a Fetch request to the bootstrap server. @@ -2374,7 +2374,7 @@ public void testObserverHandleRetryFetchToLeader(boolean withKip853Rpc) throws E } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInvalidFetchRequest(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2450,7 +2450,7 @@ public void testLeaderStateUpdateWithDifferentFetchRequestVersions(short version } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchRequestClusterIdValidation(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2492,7 +2492,7 @@ public void testFetchRequestClusterIdValidation(boolean withKip853Rpc) throws Ex } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testVoteRequestClusterIdValidation(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2624,7 +2624,7 @@ public void testInvalidVoterReplicaBeginQuorumEpochRequest() throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testBeginQuorumEpochRequestClusterIdValidation(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2660,7 +2660,7 @@ public void testBeginQuorumEpochRequestClusterIdValidation(boolean withKip853Rpc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumEpochRequestClusterIdValidation(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2696,7 +2696,7 @@ public void testEndQuorumEpochRequestClusterIdValidation(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderAcceptVoteFromObserver(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2721,7 +2721,7 @@ public void testLeaderAcceptVoteFromObserver(boolean withKip853Rpc) throws Excep } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testInvalidVoteRequest(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2766,7 +2766,7 @@ public void testInvalidVoteRequest(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testPurgatoryFetchTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2794,7 +2794,7 @@ public void testPurgatoryFetchTimeout(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testPurgatoryFetchSatisfiedByWrite(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -2824,7 +2824,7 @@ public void testPurgatoryFetchSatisfiedByWrite(boolean withKip853Rpc) throws Exc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testPurgatoryFetchCompletedByFollowerTransition(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey voterKey2 = replicaKey(localId + 1, withKip853Rpc); @@ -2860,7 +2860,7 @@ public void testPurgatoryFetchCompletedByFollowerTransition(boolean withKip853Rp } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchResponseIgnoredAfterBecomingProspective(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -2897,7 +2897,7 @@ public void testFetchResponseIgnoredAfterBecomingProspective(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchResponseIgnoredAfterBecomingFollowerOfDifferentLeader( boolean withKip853Rpc ) throws Exception { @@ -2938,7 +2938,7 @@ public void testFetchResponseIgnoredAfterBecomingFollowerOfDifferentLeader( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testVoteResponseIgnoredAfterBecomingFollower(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int voter2 = localId + 1; @@ -2992,7 +2992,7 @@ public void testVoteResponseIgnoredAfterBecomingFollower(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerLeaderRediscoveryAfterBrokerNotAvailableError(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -3031,7 +3031,7 @@ public void testFollowerLeaderRediscoveryAfterBrokerNotAvailableError(boolean wi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerLeaderRediscoveryAfterRequestTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -3066,7 +3066,7 @@ public void testFollowerLeaderRediscoveryAfterRequestTimeout(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverLeaderRediscoveryAfterBrokerNotAvailableError(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -3115,7 +3115,7 @@ public void testObserverLeaderRediscoveryAfterBrokerNotAvailableError(boolean wi } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverLeaderRediscoveryAfterRequestTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int leaderId = localId + 1; @@ -3160,7 +3160,7 @@ public void testObserverLeaderRediscoveryAfterRequestTimeout(boolean withKip853R } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderGracefulShutdown(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -3207,7 +3207,7 @@ public void testLeaderGracefulShutdown(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEndQuorumEpochSentBasedOnFetchOffset(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey closeFollower = replicaKey(localId + 2, withKip853Rpc); @@ -3258,7 +3258,7 @@ public void testEndQuorumEpochSentBasedOnFetchOffset(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testDescribeQuorumNonLeader(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey voter2 = replicaKey(localId + 1, withKip853Rpc); @@ -3289,7 +3289,7 @@ public void testDescribeQuorumNonLeader(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testDescribeQuorumWithOnlyStaticVoters(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey local = replicaKey(localId, true); @@ -3324,7 +3324,7 @@ public void testDescribeQuorumWithOnlyStaticVoters(boolean withKip853Rpc) throws } @ParameterizedTest - @CsvSource({ "true, true", "true, false", "false, false" }) + @CsvSource({"true, true", "true, false", "false, false"}) public void testDescribeQuorumWithFollowers(boolean withKip853Rpc, boolean withBootstrapSnapshot) throws Exception { int localId = randomReplicaId(); int followerId1 = localId + 1; @@ -3436,7 +3436,7 @@ public void testDescribeQuorumWithFollowers(boolean withKip853Rpc, boolean withB } @ParameterizedTest - @CsvSource({ "true, true", "true, false", "false, false" }) + @CsvSource({"true, true", "true, false", "false, false"}) public void testDescribeQuorumWithObserver(boolean withKip853Rpc, boolean withBootstrapSnapshot) throws Exception { int localId = randomReplicaId(); int followerId = localId + 1; @@ -3578,7 +3578,7 @@ public void testDescribeQuorumWithObserver(boolean withKip853Rpc, boolean withBo } @ParameterizedTest - @CsvSource({ "true, true", "true, false", "false, false" }) + @CsvSource({"true, true", "true, false", "false, false"}) public void testDescribeQuorumNonMonotonicFollowerFetch(boolean withKip853Rpc, boolean withBootstrapSnapshot) throws Exception { int localId = randomReplicaId(); ReplicaKey local = replicaKey(localId, withBootstrapSnapshot); @@ -3653,7 +3653,7 @@ public void testDescribeQuorumNonMonotonicFollowerFetch(boolean withKip853Rpc, b } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testStaticVotersIgnoredWithBootstrapSnapshot(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey local = replicaKey(localId, true); @@ -3698,7 +3698,7 @@ public void testStaticVotersIgnoredWithBootstrapSnapshot(boolean withKip853Rpc) @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderGracefulShutdownTimeout(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -3736,7 +3736,7 @@ public void testLeaderGracefulShutdownTimeout(boolean withKip853Rpc) throws Exce } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerGracefulShutdown(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -3763,7 +3763,7 @@ public void testFollowerGracefulShutdown(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverGracefulShutdown(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int voter1 = localId + 1; @@ -3790,7 +3790,7 @@ public void testObserverGracefulShutdown(boolean withKip853Rpc) throws Exception } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testGracefulShutdownSingleMemberQuorum(boolean withKip853Rpc) throws IOException { int localId = randomReplicaId(); RaftClientTestContext context = new RaftClientTestContext.Builder(localId, Set.of(localId)) @@ -3808,7 +3808,7 @@ public void testGracefulShutdownSingleMemberQuorum(boolean withKip853Rpc) throws } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerReplication(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -3838,7 +3838,7 @@ public void testFollowerReplication(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @CsvSource({ "true, true", "true, false", "false, true", "false, false" }) + @CsvSource({"true, true", "true, false", "false, true", "false, false"}) public void testObserverReplication(boolean withKip853Rpc, boolean canBecomeVoter) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -3870,7 +3870,7 @@ public void testObserverReplication(boolean withKip853Rpc, boolean canBecomeVote } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testEmptyRecordSetInFetchResponse(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -3937,7 +3937,7 @@ public void testEmptyRecordSetInFetchResponse(boolean withKip853Rpc) throws Exce } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFetchShouldBeTreatedAsLeaderAcknowledgement(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -3973,7 +3973,7 @@ public void testFetchShouldBeTreatedAsLeaderAcknowledgement(boolean withKip853Rp } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLeaderAppendSingleMemberQuorum(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); Set voters = Set.of(localId); @@ -4050,7 +4050,7 @@ public void testLeaderAppendSingleMemberQuorum(boolean withKip853Rpc) throws Exc } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testFollowerLogReconciliation(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -4097,7 +4097,7 @@ public void testFollowerLogReconciliation(boolean withKip853Rpc) throws Exceptio } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testMetrics(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int epoch = 1; @@ -4141,7 +4141,7 @@ public void testMetrics(boolean withKip853Rpc) throws Exception { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleLeaderChangeFiresAfterListenerReachesEpochStartOffsetOnEmptyLog( boolean withKip853Rpc ) throws Exception { @@ -4188,7 +4188,7 @@ public void testHandleLeaderChangeFiresAfterListenerReachesEpochStartOffsetOnEmp } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleLeaderChangeFiresAfterListenerReachesEpochStartOffset( boolean withKip853Rpc ) throws Exception { @@ -4257,7 +4257,7 @@ public void testHandleLeaderChangeFiresAfterListenerReachesEpochStartOffset( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testLateRegisteredListenerCatchesUp(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); ReplicaKey otherNodeKey = replicaKey(localId + 1, withKip853Rpc); @@ -4300,7 +4300,7 @@ public void testLateRegisteredListenerCatchesUp(boolean withKip853Rpc) throws Ex } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testReregistrationChangesListenerContext(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -4344,7 +4344,7 @@ public void testReregistrationChangesListenerContext(boolean withKip853Rpc) thro } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleCommitCallbackFiresAfterFollowerHighWatermarkAdvances(boolean withKip853Rpc) throws Exception { int localId = randomReplicaId(); int otherNodeId = localId + 1; @@ -4403,7 +4403,7 @@ public void testHandleCommitCallbackFiresAfterFollowerHighWatermarkAdvances(bool } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleCommitCallbackFiresInVotedState(boolean withKip853Rpc) throws Exception { // This test verifies that the state machine can still catch up even while // an election is in progress as long as the high watermark is known. @@ -4450,7 +4450,7 @@ public void testHandleCommitCallbackFiresInVotedState(boolean withKip853Rpc) thr } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleCommitCallbackFiresInCandidateState(boolean withKip853Rpc) throws Exception { // This test verifies that the state machine can still catch up even while // an election is in progress as long as the high watermark is known. @@ -4505,7 +4505,7 @@ public void testHandleCommitCallbackFiresInCandidateState(boolean withKip853Rpc) } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleLeaderChangeFiresAfterUnattachedRegistration( boolean withKip853Rpc ) throws Exception { @@ -4543,7 +4543,7 @@ public void testHandleLeaderChangeFiresAfterUnattachedRegistration( } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleLeaderChangeFiresAfterFollowerRegistration(boolean withKip853Rpc) throws Exception { // When registering a listener while the replica is a follower, it should get notified with // the current leader and epoch @@ -4569,7 +4569,7 @@ public void testHandleLeaderChangeFiresAfterFollowerRegistration(boolean withKip } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testHandleLeaderChangeFiresAfterResignRegistration(boolean withKip853Rpc) throws Exception { // When registering a listener while the replica is resigned, it should not get notified with // the current leader and epoch @@ -4599,7 +4599,7 @@ public void testHandleLeaderChangeFiresAfterResignRegistration(boolean withKip85 } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testObserverFetchWithNoLocalId(boolean withKip853Rpc) throws Exception { // When no `localId` is defined, the client will behave as an observer. // This is designed for tooling/debugging use cases. diff --git a/raft/src/test/java/org/apache/kafka/raft/LeaderAndEpochTest.java b/raft/src/test/java/org/apache/kafka/raft/LeaderAndEpochTest.java index 89bd907289444..4efab5456c521 100644 --- a/raft/src/test/java/org/apache/kafka/raft/LeaderAndEpochTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/LeaderAndEpochTest.java @@ -29,7 +29,7 @@ class LeaderAndEpochTest { @Test void testConstructorWithValidLeaderId() { LeaderAndEpoch leaderAndEpoch = new LeaderAndEpoch(OptionalInt.of(1), 5); - + assertEquals(OptionalInt.of(1), leaderAndEpoch.leaderId()); assertEquals(5, leaderAndEpoch.epoch()); } @@ -37,7 +37,7 @@ void testConstructorWithValidLeaderId() { @Test void testConstructorWithEmptyLeaderId() { LeaderAndEpoch leaderAndEpoch = new LeaderAndEpoch(OptionalInt.empty(), 3); - + assertEquals(OptionalInt.empty(), leaderAndEpoch.leaderId()); assertEquals(3, leaderAndEpoch.epoch()); } @@ -45,7 +45,7 @@ void testConstructorWithEmptyLeaderId() { @Test void testConstructorThrowsExceptionWhenLeaderIdIsNull() { Executable executable = () -> new LeaderAndEpoch(null, 1); - + assertThrows(NullPointerException.class, executable); } } diff --git a/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java b/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java index 5b4ed99fa97d8..69e4f4acb8315 100644 --- a/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java @@ -302,7 +302,7 @@ public void testHighWatermarkDoesIncreaseFromNewVoter() { ReplicaKey nodeKey1 = ReplicaKey.of(1, Uuid.randomUuid()); ReplicaKey nodeKey2 = ReplicaKey.of(2, Uuid.randomUuid()); - VoterSet originalVoters = localWithRemoteVoterSet(Stream.of(nodeKey1), true); + VoterSet originalVoters = localWithRemoteVoterSet(Stream.of(nodeKey1), true); LeaderState state = newLeaderState( originalVoters, 5L, @@ -545,7 +545,7 @@ public void testCheckQuorumAfterVoterSetChanges() { ReplicaKey nodeKey2 = ReplicaKey.of(2, Uuid.randomUuid()); ReplicaKey nodeKey3 = ReplicaKey.of(3, Uuid.randomUuid()); - VoterSet originalVoters = localWithRemoteVoterSet(Stream.of(nodeKey1, nodeKey2), true); + VoterSet originalVoters = localWithRemoteVoterSet(Stream.of(nodeKey1, nodeKey2), true); LeaderState state = newLeaderState( originalVoters, 0L, diff --git a/raft/src/test/java/org/apache/kafka/raft/MockLogTest.java b/raft/src/test/java/org/apache/kafka/raft/MockLogTest.java index c3d6ff29186d2..68c0c271fc420 100644 --- a/raft/src/test/java/org/apache/kafka/raft/MockLogTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/MockLogTest.java @@ -199,7 +199,7 @@ public void testUnexpectedAppendOffset() { public void testAppendControlRecord() { final long initialOffset = 0; final int currentEpoch = 3; - LeaderChangeMessage messageData = new LeaderChangeMessage().setLeaderId(0); + LeaderChangeMessage messageData = new LeaderChangeMessage().setLeaderId(0); ByteBuffer buffer = ByteBuffer.allocate(256); log.appendAsLeader( MemoryRecords.withLeaderChangeMessage( diff --git a/raft/src/test/java/org/apache/kafka/raft/ProspectiveStateTest.java b/raft/src/test/java/org/apache/kafka/raft/ProspectiveStateTest.java index 2f995cf8f535b..d33369ea38644 100644 --- a/raft/src/test/java/org/apache/kafka/raft/ProspectiveStateTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/ProspectiveStateTest.java @@ -92,7 +92,7 @@ private ProspectiveState newProspectiveState(VoterSet voters) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testSingleNodeQuorum(boolean withDirectoryId) { ProspectiveState state = newProspectiveState(voterSetWithLocal(IntStream.empty(), withDirectoryId)); assertTrue(state.epochElection().isVoteGranted()); @@ -101,7 +101,7 @@ public void testSingleNodeQuorum(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testTwoNodeQuorumVoteRejected(boolean withDirectoryId) { ReplicaKey otherNode = replicaKey(1, withDirectoryId); ProspectiveState state = newProspectiveState( @@ -116,7 +116,7 @@ public void testTwoNodeQuorumVoteRejected(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testTwoNodeQuorumVoteGranted(boolean withDirectoryId) { ReplicaKey otherNode = replicaKey(1, withDirectoryId); ProspectiveState state = newProspectiveState( @@ -132,7 +132,7 @@ public void testTwoNodeQuorumVoteGranted(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testThreeNodeQuorumVoteGranted(boolean withDirectoryId) { ReplicaKey node1 = replicaKey(1, withDirectoryId); ReplicaKey node2 = replicaKey(2, withDirectoryId); @@ -153,7 +153,7 @@ public void testThreeNodeQuorumVoteGranted(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testThreeNodeQuorumVoteRejected(boolean withDirectoryId) { ReplicaKey node1 = replicaKey(1, withDirectoryId); ReplicaKey node2 = replicaKey(2, withDirectoryId); @@ -174,7 +174,7 @@ public void testThreeNodeQuorumVoteRejected(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCanChangePreVote(boolean withDirectoryId) { int voter1 = 1; int voter2 = 2; @@ -194,7 +194,7 @@ public void testCanChangePreVote(boolean withDirectoryId) { @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testCannotGrantOrRejectNonVoters(boolean withDirectoryId) { int nonVoterId = 1; ProspectiveState state = newProspectiveState(voterSetWithLocal(IntStream.empty(), withDirectoryId)); @@ -203,7 +203,7 @@ public void testCannotGrantOrRejectNonVoters(boolean withDirectoryId) { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) public void testConsecutiveGrant(boolean withDirectoryId) { int otherNodeId = 1; ProspectiveState state = newProspectiveState( @@ -225,7 +225,7 @@ public void testConsecutiveReject(boolean withDirectoryId) { } @ParameterizedTest - @CsvSource({ "true,true", "true,false", "false,true", "false,false" }) + @CsvSource({"true,true", "true,false", "false,true", "false,false"}) public void testGrantVote(boolean isLogUpToDate, boolean withDirectoryId) { ReplicaKey node0 = replicaKey(0, withDirectoryId); ReplicaKey node1 = replicaKey(1, withDirectoryId); @@ -245,7 +245,7 @@ public void testGrantVote(boolean isLogUpToDate, boolean withDirectoryId) { } @ParameterizedTest - @CsvSource({ "true,true", "true,false", "false,true", "false,false" }) + @CsvSource({"true,true", "true,false", "false,true", "false,false"}) public void testGrantVoteWithVotedKey(boolean isLogUpToDate, boolean withDirectoryId) { ReplicaKey node0 = replicaKey(0, withDirectoryId); ReplicaKey node1 = replicaKey(1, withDirectoryId); @@ -267,7 +267,7 @@ public void testGrantVoteWithVotedKey(boolean isLogUpToDate, boolean withDirecto } @ParameterizedTest - @CsvSource({ "true,true", "true,false", "false,true", "false,false" }) + @CsvSource({"true,true", "true,false", "false,true", "false,false"}) public void testGrantVoteWithLeader(boolean isLogUpToDate, boolean withDirectoryId) { ReplicaKey node0 = replicaKey(0, withDirectoryId); ReplicaKey node1 = replicaKey(1, withDirectoryId); diff --git a/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java b/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java index 76d942d2bd98b..fc0460f3bcaee 100644 --- a/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java @@ -2225,7 +2225,7 @@ public void testCandidateToCandidate(KRaftVersion kraftVersion) { @ParameterizedTest @EnumSource(value = KRaftVersion.class) - public void testCandidateToLeader(KRaftVersion kraftVersion) { + public void testCandidateToLeader(KRaftVersion kraftVersion) { VoterSet voters = localStandaloneVoterSet(); assertEquals(Optional.empty(), store.readElectionState()); diff --git a/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java b/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java index 2b01c15325471..60a6e06c2d05c 100644 --- a/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java +++ b/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java @@ -940,8 +940,8 @@ List collectVoteRequests( } private ApiMessage roundTripApiMessage(ApiMessage message, short version) { - ObjectSerializationCache cache = new ObjectSerializationCache(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(message.size(cache, version)); + ObjectSerializationCache cache = new ObjectSerializationCache(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(message.size(cache, version)); // Encode the message to a byte array with the given version DataOutputStreamWritable writer = new DataOutputStreamWritable(new DataOutputStream(buffer)); @@ -2434,7 +2434,7 @@ boolean isPreVoteSupported() { boolean isHwmInFetchSupported() { return isAtLeast(KIP_1166_PROTOCOL); } - + boolean isAutoJoinSupported() { return isAtLeast(KIP_1186_PROTOCOL); } diff --git a/raft/src/test/java/org/apache/kafka/raft/RaftEventSimulationTest.java b/raft/src/test/java/org/apache/kafka/raft/RaftEventSimulationTest.java index 8f1cabcf1b59c..2faad1f467e33 100644 --- a/raft/src/test/java/org/apache/kafka/raft/RaftEventSimulationTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/RaftEventSimulationTest.java @@ -1221,7 +1221,7 @@ public void verify() { for (Map.Entry nodeEntry : cluster.nodes.entrySet()) { int nodeId = nodeEntry.getKey(); RaftLog log = nodeEntry.getValue().log; - log.earliestSnapshotId().ifPresent(earliestSnapshotId -> { + log.earliestSnapshotId().ifPresent(earliestSnapshotId -> { long logStartOffset = log.startOffset(); ValidOffsetAndEpoch validateOffsetAndEpoch = log.validateOffsetAndEpoch( earliestSnapshotId.offset(), diff --git a/raft/src/test/java/org/apache/kafka/raft/RaftUtilTest.java b/raft/src/test/java/org/apache/kafka/raft/RaftUtilTest.java index 11c520fc1beb2..a9a8e6d20fb64 100644 --- a/raft/src/test/java/org/apache/kafka/raft/RaftUtilTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/RaftUtilTest.java @@ -107,38 +107,38 @@ private static Stream singletonFetchRequestTestCases() { return Stream.of( Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 4, (short) -1, "{\"replicaId\":-1,\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0," + - "\"topics\":[{\"topic\":\"topic\",\"partitions\":[{\"partition\":2,\"fetchOffset\":333," + - "\"partitionMaxBytes\":10}]}]}")), + "\"topics\":[{\"topic\":\"topic\",\"partitions\":[{\"partition\":2,\"fetchOffset\":333," + + "\"partitionMaxBytes\":10}]}]}")), Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 5, (short) -1, "{\"replicaId\":-1,\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0," + - "\"topics\":[{\"topic\":\"topic\",\"partitions\":[{\"partition\":2,\"fetchOffset\":333," + - "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}]}")), + "\"topics\":[{\"topic\":\"topic\",\"partitions\":[{\"partition\":2,\"fetchOffset\":333," + + "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}]}")), Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 7, (short) -1, "{\"replicaId\":-1,\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0," + - "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + - "\"partition\":2,\"fetchOffset\":333,\"logStartOffset\":0,\"partitionMaxBytes\":10}]}]," + - "\"forgottenTopicsData\":[]}")), + "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + + "\"partition\":2,\"fetchOffset\":333,\"logStartOffset\":0,\"partitionMaxBytes\":10}]}]," + + "\"forgottenTopicsData\":[]}")), Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 11, (short) -1, "{\"replicaId\":-1,\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0," + - "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + - "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"logStartOffset\":0," + - "\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), + "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + + "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"logStartOffset\":0," + + "\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 12, (short) 10, "{\"replicaId\":-1,\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0," + - "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + - "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + - "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), + "\"sessionId\":0,\"sessionEpoch\":-1,\"topics\":[{\"topic\":\"topic\",\"partitions\":[{" + + "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + + "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), Arguments.of(new FetchRequestTestCase(Uuid.ZERO_UUID, (short) 15, (short) 10, "{\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0,\"sessionId\":0," + - "\"sessionEpoch\":-1,\"topics\":[{\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{" + - "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + - "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), + "\"sessionEpoch\":-1,\"topics\":[{\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{" + + "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + + "\"logStartOffset\":0,\"partitionMaxBytes\":10}]}],\"forgottenTopicsData\":[],\"rackId\":\"\"}")), Arguments.of(new FetchRequestTestCase(Uuid.ONE_UUID, (short) 17, (short) 10, "{\"maxWaitMs\":0,\"minBytes\":0,\"maxBytes\":2147483647,\"isolationLevel\":0,\"sessionId\":0," + - "\"sessionEpoch\":-1,\"topics\":[{\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{" + - "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + - "\"logStartOffset\":0,\"partitionMaxBytes\":10,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]," + - "\"forgottenTopicsData\":[],\"rackId\":\"\"}")) + "\"sessionEpoch\":-1,\"topics\":[{\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{" + + "\"partition\":2,\"currentLeaderEpoch\":5,\"fetchOffset\":333,\"lastFetchedEpoch\":10," + + "\"logStartOffset\":0,\"partitionMaxBytes\":10,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]," + + "\"forgottenTopicsData\":[],\"rackId\":\"\"}")) ); } @@ -146,39 +146,39 @@ private static Stream singletonFetchResponseTestCases() { return Stream.of( Arguments.of(new FetchResponseTestCase((short) 4, -1, "{\"throttleTimeMs\":0,\"responses\":[{\"topic\":\"topic\",\"partitions\":" + - "[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900," + - "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"records\":\"\"}]}]}")), + "[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900," + + "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 5, -1, "{\"throttleTimeMs\":0,\"responses\":[{\"topic\":\"topic\",\"partitions\":" + - "[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900," + - "\"logStartOffset\":10,\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}]," + - "\"records\":\"\"}]}]}")), + "[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900," + + "\"logStartOffset\":10,\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}]," + + "\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 7, -1, "{\"throttleTimeMs\":0,\"errorCode\":0,\"sessionId\":0,\"responses\":[{" + - "\"topic\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + - "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10," + - "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"records\":\"\"}]}]}")), + "\"topic\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + + "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10," + + "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 11, 21, "{\"throttleTimeMs\":0,\"errorCode\":0,\"sessionId\":0,\"responses\":[{\"topic\":\"topic\"" + - ",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000," + - "\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\":[{\"producerId\":1," + - "\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), + ",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0,\"highWatermark\":1000," + + "\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\":[{\"producerId\":1," + + "\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 12, 21, "{\"throttleTimeMs\":0,\"errorCode\":0,\"sessionId\":0,\"responses\":[{" + - "\"topic\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + - "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\"" + - ":[{\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), + "\"topic\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + + "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\"" + + ":[{\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 13, 21, "{\"throttleTimeMs\":0,\"errorCode\":0,\"sessionId\":0,\"responses\":[{" + - "\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + - "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\":[{" + - "\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), + "\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{\"partitionIndex\":1,\"errorCode\":0," + + "\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10,\"abortedTransactions\":[{" + + "\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21,\"records\":\"\"}]}]}")), Arguments.of(new FetchResponseTestCase((short) 16, 21, "{\"throttleTimeMs\":0,\"errorCode\":0,\"sessionId\":0,\"responses\":[{" + - "\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{\"partitionIndex\":1," + - "\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10," + - "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21," + - "\"records\":\"\"}]}]}")) + "\"topicId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"partitions\":[{\"partitionIndex\":1," + + "\"errorCode\":0,\"highWatermark\":1000,\"lastStableOffset\":900,\"logStartOffset\":10," + + "\"abortedTransactions\":[{\"producerId\":1,\"firstOffset\":10}],\"preferredReadReplica\":21," + + "\"records\":\"\"}]}]}")) ); } @@ -186,26 +186,26 @@ private static Stream voteRequestTestCases() { return Stream.of( Arguments.of((short) 0, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"topics\":[{\"topicName\":\"topic\"," + - "\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1,\"replicaId\":1," + - "\"lastOffsetEpoch\":1000,\"lastOffset\":1000}]}]}"), + "\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1,\"replicaId\":1," + + "\"lastOffsetEpoch\":1000,\"lastOffset\":1000}]}]}"), Arguments.of((short) 1, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"voterId\":2,\"topics\":[{" + - "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + - "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + - "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + - "\"lastOffset\":1000}]}]}"), + "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + + "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + + "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + + "\"lastOffset\":1000}]}]}"), Arguments.of((short) 2, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"voterId\":2,\"topics\":[{" + - "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + - "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + - "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + - "\"lastOffset\":1000,\"preVote\":true}]}]}"), + "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + + "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + + "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + + "\"lastOffset\":1000,\"preVote\":true}]}]}"), Arguments.of((short) 2, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"voterId\":2,\"topics\":[{" + - "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + - "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + - "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + - "\"lastOffset\":1000,\"preVote\":true}]}]}") + "\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1,\"replicaEpoch\":1," + + "\"replicaId\":1,\"replicaDirectoryId\":\"" + TEST_DIRECTORY_ID1 + "\"," + + "\"voterDirectoryId\":\"" + TEST_DIRECTORY_ID2 + "\",\"lastOffsetEpoch\":1000," + + "\"lastOffset\":1000,\"preVote\":true}]}]}") ); } @@ -213,15 +213,15 @@ private static Stream voteResponseTestCases() { return Stream.of( Arguments.of((short) 0, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]}"), + "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]}"), Arguments.of((short) 1, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]," + - "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}"), + "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]," + + "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}"), Arguments.of((short) 2, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]," + - "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") + "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"voteGranted\":true}]}]," + + "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") ); } @@ -229,13 +229,13 @@ private static Stream fetchSnapshotRequestTestCases() { return Stream.of( Arguments.of((short) 0, ReplicaKey.NO_DIRECTORY_ID, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"replicaId\":1,\"maxBytes\":1000,\"topics\":[{" + - "\"name\":\"topic\",\"partitions\":[{\"partition\":1,\"currentLeaderEpoch\":1," + - "\"snapshotId\":{\"endOffset\":10,\"epoch\":1},\"position\":10}]}]}"), + "\"name\":\"topic\",\"partitions\":[{\"partition\":1,\"currentLeaderEpoch\":1," + + "\"snapshotId\":{\"endOffset\":10,\"epoch\":1},\"position\":10}]}]}"), Arguments.of((short) 1, Uuid.ONE_UUID, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"replicaId\":1,\"maxBytes\":1000,\"topics\":[{" + - "\"name\":\"topic\",\"partitions\":[{\"partition\":1,\"currentLeaderEpoch\":1,\"snapshotId\":{" + - "\"endOffset\":10,\"epoch\":1},\"position\":10," + - "\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]}") + "\"name\":\"topic\",\"partitions\":[{\"partition\":1,\"currentLeaderEpoch\":1,\"snapshotId\":{" + + "\"endOffset\":10,\"epoch\":1},\"position\":10," + + "\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]}") ); } @@ -243,13 +243,13 @@ private static Stream fetchSnapshotResponseTestCases() { return Stream.of( Arguments.of((short) 0, "{\"throttleTimeMs\":0,\"errorCode\":0,\"topics\":[{\"name\":\"topic\",\"partitions\":[{" + - "\"index\":1,\"errorCode\":0,\"snapshotId\":{\"endOffset\":0,\"epoch\":0},\"size\":0," + - "\"position\":0,\"unalignedRecords\":\"\"}]}]}"), + "\"index\":1,\"errorCode\":0,\"snapshotId\":{\"endOffset\":0,\"epoch\":0},\"size\":0," + + "\"position\":0,\"unalignedRecords\":\"\"}]}]}"), Arguments.of((short) 1, "{\"throttleTimeMs\":0,\"errorCode\":0,\"topics\":[{\"name\":\"topic\",\"partitions\":[{\"index\":1," + - "\"errorCode\":0,\"snapshotId\":{\"endOffset\":0,\"epoch\":0},\"size\":0,\"position\":0," + - "\"unalignedRecords\":\"\"}]}],\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\"," + - "\"port\":9990}]}") + "\"errorCode\":0,\"snapshotId\":{\"endOffset\":0,\"epoch\":0},\"size\":0,\"position\":0," + + "\"unalignedRecords\":\"\"}]}],\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\"," + + "\"port\":9990}]}") ); } @@ -257,12 +257,12 @@ private static Stream beginQuorumEpochRequestTestCases() { return Stream.of( Arguments.of((short) 0, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), + "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), Arguments.of((short) 1, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"voterId\":1,\"topics\":[{\"topicName\":\"topic\"," + - "\"partitions\":[{\"partitionIndex\":1,\"voterDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"," + - "\"leaderId\":1,\"leaderEpoch\":1}]}],\"leaderEndpoints\":[{\"name\":\"PLAINTEXT\"," + - "\"host\":\"localhost\",\"port\":9990}]}") + "\"partitions\":[{\"partitionIndex\":1,\"voterDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"," + + "\"leaderId\":1,\"leaderEpoch\":1}]}],\"leaderEndpoints\":[{\"name\":\"PLAINTEXT\"," + + "\"host\":\"localhost\",\"port\":9990}]}") ); } @@ -270,11 +270,11 @@ private static Stream beginQuorumEpochResponseTestCases() { return Stream.of( Arguments.of((short) 0, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), + "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), Arguments.of((short) 1, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]," + - "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") + "\"partitionIndex\":0,\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]," + + "\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") ); } @@ -282,12 +282,12 @@ private static Stream endQuorumEpochRequestTestCases() { return Stream.of( Arguments.of((short) 0, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1,\"preferredSuccessors\":[1]}]}]}"), + "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1,\"preferredSuccessors\":[1]}]}]}"), Arguments.of((short) 1, "{\"clusterId\":\"I4ZmrWqfT2e-upky_4fdPA\",\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1,\"preferredCandidates\":[{" + - "\"candidateId\":1,\"candidateDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]}],\"" + - "leaderEndpoints\":[]}") + "\"partitionIndex\":1,\"leaderId\":1,\"leaderEpoch\":1,\"preferredCandidates\":[{" + + "\"candidateId\":1,\"candidateDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"}]}]}],\"" + + "leaderEndpoints\":[]}") ); } @@ -295,10 +295,10 @@ private static Stream endQuorumEpochResponseTestCases() { return Stream.of( Arguments.of((short) 0, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":0," + - "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), + "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}]}"), Arguments.of((short) 1, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":0," + - "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}],\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") + "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1}]}],\"nodeEndpoints\":[{\"nodeId\":1,\"host\":\"localhost\",\"port\":9990}]}") ); } @@ -317,20 +317,20 @@ private static Stream describeQuorumResponseTestCases() { return Stream.of( Arguments.of((short) 0, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1," + - "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"highWatermark\":1000,\"currentVoters\":[{" + - "\"replicaId\":1,\"logEndOffset\":-1}],\"observers\":[{\"replicaId\":1,\"logEndOffset\":-1}]}]}]}"), + "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"highWatermark\":1000,\"currentVoters\":[{" + + "\"replicaId\":1,\"logEndOffset\":-1}],\"observers\":[{\"replicaId\":1,\"logEndOffset\":-1}]}]}]}"), Arguments.of((short) 1, "{\"errorCode\":0,\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{\"partitionIndex\":1," + - "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"highWatermark\":1000,\"currentVoters\":" + - "[{\"replicaId\":1,\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]," + - "\"observers\":[{\"replicaId\":1,\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]}]}]}"), + "\"errorCode\":0,\"leaderId\":1,\"leaderEpoch\":1,\"highWatermark\":1000,\"currentVoters\":" + + "[{\"replicaId\":1,\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]," + + "\"observers\":[{\"replicaId\":1,\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]}]}]}"), Arguments.of((short) 2, "{\"errorCode\":0,\"errorMessage\":\"\",\"topics\":[{\"topicName\":\"topic\",\"partitions\":[{" + - "\"partitionIndex\":1,\"errorCode\":0,\"errorMessage\":\"\",\"leaderId\":1,\"leaderEpoch\":1," + - "\"highWatermark\":1000,\"currentVoters\":[{\"replicaId\":1,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"," + - "\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}],\"observers\":[{" + - "\"replicaId\":1,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"logEndOffset\":-1," + - "\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]}]}],\"nodes\":[{\"nodeId\":1,\"listeners\":[]}]}") + "\"partitionIndex\":1,\"errorCode\":0,\"errorMessage\":\"\",\"leaderId\":1,\"leaderEpoch\":1," + + "\"highWatermark\":1000,\"currentVoters\":[{\"replicaId\":1,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\"," + + "\"logEndOffset\":-1,\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}],\"observers\":[{" + + "\"replicaId\":1,\"replicaDirectoryId\":\"AAAAAAAAAAAAAAAAAAAAAQ\",\"logEndOffset\":-1," + + "\"lastFetchTimestamp\":0,\"lastCaughtUpTimestamp\":0}]}]}],\"nodes\":[{\"nodeId\":1,\"listeners\":[]}]}") ); } diff --git a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java index 5e9c68d2d053c..a182b9a249a14 100644 --- a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java @@ -60,7 +60,7 @@ private UnattachedState newUnattachedState( } @ParameterizedTest - @CsvSource({ "true,false", "false,true", "false,false" }) + @CsvSource({"true,false", "false,true", "false,false"}) public void testElectionStateAndElectionTimeout(boolean hasVotedKey, boolean hasLeaderId) { OptionalInt leader = hasLeaderId ? OptionalInt.of(3) : OptionalInt.empty(); Optional votedKey = hasVotedKey ? Optional.of(this.votedKey) : Optional.empty(); diff --git a/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java b/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java index bd30393310326..e6f4d8117dd6a 100644 --- a/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java @@ -235,7 +235,7 @@ void testVoterNodeIsVoterWithoutDirectoryId() { } @ParameterizedTest - @ValueSource(booleans = { true, false }) + @ValueSource(booleans = {true, false}) void testEndpoints(boolean withDirectoryId) { Map aVoterMap = voterMap(IntStream.of(1, 2, 3), withDirectoryId); VoterSet voterSet = VoterSet.fromMap(new HashMap<>(aVoterMap)); diff --git a/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftLogTest.java b/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftLogTest.java index ba3f39cdeb0fa..7fd5088dbe76f 100644 --- a/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftLogTest.java +++ b/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftLogTest.java @@ -1210,6 +1210,7 @@ private static class ByteArraySerde implements RecordSerde { public int recordSize(byte[] data, ObjectSerializationCache serializationCache) { return data.length; } + @Override public void write(byte[] data, ObjectSerializationCache serializationCache, Writable out) { out.writeByteArray(data); diff --git a/raft/src/test/java/org/apache/kafka/snapshot/FileRawSnapshotTest.java b/raft/src/test/java/org/apache/kafka/snapshot/FileRawSnapshotTest.java index 73d88d1d09fdd..1ec1ea157924a 100644 --- a/raft/src/test/java/org/apache/kafka/snapshot/FileRawSnapshotTest.java +++ b/raft/src/test/java/org/apache/kafka/snapshot/FileRawSnapshotTest.java @@ -342,7 +342,7 @@ private static byte[] randomBytes(int size) { } private static UnalignedMemoryRecords buildRecords(ByteBuffer... buffers) { - MemoryRecords records = MemoryRecords.withRecords( + MemoryRecords records = MemoryRecords.withRecords( Compression.NONE, Arrays.stream(buffers).map(SimpleRecord::new).toArray(SimpleRecord[]::new) ); diff --git a/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesEnsemble.java b/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesEnsemble.java index 73cd33ccf58c0..a0d46780032c2 100644 --- a/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesEnsemble.java +++ b/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesEnsemble.java @@ -115,7 +115,7 @@ public Loader addMetadataLogDir(String metadataLogDir) { return this; } - public MetaPropertiesEnsemble load() throws IOException { + public MetaPropertiesEnsemble load() throws IOException { if (logDirs.isEmpty()) { throw new RuntimeException("You must specify at least one log directory."); } diff --git a/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesVersion.java b/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesVersion.java index 0cceb7852a451..a26456e6c2683 100644 --- a/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesVersion.java +++ b/server-common/src/main/java/org/apache/kafka/metadata/properties/MetaPropertiesVersion.java @@ -39,7 +39,7 @@ public static MetaPropertiesVersion fromNumberString(String numberString) { int number; try { number = Integer.parseInt(numberString.trim()); - } catch (NumberFormatException e) { + } catch (NumberFormatException e) { throw new RuntimeException("Invalid meta.properties version string '" + numberString + "'"); } diff --git a/server-common/src/main/java/org/apache/kafka/queue/EventQueue.java b/server-common/src/main/java/org/apache/kafka/queue/EventQueue.java index 8fa150e6a53ca..070bc25a97d99 100644 --- a/server-common/src/main/java/org/apache/kafka/queue/EventQueue.java +++ b/server-common/src/main/java/org/apache/kafka/queue/EventQueue.java @@ -44,9 +44,9 @@ default void handleException(Throwable e) {} class NoDeadlineFunction implements UnaryOperator { public static final NoDeadlineFunction INSTANCE = new NoDeadlineFunction(); - + private NoDeadlineFunction() { - + } @Override @@ -89,11 +89,11 @@ public OptionalLong apply(OptionalLong prevDeadlineNs) { class VoidEvent implements Event { public static final VoidEvent INSTANCE = new VoidEvent(); - + private VoidEvent() { - + } - + @Override public void run() throws Exception { } diff --git a/server-common/src/main/java/org/apache/kafka/server/common/DirectoryEventHandler.java b/server-common/src/main/java/org/apache/kafka/server/common/DirectoryEventHandler.java index 987d27bd5d2d8..a72cb175c6ecb 100644 --- a/server-common/src/main/java/org/apache/kafka/server/common/DirectoryEventHandler.java +++ b/server-common/src/main/java/org/apache/kafka/server/common/DirectoryEventHandler.java @@ -28,8 +28,11 @@ public interface DirectoryEventHandler { */ DirectoryEventHandler NOOP = new DirectoryEventHandler() { @Override public void handleAssignment(TopicIdPartition partition, Uuid directoryId, String reason, Runnable callback) {} + @Override public void handleFailure(Uuid directoryId) {} + @Override public void handleCordoned(Set directoryIds) {} + @Override public void handleUncordoned(Set directoryIds) {} }; diff --git a/server-common/src/main/java/org/apache/kafka/server/common/Feature.java b/server-common/src/main/java/org/apache/kafka/server/common/Feature.java index 9744ff7f9df70..46ac74b8a771f 100644 --- a/server-common/src/main/java/org/apache/kafka/server/common/Feature.java +++ b/server-common/src/main/java/org/apache/kafka/server/common/Feature.java @@ -167,7 +167,7 @@ public static void validateVersion(FeatureVersion feature, Map fe throw new IllegalArgumentException(feature.featureName() + " could not be set to " + feature.featureLevel() + " because it depends on metadata.version=" + MetadataVersion.MINIMUM_VERSION.featureLevel() + " (" + MetadataVersion.MINIMUM_VERSION + ")"); - for (Map.Entry dependency: feature.dependencies().entrySet()) { + for (Map.Entry dependency : feature.dependencies().entrySet()) { Short featureLevel = features.get(dependency.getKey()); if (featureLevel == null || featureLevel < dependency.getValue()) { @@ -189,7 +189,7 @@ public static void validateVersion(FeatureVersion feature, Map fe */ public FeatureVersion defaultVersion(MetadataVersion metadataVersion) { FeatureVersion version = featureVersions[0]; - for (Iterator it = Arrays.stream(featureVersions).iterator(); it.hasNext(); ) { + for (Iterator it = Arrays.stream(featureVersions).iterator(); it.hasNext();) { FeatureVersion feature = it.next(); if (feature.bootstrapMetadataVersion().isLessThan(metadataVersion) || feature.bootstrapMetadataVersion().equals(metadataVersion)) version = feature; @@ -275,7 +275,7 @@ public static void validateDefaultValueAndLatestProductionValue( feature.name(), latestProduction, defaultVersion)); } - for (Map.Entry dependency: latestProduction.dependencies().entrySet()) { + for (Map.Entry dependency : latestProduction.dependencies().entrySet()) { String dependencyFeatureName = dependency.getKey(); if (!dependencyFeatureName.equals(MetadataVersion.FEATURE_NAME)) { Feature dependencyFeature = featureFromName(dependencyFeatureName); @@ -295,9 +295,9 @@ public static void validateDefaultValueAndLatestProductionValue( } } - for (MetadataVersion metadataVersion: MetadataVersion.values()) { + for (MetadataVersion metadataVersion : MetadataVersion.values()) { defaultVersion = feature.defaultVersion(metadataVersion); - for (Map.Entry dependency: defaultVersion.dependencies().entrySet()) { + for (Map.Entry dependency : defaultVersion.dependencies().entrySet()) { String dependencyFeatureName = dependency.getKey(); if (!dependencyFeatureName.equals(MetadataVersion.FEATURE_NAME)) { Feature dependencyFeature = featureFromName(dependencyFeatureName); diff --git a/server-common/src/main/java/org/apache/kafka/server/common/MetadataVersion.java b/server-common/src/main/java/org/apache/kafka/server/common/MetadataVersion.java index 4177d1bc859ab..c87040f4ce0c9 100644 --- a/server-common/src/main/java/org/apache/kafka/server/common/MetadataVersion.java +++ b/server-common/src/main/java/org/apache/kafka/server/common/MetadataVersion.java @@ -377,7 +377,7 @@ public static String metadataVersionsToString(MetadataVersion first, MetadataVer } public static MetadataVersion fromFeatureLevel(short version) { - for (MetadataVersion metadataVersion: MetadataVersion.values()) { + for (MetadataVersion metadataVersion : MetadataVersion.values()) { if (metadataVersion.featureLevel() == version) { return metadataVersion; } diff --git a/server-common/src/main/java/org/apache/kafka/server/config/DelegationTokenManagerConfigs.java b/server-common/src/main/java/org/apache/kafka/server/config/DelegationTokenManagerConfigs.java index d94426d18359c..000c0133ccb0d 100644 --- a/server-common/src/main/java/org/apache/kafka/server/config/DelegationTokenManagerConfigs.java +++ b/server-common/src/main/java/org/apache/kafka/server/config/DelegationTokenManagerConfigs.java @@ -46,7 +46,7 @@ public class DelegationTokenManagerConfigs { public static final long DELEGATION_TOKEN_EXPIRY_CHECK_INTERVAL_MS_DEFAULT = 60 * 60 * 1000L; public static final String DELEGATION_TOKEN_EXPIRY_CHECK_INTERVAL_DOC = "Scan interval to remove expired delegation tokens."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(DelegationTokenManagerConfigs.DELEGATION_TOKEN_SECRET_KEY_CONFIG, PASSWORD, null, MEDIUM, DelegationTokenManagerConfigs.DELEGATION_TOKEN_SECRET_KEY_DOC) .define(DelegationTokenManagerConfigs.DELEGATION_TOKEN_MAX_LIFETIME_CONFIG, LONG, DelegationTokenManagerConfigs.DELEGATION_TOKEN_MAX_LIFE_TIME_MS_DEFAULT, atLeast(1), MEDIUM, DelegationTokenManagerConfigs.DELEGATION_TOKEN_MAX_LIFE_TIME_DOC) .define(DelegationTokenManagerConfigs.DELEGATION_TOKEN_EXPIRY_TIME_MS_CONFIG, LONG, DelegationTokenManagerConfigs.DELEGATION_TOKEN_EXPIRY_TIME_MS_DEFAULT, atLeast(1), MEDIUM, DelegationTokenManagerConfigs.DELEGATION_TOKEN_EXPIRY_TIME_MS_DOC) diff --git a/server-common/src/main/java/org/apache/kafka/server/config/QuotaConfig.java b/server-common/src/main/java/org/apache/kafka/server/config/QuotaConfig.java index ede737cb390ec..886f766a3a593 100644 --- a/server-common/src/main/java/org/apache/kafka/server/config/QuotaConfig.java +++ b/server-common/src/main/java/org/apache/kafka/server/config/QuotaConfig.java @@ -54,7 +54,7 @@ public class QuotaConfig { public static final String CLIENT_QUOTA_CALLBACK_CLASS_CONFIG = "client.quota.callback.class"; public static final String CLIENT_QUOTA_CALLBACK_CLASS_DOC = "The fully qualified name of a class that implements the ClientQuotaCallback interface, " + "which is used to determine quota limits applied to client requests. " + - "By default, the <user> and <client-id> quotas that are stored and applied. " + + "By default, the <user> and <client-id> quotas that are stored and applied. " + "For any given request, the most specific quota that matches the user principal of the session and the client-id of the request is applied."; public static final String LEADER_REPLICATION_THROTTLED_REPLICAS_CONFIG = "leader.replication.throttled.replicas"; @@ -102,7 +102,7 @@ public class QuotaConfig { public static final int IP_CONNECTION_RATE_DEFAULT = Integer.MAX_VALUE; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(QuotaConfig.NUM_QUOTA_SAMPLES_CONFIG, INT, QuotaConfig.NUM_QUOTA_SAMPLES_DEFAULT, atLeast(1), LOW, QuotaConfig.NUM_QUOTA_SAMPLES_DOC) .define(QuotaConfig.NUM_REPLICATION_QUOTA_SAMPLES_CONFIG, INT, QuotaConfig.NUM_QUOTA_SAMPLES_DEFAULT, atLeast(1), LOW, QuotaConfig.NUM_REPLICATION_QUOTA_SAMPLES_DOC) .define(QuotaConfig.NUM_ALTER_LOG_DIRS_REPLICATION_QUOTA_SAMPLES_CONFIG, INT, QuotaConfig.NUM_QUOTA_SAMPLES_DEFAULT, atLeast(1), LOW, QuotaConfig.NUM_ALTER_LOG_DIRS_REPLICATION_QUOTA_SAMPLES_DOC) diff --git a/server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java b/server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java index 04a2353591fb7..8ab07ed0a8861 100644 --- a/server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java +++ b/server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java @@ -119,13 +119,13 @@ public class ServerConfigs { public static final String AUTHORIZER_CLASS_NAME_CONFIG = "authorizer.class.name"; public static final String AUTHORIZER_CLASS_NAME_DEFAULT = ""; public static final String AUTHORIZER_CLASS_NAME_DOC = "The fully qualified name of a class that implements " + - Authorizer.class.getName() + " interface, which is used by the broker for authorization."; + Authorizer.class.getName() + " interface, which is used by the broker for authorization."; public static final String EARLY_START_LISTENERS_CONFIG = "early.start.listeners"; public static final String EARLY_START_LISTENERS_DOC = "A comma-separated list of listener names which may be started before the authorizer has finished " + "initialization. This is useful when the authorizer is dependent on the cluster itself for bootstrapping, as is the case for " + "the StandardAuthorizer (which stores ACLs in the metadata log.) By default, all listeners included in controller.listener.names " + "will also be early start listeners. A listener should not appear in this list if it accepts external traffic."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(BROKER_ID_CONFIG, INT, BROKER_ID_DEFAULT, HIGH, BROKER_ID_DOC) .define(MESSAGE_MAX_BYTES_CONFIG, INT, ServerLogConfigs.MAX_MESSAGE_BYTES_DEFAULT, atLeast(0), HIGH, MESSAGE_MAX_BYTES_DOC) .define(NUM_IO_THREADS_CONFIG, INT, NUM_IO_THREADS_DEFAULT, atLeast(1), HIGH, NUM_IO_THREADS_DOC) diff --git a/server-common/src/main/java/org/apache/kafka/server/immutable/pcollections/PCollectionsImmutableSet.java b/server-common/src/main/java/org/apache/kafka/server/immutable/pcollections/PCollectionsImmutableSet.java index 54d94c90b3e44..ac117e334489a 100644 --- a/server-common/src/main/java/org/apache/kafka/server/immutable/pcollections/PCollectionsImmutableSet.java +++ b/server-common/src/main/java/org/apache/kafka/server/immutable/pcollections/PCollectionsImmutableSet.java @@ -59,7 +59,7 @@ public PCollectionsImmutableSet(MapPSet set) { public ImmutableSet added(E e) { return new PCollectionsImmutableSet<>(underlying().plus(e)); } - + @Override public ImmutableSet removed(E e) { return new PCollectionsImmutableSet<>(underlying().minus(e)); diff --git a/server-common/src/main/java/org/apache/kafka/server/metrics/FilteringJmxReporter.java b/server-common/src/main/java/org/apache/kafka/server/metrics/FilteringJmxReporter.java index 93a27c5d0f752..aa864741f2c6c 100644 --- a/server-common/src/main/java/org/apache/kafka/server/metrics/FilteringJmxReporter.java +++ b/server-common/src/main/java/org/apache/kafka/server/metrics/FilteringJmxReporter.java @@ -51,7 +51,6 @@ public void updatePredicate(Predicate predicate) { } else { super.onMetricRemoved(name); } - } - ); + }); } } diff --git a/server-common/src/main/java/org/apache/kafka/server/purgatory/DelayedOperationPurgatory.java b/server-common/src/main/java/org/apache/kafka/server/purgatory/DelayedOperationPurgatory.java index 157fdcb885dde..f1fb849741288 100644 --- a/server-common/src/main/java/org/apache/kafka/server/purgatory/DelayedOperationPurgatory.java +++ b/server-common/src/main/java/org/apache/kafka/server/purgatory/DelayedOperationPurgatory.java @@ -311,6 +311,7 @@ private class Watchers { private final ConcurrentLinkedQueue operations = new ConcurrentLinkedQueue<>(); private final DelayedOperationKey key; + Watchers(DelayedOperationKey key) { this.key = key; } diff --git a/server-common/src/main/java/org/apache/kafka/server/util/FutureUtils.java b/server-common/src/main/java/org/apache/kafka/server/util/FutureUtils.java index ea6e6efc0f7c1..d7a06ae90db52 100644 --- a/server-common/src/main/java/org/apache/kafka/server/util/FutureUtils.java +++ b/server-common/src/main/java/org/apache/kafka/server/util/FutureUtils.java @@ -59,12 +59,12 @@ public static T waitWithLogging( T result = time.waitForFuture(future, deadline.nanoseconds()); log.info("{}Finished waiting for {}", prefix, action); return result; - } catch (TimeoutException t) { + } catch (TimeoutException t) { log.error("{}Timed out while waiting for {}", prefix, action, t); TimeoutException timeout = new TimeoutException("Timed out while waiting for " + action); timeout.setStackTrace(t.getStackTrace()); throw timeout; - } catch (Throwable t) { + } catch (Throwable t) { if (t instanceof ExecutionException executionException) { t = executionException.getCause(); } diff --git a/server-common/src/main/java/org/apache/kafka/server/util/json/JsonValue.java b/server-common/src/main/java/org/apache/kafka/server/util/json/JsonValue.java index 55ee460959eb7..b2e2a24339bc7 100644 --- a/server-common/src/main/java/org/apache/kafka/server/util/json/JsonValue.java +++ b/server-common/src/main/java/org/apache/kafka/server/util/json/JsonValue.java @@ -106,6 +106,7 @@ static JsonValue apply(JsonNode node) { class BasicJsonValue implements JsonValue { protected JsonNode node; + BasicJsonValue(JsonNode node) { this.node = node; } @@ -114,10 +115,12 @@ class BasicJsonValue implements JsonValue { public JsonNode node() { return node; } + @Override public int hashCode() { return node().hashCode(); } + @Override public boolean equals(Object a) { if (a instanceof BasicJsonValue) { @@ -125,6 +128,7 @@ public boolean equals(Object a) { } return false; } + @Override public String toString() { return node().toString(); diff --git a/server-common/src/main/java/org/apache/kafka/timeline/BaseHashTable.java b/server-common/src/main/java/org/apache/kafka/timeline/BaseHashTable.java index b8d2c9fc5fb58..39340c01ac19f 100644 --- a/server-common/src/main/java/org/apache/kafka/timeline/BaseHashTable.java +++ b/server-common/src/main/java/org/apache/kafka/timeline/BaseHashTable.java @@ -122,7 +122,7 @@ final T baseAddOrReplace(T newObject) { return null; } else if (cur instanceof Object[]) { T[] curArray = (T[]) cur; - for (int i = 0; i < curArray.length; i++) { + for (int i = 0; i < curArray.length; i++) { T value = curArray[i]; if (value.equals(newObject)) { curArray[i] = newObject; diff --git a/server-common/src/main/java/org/apache/kafka/timeline/SnapshotRegistry.java b/server-common/src/main/java/org/apache/kafka/timeline/SnapshotRegistry.java index b600b122f9b43..92ab3c2a19cae 100644 --- a/server-common/src/main/java/org/apache/kafka/timeline/SnapshotRegistry.java +++ b/server-common/src/main/java/org/apache/kafka/timeline/SnapshotRegistry.java @@ -181,7 +181,7 @@ Iterator reverseIterator() { */ public List epochsList() { List result = new ArrayList<>(); - for (Iterator iterator = iterator(); iterator.hasNext(); ) { + for (Iterator iterator = iterator(); iterator.hasNext();) { result.add(iterator.next().epoch()); } return result; @@ -197,6 +197,7 @@ private String epochsToString() { .map(Object::toString) .collect(Collectors.joining(", ")); } + /** * Gets the snapshot for a specific epoch. */ @@ -295,7 +296,7 @@ void deleteSnapshot(Snapshot snapshot) { * @param targetEpoch The epoch to delete up to. */ public void deleteSnapshotsUpTo(long targetEpoch) { - for (Iterator iterator = iterator(); iterator.hasNext(); ) { + for (Iterator iterator = iterator(); iterator.hasNext();) { Snapshot snapshot = iterator.next(); if (snapshot.epoch() >= targetEpoch) { return; diff --git a/server-common/src/main/java/org/apache/kafka/timeline/SnapshottableHashTable.java b/server-common/src/main/java/org/apache/kafka/timeline/SnapshottableHashTable.java index c080113c9a5e2..a79f7077ef865 100644 --- a/server-common/src/main/java/org/apache/kafka/timeline/SnapshottableHashTable.java +++ b/server-common/src/main/java/org/apache/kafka/timeline/SnapshottableHashTable.java @@ -96,6 +96,7 @@ class SnapshottableHashTable() {{ - put(1, Uuid.fromString("upjfkCrUR9GNn1i94ip1wg")); - put(2, Uuid.fromString("bCF3l0RIQjOKhUqgbivHZA")); - put(3, Uuid.fromString("Fg3mFhcVQlqCWRk4dZazxw")); - put(4, Uuid.fromString("bv9TEYi4TqOm52hLmrxT5w")); - }}, + put(1, Uuid.fromString("upjfkCrUR9GNn1i94ip1wg")); + put(2, Uuid.fromString("bCF3l0RIQjOKhUqgbivHZA")); + put(3, Uuid.fromString("Fg3mFhcVQlqCWRk4dZazxw")); + put(4, Uuid.fromString("bv9TEYi4TqOm52hLmrxT5w")); + }}, DirectoryId.createAssignmentMap( new int[] {1, 2, 3, 4}, new Uuid[] { diff --git a/server-common/src/test/java/org/apache/kafka/metadata/AssignmentsHelperTest.java b/server-common/src/test/java/org/apache/kafka/metadata/AssignmentsHelperTest.java index cfc4e5dfe931f..f2dac284c5039 100644 --- a/server-common/src/test/java/org/apache/kafka/metadata/AssignmentsHelperTest.java +++ b/server-common/src/test/java/org/apache/kafka/metadata/AssignmentsHelperTest.java @@ -40,12 +40,12 @@ public class AssignmentsHelperTest { @Test public void testBuildRequestData() { Map assignment = new HashMap() {{ - put(new TopicIdPartition(TOPIC_1, 1), DIR_1); - put(new TopicIdPartition(TOPIC_1, 2), DIR_2); - put(new TopicIdPartition(TOPIC_1, 3), DIR_3); - put(new TopicIdPartition(TOPIC_1, 4), DIR_1); - put(new TopicIdPartition(TOPIC_2, 5), DIR_2); - }}; + put(new TopicIdPartition(TOPIC_1, 1), DIR_1); + put(new TopicIdPartition(TOPIC_1, 2), DIR_2); + put(new TopicIdPartition(TOPIC_1, 3), DIR_3); + put(new TopicIdPartition(TOPIC_1, 4), DIR_1); + put(new TopicIdPartition(TOPIC_2, 5), DIR_2); + }}; AssignReplicasToDirsRequestData built = AssignmentsHelper.buildRequestData(8, 100L, assignment); AssignReplicasToDirsRequestData expected = new AssignReplicasToDirsRequestData() .setBrokerId(8) diff --git a/server-common/src/test/java/org/apache/kafka/queue/KafkaEventQueueTest.java b/server-common/src/test/java/org/apache/kafka/queue/KafkaEventQueueTest.java index ba4b562ae5c6e..a6bac3ba9cacd 100644 --- a/server-common/src/test/java/org/apache/kafka/queue/KafkaEventQueueTest.java +++ b/server-common/src/test/java/org/apache/kafka/queue/KafkaEventQueueTest.java @@ -244,16 +244,16 @@ public void testRejectedExecutionException() throws Exception { queue.close(); CompletableFuture future = new CompletableFuture<>(); queue.append(new EventQueue.Event() { - @Override - public void run() { - future.complete(null); - } + @Override + public void run() { + future.complete(null); + } - @Override - public void handleException(Throwable e) { - future.completeExceptionally(e); - } - }); + @Override + public void handleException(Throwable e) { + future.completeExceptionally(e); + } + }); assertEquals(RejectedExecutionException.class, assertThrows( ExecutionException.class, () -> future.get()).getCause().getClass()); } diff --git a/server-common/src/test/java/org/apache/kafka/server/common/FeatureTest.java b/server-common/src/test/java/org/apache/kafka/server/common/FeatureTest.java index 98f00a78887c4..8912df56a6fae 100644 --- a/server-common/src/test/java/org/apache/kafka/server/common/FeatureTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/common/FeatureTest.java @@ -186,7 +186,7 @@ public void testLatestProductionIsNotBehindLatestMetadataVersion(Feature feature "UNIT_TEST_VERSION_6", "UNIT_TEST_VERSION_7"}, mode = EnumSource.Mode.EXCLUDE) public void testLatestProductionDependencyIsProductionReady(Feature feature) { - for (Map.Entry dependency: feature.latestProduction.dependencies().entrySet()) { + for (Map.Entry dependency : feature.latestProduction.dependencies().entrySet()) { String featureName = dependency.getKey(); if (!featureName.equals(MetadataVersion.FEATURE_NAME)) { Feature dependencyFeature = Feature.featureFromName(featureName); @@ -206,7 +206,7 @@ public void testLatestProductionDependencyIsProductionReady(Feature feature) { "UNIT_TEST_VERSION_6", "UNIT_TEST_VERSION_7"}, mode = EnumSource.Mode.EXCLUDE) public void testDefaultVersionDependencyIsDefaultReady(Feature feature) { - for (Map.Entry dependency: feature.defaultVersion(MetadataVersion.LATEST_PRODUCTION).dependencies().entrySet()) { + for (Map.Entry dependency : feature.defaultVersion(MetadataVersion.LATEST_PRODUCTION).dependencies().entrySet()) { String featureName = dependency.getKey(); if (!featureName.equals(MetadataVersion.FEATURE_NAME)) { Feature dependencyFeature = Feature.featureFromName(featureName); diff --git a/server-common/src/test/java/org/apache/kafka/server/purgatory/DelayedOperationTest.java b/server-common/src/test/java/org/apache/kafka/server/purgatory/DelayedOperationTest.java index 4f4ce9de48ecd..9acdf35fea744 100644 --- a/server-common/src/test/java/org/apache/kafka/server/purgatory/DelayedOperationTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/purgatory/DelayedOperationTest.java @@ -74,13 +74,16 @@ public void testLockInTryCompleteElseWatch() { DelayedOperation op = new DelayedOperation(100000L) { @Override public void onExpiration() {} + @Override public void onComplete() {} + @Override public boolean tryComplete() { assertTrue(((ReentrantLock) lock).isHeldByCurrentThread()); return false; } + @Override public boolean safeTryComplete() { fail("tryCompleteElseWatch should not use safeTryComplete"); diff --git a/server-common/src/test/java/org/apache/kafka/server/share/persister/DefaultStatePersisterTest.java b/server-common/src/test/java/org/apache/kafka/server/share/persister/DefaultStatePersisterTest.java index 51a617c43db63..9e5601981e4bf 100644 --- a/server-common/src/test/java/org/apache/kafka/server/share/persister/DefaultStatePersisterTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/share/persister/DefaultStatePersisterTest.java @@ -200,7 +200,7 @@ public void testWriteStateValidate() { .setGroupId(groupId) .setTopicsData(List.of(new TopicData<>(topicId, List.of(PartitionFactory.newPartitionStateBatchData( - incorrectPartition, 1, 0, 0, 0, null))))).build()).build()); + incorrectPartition, 1, 0, 0, 0, null))))).build()).build()); assertTrue(result.isDone()); assertTrue(result.isCompletedExceptionally()); assertFutureThrows(IllegalArgumentException.class, result); diff --git a/server-common/src/test/java/org/apache/kafka/server/share/persister/PersisterStateManagerTest.java b/server-common/src/test/java/org/apache/kafka/server/share/persister/PersisterStateManagerTest.java index ffc89dcfdcfbe..473c7d8318132 100644 --- a/server-common/src/test/java/org/apache/kafka/server/share/persister/PersisterStateManagerTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/share/persister/PersisterStateManagerTest.java @@ -100,7 +100,7 @@ private static class PersisterStateManagerBuilder { private Time time = MOCK_TIME; private Timer timer = MOCK_TIMER; private ShareCoordinatorMetadataCacheHelper cacheHelper = CACHE_HELPER; - private int requestTimeoutMs = Math.toIntExact(CommonClientConfigs.DEFAULT_SOCKET_CONNECTION_SETUP_TIMEOUT_MAX_MS); + private int requestTimeoutMs = Math.toIntExact(CommonClientConfigs.DEFAULT_SOCKET_CONNECTION_SETUP_TIMEOUT_MAX_MS); private PersisterStateManagerBuilder withKafkaClient(KafkaClient client) { this.client = client; diff --git a/server-common/src/test/java/org/apache/kafka/server/util/JsonTest.java b/server-common/src/test/java/org/apache/kafka/server/util/JsonTest.java index c02308d749d06..b1635634411aa 100644 --- a/server-common/src/test/java/org/apache/kafka/server/util/JsonTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/util/JsonTest.java @@ -208,6 +208,7 @@ public void testDecodeOptional() throws JsonMappingException { assertTo(Optional.of(1234), decodeJson, jsonObject -> jsonObject.get("int").get()); assertToFails(DecodeJson.decodeOptional(new DecodeJson.DecodeString()), jsonObject -> jsonObject.get("int").get()); } + private void assertTo(T expected, DecodeJson decodeJson, Function jsonValue) throws JsonMappingException { JsonValue parsed = jsonValue.apply(parse(JSON).asJsonObject()); assertEquals(expected, parsed.to(decodeJson)); diff --git a/server-common/src/test/java/org/apache/kafka/server/util/timer/TimingWheelTest.java b/server-common/src/test/java/org/apache/kafka/server/util/timer/TimingWheelTest.java index 48e21e18db612..4018a9ee60c02 100644 --- a/server-common/src/test/java/org/apache/kafka/server/util/timer/TimingWheelTest.java +++ b/server-common/src/test/java/org/apache/kafka/server/util/timer/TimingWheelTest.java @@ -52,10 +52,10 @@ public void testAddValidTask() { public void testAddExpiredTask() { long startMs = 1000L; TimingWheel timingWheel = new TimingWheel( - 10L, - 5, - startMs, - new AtomicInteger(0), + 10L, + 5, + startMs, + new AtomicInteger(0), new DelayQueue<>() ); @@ -151,7 +151,7 @@ public void testOverflowWheelCreation() { new AtomicInteger(0), new DelayQueue<>() ); - + assertNull(timingWheel.overflowWheel(), "Overflow wheel should not exist initially"); // First overflow task should create parent wheel diff --git a/server-common/src/test/java/org/apache/kafka/timeline/SnapshottableHashTableTest.java b/server-common/src/test/java/org/apache/kafka/timeline/SnapshottableHashTableTest.java index 85e77c9d6906f..3e521b9408446 100644 --- a/server-common/src/test/java/org/apache/kafka/timeline/SnapshottableHashTableTest.java +++ b/server-common/src/test/java/org/apache/kafka/timeline/SnapshottableHashTableTest.java @@ -98,6 +98,7 @@ public void testEmptyTable() { new SnapshottableHashTable<>(registry, 1); assertEquals(0, table.snapshottableSize(Long.MAX_VALUE)); } + @Test public void testDeleteOnEmptyDeltaTable() { // A simple test case to validate the behavior of the TimelineHashSet diff --git a/server/src/main/java/org/apache/kafka/server/AssignmentsManager.java b/server/src/main/java/org/apache/kafka/server/AssignmentsManager.java index b768463e7666a..17dc957de5833 100644 --- a/server/src/main/java/org/apache/kafka/server/AssignmentsManager.java +++ b/server/src/main/java/org/apache/kafka/server/AssignmentsManager.java @@ -340,7 +340,7 @@ void maybeSendAssignments() { Map newInFlight = new HashMap<>(); int numInvalid = 0; for (Iterator iterator = ready.values().iterator(); - iterator.hasNext() && newInFlight.size() < MAX_ASSIGNMENTS_PER_REQUEST; + iterator.hasNext() && newInFlight.size() < MAX_ASSIGNMENTS_PER_REQUEST; ) { Assignment assignment = iterator.next(); iterator.remove(); diff --git a/server/src/main/java/org/apache/kafka/server/BrokerFeatures.java b/server/src/main/java/org/apache/kafka/server/BrokerFeatures.java index f611411f9b8ff..35c7b00c05d4b 100644 --- a/server/src/main/java/org/apache/kafka/server/BrokerFeatures.java +++ b/server/src/main/java/org/apache/kafka/server/BrokerFeatures.java @@ -49,7 +49,7 @@ private BrokerFeatures(Features supportedFeatures) { public static BrokerFeatures createDefault(boolean unstableFeatureVersionsEnabled) { return new BrokerFeatures(defaultSupportedFeatures(unstableFeatureVersionsEnabled)); } - + // only for testing public static BrokerFeatures createDefault(boolean unstableFeatureVersionsEnabled, Features newFeatures) { Map combined = new HashMap<>(defaultSupportedFeatures(unstableFeatureVersionsEnabled).features()); diff --git a/server/src/main/java/org/apache/kafka/server/FetchManager.java b/server/src/main/java/org/apache/kafka/server/FetchManager.java index c2173f6ee5355..601a3649a6a9a 100644 --- a/server/src/main/java/org/apache/kafka/server/FetchManager.java +++ b/server/src/main/java/org/apache/kafka/server/FetchManager.java @@ -97,7 +97,7 @@ public FetchContext newContext(short reqVersion, reqMetadata.sessionId(), session.epoch(), reqMetadata.epoch()); return new SessionErrorContext(Errors.INVALID_FETCH_SESSION_EPOCH); - } else if (session.usesTopicIds() && reqVersion < 13 || !session.usesTopicIds() && reqVersion >= 13) { + } else if (session.usesTopicIds() && reqVersion < 13 || !session.usesTopicIds() && reqVersion >= 13) { LOGGER.debug("Session error for {}: expected {}, but request version {} means that we can not.", reqMetadata.sessionId(), session.usesTopicIds() ? "to use topic IDs" : "to not use topic IDs", reqVersion); diff --git a/server/src/main/java/org/apache/kafka/server/FetchSession.java b/server/src/main/java/org/apache/kafka/server/FetchSession.java index adff78c4e921f..da9484e990541 100644 --- a/server/src/main/java/org/apache/kafka/server/FetchSession.java +++ b/server/src/main/java/org/apache/kafka/server/FetchSession.java @@ -419,7 +419,7 @@ public String toString() { ", fetchOffset=" + fetchOffset + ", highWatermark=" + highWatermark + ", fetcherLogStartOffset=" + fetcherLogStartOffset + - ", localLogStartOffset=" + localLogStartOffset + + ", localLogStartOffset=" + localLogStartOffset + ")"; } } diff --git a/server/src/main/java/org/apache/kafka/server/NodeToControllerRequestThread.java b/server/src/main/java/org/apache/kafka/server/NodeToControllerRequestThread.java index e3d870999b2e1..3cbacdc42a0af 100644 --- a/server/src/main/java/org/apache/kafka/server/NodeToControllerRequestThread.java +++ b/server/src/main/java/org/apache/kafka/server/NodeToControllerRequestThread.java @@ -60,6 +60,7 @@ public class NodeToControllerRequestThread extends InterBrokerSendThread { // Used for testing volatile boolean started = false; + public void setStarted(boolean started) { this.started = started; } diff --git a/server/src/main/java/org/apache/kafka/server/ServerSocketFactory.java b/server/src/main/java/org/apache/kafka/server/ServerSocketFactory.java index 7739507ade836..e4aa5dc164ec4 100644 --- a/server/src/main/java/org/apache/kafka/server/ServerSocketFactory.java +++ b/server/src/main/java/org/apache/kafka/server/ServerSocketFactory.java @@ -28,6 +28,7 @@ public interface ServerSocketFactory { ServerSocketFactory INSTANCE = new KafkaServerSocketFactory(); + ServerSocketChannel openServerSocket( String listenerName, InetSocketAddress socketAddress, diff --git a/server/src/main/java/org/apache/kafka/server/config/ReplicationConfigs.java b/server/src/main/java/org/apache/kafka/server/config/ReplicationConfigs.java index 664eae9448e64..3b0763a8575b5 100644 --- a/server/src/main/java/org/apache/kafka/server/config/ReplicationConfigs.java +++ b/server/src/main/java/org/apache/kafka/server/config/ReplicationConfigs.java @@ -132,10 +132,10 @@ public class ReplicationConfigs { public static final String INTER_BROKER_SECURITY_PROTOCOL_CONFIG = "security.inter.broker.protocol"; public static final String INTER_BROKER_SECURITY_PROTOCOL_DEFAULT = SecurityProtocol.PLAINTEXT.toString(); public static final String INTER_BROKER_LISTENER_NAME_CONFIG = "inter.broker.listener.name"; - public static final String INTER_BROKER_SECURITY_PROTOCOL_DOC = "Security protocol used to communicate between brokers. " + + public static final String INTER_BROKER_SECURITY_PROTOCOL_DOC = "Security protocol used to communicate between brokers. " + "It is an error to set this and " + INTER_BROKER_LISTENER_NAME_CONFIG + " properties at the same time."; public static final String INTER_BROKER_LISTENER_NAME_DOC = "Name of listener used for communication between brokers. If this is unset, the listener name is defined by " + INTER_BROKER_SECURITY_PROTOCOL_CONFIG + - ". It is an error to set this and " + INTER_BROKER_SECURITY_PROTOCOL_CONFIG + " properties at the same time."; + ". It is an error to set this and " + INTER_BROKER_SECURITY_PROTOCOL_CONFIG + " properties at the same time."; public static final String REPLICA_SELECTOR_CLASS_CONFIG = "replica.selector.class"; public static final String REPLICA_SELECTOR_CLASS_DOC = "The fully qualified class name that implements ReplicaSelector. This is used by the broker to find the preferred read replica. By default, we use an implementation that returns the leader."; @@ -148,7 +148,7 @@ public class ReplicationConfigs { public static final boolean AUTO_LEADER_REBALANCE_ENABLE_DEFAULT = true; public static final String AUTO_LEADER_REBALANCE_ENABLE_DOC = String.format("Enables auto leader balancing. A background thread checks the distribution of partition leaders at regular intervals, configurable by %s. If the leader is imbalanced, leader rebalance to the preferred leader for partitions is triggered.", LEADER_IMBALANCE_CHECK_INTERVAL_SECONDS_CONFIG); - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(CONTROLLER_SOCKET_TIMEOUT_MS_CONFIG, INT, CONTROLLER_SOCKET_TIMEOUT_MS_DEFAULT, MEDIUM, CONTROLLER_SOCKET_TIMEOUT_MS_DOC) .define(DEFAULT_REPLICATION_FACTOR_CONFIG, INT, REPLICATION_FACTOR_DEFAULT, MEDIUM, DEFAULT_REPLICATION_FACTOR_DOC) .define(REPLICA_LAG_TIME_MAX_MS_CONFIG, LONG, REPLICA_LAG_TIME_MAX_MS_DEFAULT, HIGH, REPLICA_LAG_TIME_MAX_MS_DOC) diff --git a/server/src/main/java/org/apache/kafka/server/controller/ControllerRegistrationManager.java b/server/src/main/java/org/apache/kafka/server/controller/ControllerRegistrationManager.java index 7b8e20a64692b..11476fa657810 100644 --- a/server/src/main/java/org/apache/kafka/server/controller/ControllerRegistrationManager.java +++ b/server/src/main/java/org/apache/kafka/server/controller/ControllerRegistrationManager.java @@ -53,7 +53,7 @@ * each variable, most mutable state can be accessed only from that event queue thread. */ public class ControllerRegistrationManager implements MetadataPublisher { - + private final Logger logger; private final int nodeId; private final Time time; @@ -118,7 +118,7 @@ public ControllerRegistrationManager( Uuid incarnationId, ListenerInfo listenerInfo, ExponentialBackoff resendExponentialBackoff - ) { + ) { this.nodeId = nodeId; this.time = time; this.supportedFeatures = supportedFeatures; @@ -135,15 +135,15 @@ public ControllerRegistrationManager( threadNamePrefix + "registration-manager-", new ShutdownEvent()); } - - @Override + + @Override public String name() { return "ControllerRegistrationManager"; } private class ShutdownEvent implements EventQueue.Event { - - @Override + + @Override public void run() { try { logger.info("shutting down."); @@ -184,13 +184,13 @@ void beginShutdown() { /** * Shut down the ControllerRegistrationManager and block until all threads are joined. */ - @Override + @Override public void close() throws Exception { beginShutdown(); eventQueue.close(); } - @Override + @Override public void onMetadataUpdate(MetadataDelta delta, MetadataImage newImage, LoaderManifest manifest) { if (delta.featuresDelta() != null || (delta.clusterDelta() != null && delta.clusterDelta().changedControllers().containsKey(nodeId))) { @@ -207,8 +207,8 @@ private class MetadataUpdateEvent implements EventQueue.Event { this.delta = delta; this.newImage = newImage; } - - @Override + + @Override public void run() { try { if (delta.featuresDelta() != null) { @@ -274,8 +274,8 @@ private void sendControllerRegistration() { } private class RegistrationResponseHandler implements ControllerRequestCompletionHandler { - - @Override + + @Override public void onComplete(ClientResponse response) { eventQueue.append(new RequestCompleteEvent(response)); } @@ -289,12 +289,12 @@ public void onTimeout() { private class RequestCompleteEvent implements EventQueue.Event { private final ClientResponse response; - + RequestCompleteEvent(ClientResponse response) { this.response = response; } - - @Override + + @Override public void run() { pendingRpc = false; if (response.authenticationException() != null) { @@ -324,8 +324,8 @@ public void run() { } private class RequestTimeoutEvent implements EventQueue.Event { - - @Override + + @Override public void run() { pendingRpc = false; logger.error("RegistrationResponseHandler: channel manager timed out before sending the request."); diff --git a/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerDelegate.java b/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerDelegate.java index 0d73b3aca2596..eb6a905cc8762 100644 --- a/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerDelegate.java +++ b/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerDelegate.java @@ -20,8 +20,11 @@ public interface LoggingControllerDelegate { Map loggers(); + boolean logLevel(String loggerName, String logLevel); + boolean unsetLogLevel(String loggerName); + default boolean loggerExists(String loggerName) { return loggers().containsKey(loggerName); } diff --git a/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerMBean.java b/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerMBean.java index 5dfd47be20229..123dc3e76e543 100644 --- a/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerMBean.java +++ b/server/src/main/java/org/apache/kafka/server/logger/LoggingControllerMBean.java @@ -20,6 +20,8 @@ public interface LoggingControllerMBean { List getLoggers(); + String getLogLevel(String logger); + boolean setLogLevel(String logger, String level); } \ No newline at end of file diff --git a/server/src/main/java/org/apache/kafka/server/metrics/ClientMetricsConfigs.java b/server/src/main/java/org/apache/kafka/server/metrics/ClientMetricsConfigs.java index f6e0bf672f3ab..fd651f5a8d09c 100644 --- a/server/src/main/java/org/apache/kafka/server/metrics/ClientMetricsConfigs.java +++ b/server/src/main/java/org/apache/kafka/server/metrics/ClientMetricsConfigs.java @@ -102,18 +102,18 @@ public class ClientMetricsConfigs extends AbstractConfig { ); private static final ConfigDef CONFIG = new ConfigDef() - .define(METRICS_CONFIG, - Type.LIST, - METRICS_DEFAULT, - ConfigDef.ValidList.anyNonDuplicateValues(true, false), - Importance.MEDIUM, + .define(METRICS_CONFIG, + Type.LIST, + METRICS_DEFAULT, + ConfigDef.ValidList.anyNonDuplicateValues(true, false), + Importance.MEDIUM, "Telemetry metric name prefix list") .define(INTERVAL_MS_CONFIG, Type.INT, INTERVAL_MS_DEFAULT, Importance.MEDIUM, "Metrics push interval in milliseconds") - .define(MATCH_CONFIG, - Type.LIST, + .define(MATCH_CONFIG, + Type.LIST, MATCH_DEFAULT, ConfigDef.ValidList.anyNonDuplicateValues(true, false), - Importance.MEDIUM, + Importance.MEDIUM, "Client match criteria"); public ClientMetricsConfigs(Properties props) { diff --git a/server/src/main/java/org/apache/kafka/server/metrics/MetricConfigs.java b/server/src/main/java/org/apache/kafka/server/metrics/MetricConfigs.java index a974c36bed5b4..33b380fc01306 100644 --- a/server/src/main/java/org/apache/kafka/server/metrics/MetricConfigs.java +++ b/server/src/main/java/org/apache/kafka/server/metrics/MetricConfigs.java @@ -67,7 +67,7 @@ public class MetricConfigs { public static final String CLIENT_TELEMETRY_MAX_BYTES_DOC = "The maximum size (after compression if compression is used) of" + " telemetry metrics pushed from a client to the broker. The default value is 1048576 (1 MB)."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() // Kafka Metrics Configuration .define(METRIC_NUM_SAMPLES_CONFIG, INT, METRIC_NUM_SAMPLES_DEFAULT, atLeast(1), LOW, METRIC_NUM_SAMPLES_DOC) .define(METRIC_SAMPLE_WINDOW_MS_CONFIG, LONG, METRIC_SAMPLE_WINDOW_MS_DEFAULT, atLeast(1), LOW, METRIC_SAMPLE_WINDOW_MS_DOC) diff --git a/server/src/main/java/org/apache/kafka/server/partition/DefaultAlterPartitionManager.java b/server/src/main/java/org/apache/kafka/server/partition/DefaultAlterPartitionManager.java index dc43d1daee70a..d8e5b17dd3542 100644 --- a/server/src/main/java/org/apache/kafka/server/partition/DefaultAlterPartitionManager.java +++ b/server/src/main/java/org/apache/kafka/server/partition/DefaultAlterPartitionManager.java @@ -258,8 +258,7 @@ private Errors handleAlterPartitionResponse(AlterPartitionResponse alterPartitio } else { errorResponses.put(tp, apiError); } - } - )); + })); // Iterate across the items we sent rather than what we received to ensure we run the callback even if a // partition was somehow erroneously excluded from the response. Note that these callbacks are run from // the leaderIsrUpdateLock write lock in Partition#sendAlterPartitionRequest diff --git a/server/src/main/java/org/apache/kafka/server/partition/PendingPartitionChange.java b/server/src/main/java/org/apache/kafka/server/partition/PendingPartitionChange.java index b56a3dfff2d02..a936001d1d6b1 100644 --- a/server/src/main/java/org/apache/kafka/server/partition/PendingPartitionChange.java +++ b/server/src/main/java/org/apache/kafka/server/partition/PendingPartitionChange.java @@ -26,6 +26,7 @@ public interface PendingPartitionChange extends PartitionState { * Returns the last committed partition state before this pending change. */ CommittedPartitionState lastCommittedState(); + /** * Returns the LeaderAndIsr object sent to the controller for this pending change. */ diff --git a/server/src/main/java/org/apache/kafka/server/partition/PendingShrinkIsr.java b/server/src/main/java/org/apache/kafka/server/partition/PendingShrinkIsr.java index 482acaed34342..4353e29fe477f 100644 --- a/server/src/main/java/org/apache/kafka/server/partition/PendingShrinkIsr.java +++ b/server/src/main/java/org/apache/kafka/server/partition/PendingShrinkIsr.java @@ -54,7 +54,7 @@ public boolean isInflight() { @Override public String toString() { - return "PendingShrinkIsr(outOfSyncReplicaIds=" + outOfSyncReplicaIds + + return "PendingShrinkIsr(outOfSyncReplicaIds=" + outOfSyncReplicaIds + ", sentLeaderAndIsr=" + sentLeaderAndIsr + ", leaderRecoveryState=" + leaderRecoveryState() + ", lastCommittedState=" + lastCommittedState + diff --git a/server/src/main/java/org/apache/kafka/server/purgatory/DelayedDeleteRecords.java b/server/src/main/java/org/apache/kafka/server/purgatory/DelayedDeleteRecords.java index 08e85ec68b755..3b73c3bf4fd1e 100644 --- a/server/src/main/java/org/apache/kafka/server/purgatory/DelayedDeleteRecords.java +++ b/server/src/main/java/org/apache/kafka/server/purgatory/DelayedDeleteRecords.java @@ -37,14 +37,14 @@ * in the delete records operation purgatory */ public class DelayedDeleteRecords extends DelayedOperation { - + private static final Logger LOG = LoggerFactory.getLogger(DelayedDeleteRecords.class); - + // migration from kafka.server.DelayedDeleteRecordsMetrics private static final KafkaMetricsGroup METRICS_GROUP = new KafkaMetricsGroup("kafka.server", "DelayedDeleteRecordsMetrics"); private static final Meter AGGREGATE_EXPIRATION_METER = METRICS_GROUP.newMeter("ExpiresPerSec", "requests", TimeUnit.SECONDS); - + private final Map deleteRecordsStatus; private final BiConsumer onAcksPending; private final Consumer> responseCallback; @@ -67,7 +67,7 @@ public DelayedDeleteRecords(long delayMs, } else { status.setAcksPending(false); } - + LOG.trace("Initial partition status for {} is {}", topicPartition, status); }); } diff --git a/server/src/main/java/org/apache/kafka/server/purgatory/DelayedProduce.java b/server/src/main/java/org/apache/kafka/server/purgatory/DelayedProduce.java index b7ce44686d17f..be07fd6906a0d 100644 --- a/server/src/main/java/org/apache/kafka/server/purgatory/DelayedProduce.java +++ b/server/src/main/java/org/apache/kafka/server/purgatory/DelayedProduce.java @@ -82,6 +82,7 @@ public String toString() { @FunctionalInterface public interface PartitionStatusValidator { record Result(boolean hasEnough, Errors error) { } + /** * Validates the status of a partition and its replicas to determine * if a delayed produce operation can be completed. diff --git a/server/src/main/java/org/apache/kafka/server/quota/AbstractControllerMutationQuota.java b/server/src/main/java/org/apache/kafka/server/quota/AbstractControllerMutationQuota.java index acb584b5c6f58..aaa996b0403c5 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/AbstractControllerMutationQuota.java +++ b/server/src/main/java/org/apache/kafka/server/quota/AbstractControllerMutationQuota.java @@ -48,7 +48,7 @@ public int throttleTime() { if (lastThrottleTimeMs == 0L) { return 0; } - + // If a throttle time has been recorded, we adjust it by deducting the time elapsed // between the recording and now. We do this because `throttleTime` may be called // long after having recorded it, especially when a request waits in the purgatory. diff --git a/server/src/main/java/org/apache/kafka/server/quota/ClientQuotaManager.java b/server/src/main/java/org/apache/kafka/server/quota/ClientQuotaManager.java index 010b10af91abc..f2aa2daa6d1ce 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/ClientQuotaManager.java +++ b/server/src/main/java/org/apache/kafka/server/quota/ClientQuotaManager.java @@ -119,10 +119,12 @@ public String toString() { public ClientQuotaEntity.ConfigEntityType entityType() { return ClientQuotaEntity.ConfigEntityType.DEFAULT_CLIENT_ID; } + @Override public String name() { return DEFAULT_NAME; } + @Override public String toString() { return "default client-id"; @@ -262,6 +264,7 @@ public ClientQuotaManager(ClientQuotaManagerConfig config, protected Metrics metrics() { return metrics; } + protected Time time() { return time; } diff --git a/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuota.java b/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuota.java index 2454cde1e1b30..56f0a92c50ed6 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuota.java +++ b/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuota.java @@ -23,7 +23,9 @@ */ public interface ControllerMutationQuota { boolean isExceeded(); + void record(double permits); + int throttleTime(); ControllerMutationQuota UNBOUNDED_CONTROLLER_MUTATION_QUOTA = new ControllerMutationQuota() { diff --git a/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuotaManager.java b/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuotaManager.java index b7c8665480a12..3341dd8370f36 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuotaManager.java +++ b/server/src/main/java/org/apache/kafka/server/quota/ControllerMutationQuotaManager.java @@ -180,8 +180,8 @@ public ControllerMutationQuota newQuotaFor(Session session, RequestHeader header public static long throttleTimeMs(QuotaViolationException e) { if (e.metric().measurable() instanceof TokenBucket) { return Math.round(-e.value() / e.bound() * 1000); - } - throw new IllegalArgumentException("Metric " + e.metric().metricName() + + } + throw new IllegalArgumentException("Metric " + e.metric().metricName() + " is not a TokenBucket metric, value " + e.metric().measurable()); } } \ No newline at end of file diff --git a/server/src/main/java/org/apache/kafka/server/quota/ReplicaQuota.java b/server/src/main/java/org/apache/kafka/server/quota/ReplicaQuota.java index 97efae8b94b3f..6b1e90d18a4e6 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/ReplicaQuota.java +++ b/server/src/main/java/org/apache/kafka/server/quota/ReplicaQuota.java @@ -20,6 +20,8 @@ public interface ReplicaQuota { void record(long value); + boolean isThrottled(TopicPartition topicPartition); + boolean isQuotaExceeded(); } \ No newline at end of file diff --git a/server/src/main/java/org/apache/kafka/server/quota/ThrottleCallback.java b/server/src/main/java/org/apache/kafka/server/quota/ThrottleCallback.java index e88be6be6e203..01829704f3f80 100644 --- a/server/src/main/java/org/apache/kafka/server/quota/ThrottleCallback.java +++ b/server/src/main/java/org/apache/kafka/server/quota/ThrottleCallback.java @@ -18,5 +18,6 @@ public interface ThrottleCallback { void startThrottling(); + void endThrottling(); } diff --git a/server/src/main/java/org/apache/kafka/server/share/CachedSharePartition.java b/server/src/main/java/org/apache/kafka/server/share/CachedSharePartition.java index bafbf43b3a3d3..149d90eb9a39e 100644 --- a/server/src/main/java/org/apache/kafka/server/share/CachedSharePartition.java +++ b/server/src/main/java/org/apache/kafka/server/share/CachedSharePartition.java @@ -112,7 +112,7 @@ public boolean maybeUpdateResponseData(ShareFetchResponseData.PartitionData resp } public String toString() { - return "CachedSharePartition(topic=" + topic + + return "CachedSharePartition(topic=" + topic + ", topicId=" + topicId + ", partition=" + partition + ", leaderEpoch=" + leaderEpoch + diff --git a/server/src/main/java/org/apache/kafka/server/util/NetworkPartitionMetadataClient.java b/server/src/main/java/org/apache/kafka/server/util/NetworkPartitionMetadataClient.java index e1ef0f8a50311..8d65bb023bdf3 100644 --- a/server/src/main/java/org/apache/kafka/server/util/NetworkPartitionMetadataClient.java +++ b/server/src/main/java/org/apache/kafka/server/util/NetworkPartitionMetadataClient.java @@ -220,7 +220,7 @@ void handleResponse(PendingRequest pendingRequest, ClientResponse clientResponse log.debug("ListOffsets response received successfully - {}", clientResponse); // Reset retry attempts on success pendingRequest.backoffManager().resetAttempts(); - + ListOffsetsResponse response = (ListOffsetsResponse) clientResponse.responseBody(); Map> partitionFutures = pendingRequest.futures(); @@ -252,7 +252,7 @@ private boolean maybeHandleErrorResponse(PendingRequest pendingRequest, ClientRe Map> partitionFutures = pendingRequest.futures(); Errors error; boolean shouldRetry = false; - + if (clientResponse == null) { log.error("Response for ListOffsets for topicPartitions: {} is null", partitionFutures.keySet()); error = Errors.UNKNOWN_SERVER_ERROR; diff --git a/server/src/test/java/org/apache/kafka/api/EndToEndClusterIdTest.java b/server/src/test/java/org/apache/kafka/api/EndToEndClusterIdTest.java index 6c48f138a3f20..f820e26b51a09 100644 --- a/server/src/test/java/org/apache/kafka/api/EndToEndClusterIdTest.java +++ b/server/src/test/java/org/apache/kafka/api/EndToEndClusterIdTest.java @@ -104,7 +104,7 @@ public void configure(Map configs) { String id = (String) configs.get(ServerConfigs.BROKER_ID_CONFIG); controllerId = roles.contains("controller") ? id : null; - brokerId = roles.contains("broker") ? id : null; + brokerId = roles.contains("broker") ? id : null; } @Override diff --git a/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java b/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java index 7fc1371e93ac8..6e4cb68a7734b 100644 --- a/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java +++ b/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java @@ -74,9 +74,9 @@ public void testCreateAuthorizer(ProcessRole role) throws ClassNotFoundException } } assertNotNull(metricName); - assertEquals(ServerConfigs.AUTHORIZER_CLASS_NAME_CONFIG, metricName.tags().get("config")); - assertEquals(MonitorableAuthorizer.class.getSimpleName(), metricName.tags().get("class")); - assertEquals(role.toString(), metricName.tags().get("role")); + assertEquals(ServerConfigs.AUTHORIZER_CLASS_NAME_CONFIG, metricName.tags().get("config")); + assertEquals(MonitorableAuthorizer.class.getSimpleName(), metricName.tags().get("class")); + assertEquals(role.toString(), metricName.tags().get("role")); assertTrue(metricName.tags().entrySet().containsAll(MonitorableAuthorizer.EXTRA_TAGS.entrySet())); assertEquals(0, metrics.metric(metricName).metricValue()); monitorableAuthorizer.authorize(null, null); diff --git a/server/src/test/java/org/apache/kafka/server/BootstrapControllersIntegrationTest.java b/server/src/test/java/org/apache/kafka/server/BootstrapControllersIntegrationTest.java index 1ca1f6924b50d..74070d7ca2c3f 100644 --- a/server/src/test/java/org/apache/kafka/server/BootstrapControllersIntegrationTest.java +++ b/server/src/test/java/org/apache/kafka/server/BootstrapControllersIntegrationTest.java @@ -251,13 +251,13 @@ private void testIncrementalAlterConfigs(ClusterInstance clusterInstance, boolea ) ); admin.incrementalAlterConfigs(alterations).all().get(1, TimeUnit.MINUTES); - + // Verify per-broker configs: MAX_CONNECTIONS_CONFIG and MAX_CONNECTION_CREATION_RATE_CONFIG verifyConfigValue(admin, nodeResource, SocketServerConfigs.MAX_CONNECTIONS_CONFIG, DYNAMIC_BROKER_CONFIG, nodeMaxConnectionsValue); verifyConfigValue(admin, nodeResource, SocketServerConfigs.MAX_CONNECTION_CREATION_RATE_CONFIG, DYNAMIC_DEFAULT_BROKER_CONFIG, defaultConnectionRateValue); - + // Verify default broker configs: MAX_CONNECTIONS_CONFIG and MAX_CONNECTION_CREATION_RATE_CONFIG verifyConfigValue(admin, defaultResource, SocketServerConfigs.MAX_CONNECTIONS_CONFIG, DYNAMIC_DEFAULT_BROKER_CONFIG, defaultMaxConnectionsValue); @@ -285,7 +285,7 @@ private void verifySocketServerMaxConnectionsUpdated(Object node, int expectedMa "SocketServer ConnectionQuotas.brokerMaxConnections should be " + expectedMaxConnections + " but was " + actualMaxConnections); } - + private void verifySocketServerMaxConnectionCreationRateUpdated(Object node, int expectedMaxConnectionCreationRate) throws Exception { Metrics metrics = (Metrics) node.getClass().getMethod("metrics").invoke(node); KafkaMetric metric = metrics.metrics().entrySet().stream() @@ -297,7 +297,7 @@ private void verifySocketServerMaxConnectionCreationRateUpdated(Object node, int assertEquals(expectedMaxConnectionCreationRate, actualBound, "Connection creation rate quota should be " + expectedMaxConnectionCreationRate + " but was " + actualBound); } - + private void verifyConfigValue(Admin admin, ConfigResource resource, String configName, org.apache.kafka.clients.admin.ConfigEntry.ConfigSource expectedSource, String expectedValue) throws Exception { diff --git a/server/src/test/java/org/apache/kafka/server/BrokerRegistrationRequestTest.java b/server/src/test/java/org/apache/kafka/server/BrokerRegistrationRequestTest.java index 43137a13c9562..b00b6292eef8e 100644 --- a/server/src/test/java/org/apache/kafka/server/BrokerRegistrationRequestTest.java +++ b/server/src/test/java/org/apache/kafka/server/BrokerRegistrationRequestTest.java @@ -55,16 +55,17 @@ */ class BrokerRegistrationRequestTest { private final ClusterInstance clusterInstance; + public BrokerRegistrationRequestTest(ClusterInstance clusterInstance) { this.clusterInstance = clusterInstance; } - + @ClusterTest(types = {Type.KRAFT}, controllers = 1, metadataVersion = MetadataVersion.IBP_3_3_IV3) public void shouldRejectZkMigratingBrokerWhenFeatureLevelDoesNotSupportMigration() throws Exception { try (ChannelEnv env = openChannel()) { assertEquals( - Errors.BROKER_ID_NOT_REGISTERED, - registerBroker(env.channelManager, 1L, + Errors.BROKER_ID_NOT_REGISTERED, + registerBroker(env.channelManager, 1L, new BrokerRegistrationRequestData.Feature() .setName(MetadataVersion.FEATURE_NAME) .setMinSupportedVersion(MetadataVersionTestUtils.IBP_3_3_IV0_FEATURE_LEVEL) @@ -102,7 +103,7 @@ public void shouldRegisterWhenSupportedRangeAndNotMigrating() throws Exception { try (ChannelEnv env = openChannel()) { assertEquals( Errors.NONE, - registerBroker(env.channelManager, null, + registerBroker(env.channelManager, null, new BrokerRegistrationRequestData.Feature() .setName(MetadataVersion.FEATURE_NAME) .setMinSupportedVersion(MetadataVersion.IBP_3_3_IV3.featureLevel()) @@ -219,7 +220,7 @@ public Optional node() { clusterInstance.controllerBoundPorts().get(0) )); } - + public ListenerName listenerName() { return clusterInstance.controllerListenerName(); } diff --git a/server/src/test/java/org/apache/kafka/server/ClientMetricsManagerTest.java b/server/src/test/java/org/apache/kafka/server/ClientMetricsManagerTest.java index 3a5d41a592bd4..cdd5997bcdce0 100644 --- a/server/src/test/java/org/apache/kafka/server/ClientMetricsManagerTest.java +++ b/server/src/test/java/org/apache/kafka/server/ClientMetricsManagerTest.java @@ -356,8 +356,8 @@ public void testGetTelemetrySameClientImmediateRetryAfterPushFail() throws Excep // last request information but request should succeed as subscription id should match // the one with new client instance. try ( - Metrics kafkaMetrics = new Metrics(); - ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) + Metrics kafkaMetrics = new Metrics(); + ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) ) { PushTelemetryRequest pushRequest = new Builder( @@ -596,8 +596,8 @@ public void testPushTelemetryOnNewServer() throws Exception { // client instance information but request should succeed as subscription id should match // the one with new client instance. try ( - Metrics kafkaMetrics = new Metrics(); - ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) + Metrics kafkaMetrics = new Metrics(); + ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) ) { PushTelemetryRequest request = new PushTelemetryRequest.Builder( @@ -888,8 +888,8 @@ public void testPushTelemetryNullMetricsData() throws Exception { @Test public void testPushTelemetryMetricsTooLarge() throws Exception { try ( - Metrics kafkaMetrics = new Metrics(); - ClientMetricsManager clientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 1, time, kafkaMetrics) + Metrics kafkaMetrics = new Metrics(); + ClientMetricsManager clientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 1, time, kafkaMetrics) ) { GetTelemetrySubscriptionsRequest subscriptionsRequest = new GetTelemetrySubscriptionsRequest.Builder( @@ -943,8 +943,8 @@ public void testPushTelemetryConcurrentRequestNewClientInstance() throws Excepti List responses = Collections.synchronizedList(new ArrayList<>()); try ( - Metrics kafkaMetrics = new Metrics(); - ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) + Metrics kafkaMetrics = new Metrics(); + ClientMetricsManager newClientMetricsManager = new ClientMetricsManager(clientTelemetryExporterPlugin, 100, time, kafkaMetrics) ) { Thread thread = new Thread(() -> { @@ -1082,8 +1082,8 @@ public void testPushTelemetryPluginException() throws Exception { Mockito.doThrow(new RuntimeException("test exception")).when(receiverPlugin).exportMetrics(Mockito.any(), Mockito.any(), Mockito.anyInt()); try ( - Metrics kafkaMetrics = new Metrics(); - ClientMetricsManager clientMetricsManager = new ClientMetricsManager(receiverPlugin, 100, time, 100, kafkaMetrics) + Metrics kafkaMetrics = new Metrics(); + ClientMetricsManager clientMetricsManager = new ClientMetricsManager(receiverPlugin, 100, time, 100, kafkaMetrics) ) { clientMetricsManager.updateSubscription("sub-1", ClientMetricsTestUtils.defaultTestProperties()); diff --git a/server/src/test/java/org/apache/kafka/server/KRaftClusterTest.java b/server/src/test/java/org/apache/kafka/server/KRaftClusterTest.java index cca9562d8cc83..aaca7625d6f67 100644 --- a/server/src/test/java/org/apache/kafka/server/KRaftClusterTest.java +++ b/server/src/test/java/org/apache/kafka/server/KRaftClusterTest.java @@ -1502,7 +1502,7 @@ public void testAbandonedFutureReplicaRecovered_mainReplicaInOfflineLogDir() thr new NewTopic("foo", 3, (short) 3))).all().get(); // Wait until foo-0 is created on broker0. - TestUtils.retryOnExceptionWithTimeout(60000, () -> + TestUtils.retryOnExceptionWithTimeout(60000, () -> assertTrue(broker0.logManager().getLog(foo0, false).isPresent())); // Shut down broker0 and wait until the ISR of foo-0 is set to [1, 2] diff --git a/server/src/test/java/org/apache/kafka/server/quota/ClientSensorsTest.java b/server/src/test/java/org/apache/kafka/server/quota/ClientSensorsTest.java index 6979660ac3ab0..5b7782a2f819d 100644 --- a/server/src/test/java/org/apache/kafka/server/quota/ClientSensorsTest.java +++ b/server/src/test/java/org/apache/kafka/server/quota/ClientSensorsTest.java @@ -59,13 +59,13 @@ void testConstructorPreservesInputOrder() { Map resultTags = clientSensors.metricTags(); assertInstanceOf(LinkedHashMap.class, resultTags); - + // Convert to arrays to check order String[] expectedKeys = {"first", "second", "third", "fourth"}; String[] actualKeys = resultTags.keySet().toArray(new String[0]); - + for (int i = 0; i < expectedKeys.length; i++) { - assertEquals(expectedKeys[i], actualKeys[i], + assertEquals(expectedKeys[i], actualKeys[i], "Key at position " + i + " should match expected order"); } } diff --git a/server/src/test/java/org/apache/kafka/server/transaction/AddPartitionsToTxnManagerTest.java b/server/src/test/java/org/apache/kafka/server/transaction/AddPartitionsToTxnManagerTest.java index 6446784710ea2..45d0962cb8cf1 100644 --- a/server/src/test/java/org/apache/kafka/server/transaction/AddPartitionsToTxnManagerTest.java +++ b/server/src/test/java/org/apache/kafka/server/transaction/AddPartitionsToTxnManagerTest.java @@ -86,7 +86,7 @@ public class AddPartitionsToTxnManagerTest { private final AbstractKafkaConfig config = new AbstractKafkaConfig( AbstractKafkaConfig.CONFIG_DEF, Map.of( - KRaftConfigs.PROCESS_ROLES_CONFIG, "broker", + KRaftConfigs.PROCESS_ROLES_CONFIG, "broker", KRaftConfigs.NODE_ID_CONFIG, "1", KRaftConfigs.CONTROLLER_LISTENER_NAMES_CONFIG, "CONTROLLER"), Map.of(), diff --git a/share-coordinator/src/test/java/org/apache/kafka/coordinator/share/ShareCoordinatorShardTest.java b/share-coordinator/src/test/java/org/apache/kafka/coordinator/share/ShareCoordinatorShardTest.java index ecdbb991554e5..eae8cc17237c7 100644 --- a/share-coordinator/src/test/java/org/apache/kafka/coordinator/share/ShareCoordinatorShardTest.java +++ b/share-coordinator/src/test/java/org/apache/kafka/coordinator/share/ShareCoordinatorShardTest.java @@ -1831,6 +1831,7 @@ private static ShareGroupOffset groupOffset(ApiMessage record) { private void initSharePartition(ShareCoordinatorShard shard, SharePartitionKey key) { initSharePartition(shard, key, 0); } + private void initSharePartition(ShareCoordinatorShard shard, SharePartitionKey key, int stateEpoch) { shard.replay(0L, 0L, (short) 0, CoordinatorRecord.record( new ShareSnapshotKey() diff --git a/shell/src/main/java/org/apache/kafka/shell/InteractiveShell.java b/shell/src/main/java/org/apache/kafka/shell/InteractiveShell.java index c382d178da5da..391cf6a60ec26 100644 --- a/shell/src/main/java/org/apache/kafka/shell/InteractiveShell.java +++ b/shell/src/main/java/org/apache/kafka/shell/InteractiveShell.java @@ -140,7 +140,7 @@ public Iterator> history(int numEntriesToShow) { return new HistoryIterator(first, last); } - public class HistoryIterator implements Iterator> { + public class HistoryIterator implements Iterator> { private final int last; private int index; diff --git a/shell/src/main/java/org/apache/kafka/shell/command/Commands.java b/shell/src/main/java/org/apache/kafka/shell/command/Commands.java index fdf469d880d9c..1952506765101 100644 --- a/shell/src/main/java/org/apache/kafka/shell/command/Commands.java +++ b/shell/src/main/java/org/apache/kafka/shell/command/Commands.java @@ -85,10 +85,15 @@ void run( */ public interface Type { String name(); + String description(); + boolean shellOnly(); + void addArguments(ArgumentParser parser); + Handler createHandler(Namespace namespace); + void completeNext( MetadataShellState nodeManager, List nextWords, diff --git a/shell/src/main/java/org/apache/kafka/shell/glob/GlobComponent.java b/shell/src/main/java/org/apache/kafka/shell/glob/GlobComponent.java index bca13dd8c8fe4..5924af2641cb7 100644 --- a/shell/src/main/java/org/apache/kafka/shell/glob/GlobComponent.java +++ b/shell/src/main/java/org/apache/kafka/shell/glob/GlobComponent.java @@ -58,7 +58,7 @@ static String toRegularExpression(String glob) { boolean literal = true; boolean processingGroup = false; - for (int i = 0; i < glob.length(); ) { + for (int i = 0; i < glob.length();) { char c = glob.charAt(i++); switch (c) { case '?': diff --git a/storage/api/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogSegmentMetadata.java b/storage/api/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogSegmentMetadata.java index 7eff2673f6ebd..97f30320fff4d 100644 --- a/storage/api/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogSegmentMetadata.java +++ b/storage/api/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogSegmentMetadata.java @@ -151,7 +151,7 @@ public RemoteLogSegmentMetadata(RemoteLogSegmentId remoteLogSegmentId, this.startOffset = startOffset; if (endOffset < startOffset) { - throw new IllegalArgumentException("Unexpected end offset = " + endOffset + + throw new IllegalArgumentException("Unexpected end offset = " + endOffset + ". EndOffset for a remote segment cannot be less than startOffset = " + startOffset); } this.endOffset = endOffset; diff --git a/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManager.java b/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManager.java index f8943c68e1a18..8d2aa97c3d5eb 100644 --- a/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManager.java +++ b/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManager.java @@ -523,7 +523,7 @@ public void stopLeaderCopyRLMTasks(Set partitions) { public void stopPartitions(Set stopPartitions, BiConsumer errorHandler) { LOGGER.debug("Stop partitions: {}", stopPartitions); - for (StopPartition stopPartition: stopPartitions) { + for (StopPartition stopPartition : stopPartitions) { TopicPartition tp = stopPartition.topicPartition; try { if (topicIdByPartitionMap.containsKey(tp)) { @@ -586,7 +586,7 @@ private void deleteRemoteLogPartition(TopicIdPartition partition) throws RemoteS // KAFKA-15313: Delete remote log segments partition asynchronously when a partition is deleted. Collection deletedSegmentIds = new ArrayList<>(); - for (RemoteLogSegmentMetadata metadata: metadataList) { + for (RemoteLogSegmentMetadata metadata : metadataList) { deletedSegmentIds.add(metadata.remoteLogSegmentId().id()); remoteStorageManagerPlugin.get().deleteLogSegmentData(metadata); } @@ -907,7 +907,7 @@ private void maybeUpdateCopiedOffset(UnifiedLog log) throws RemoteStorageExcepti // epoch cache then it starts copying the segments from the earliest epoch entry's offset. copiedOffsetOption = Optional.of(findHighestRemoteOffset(topicIdPartition, log)); logger.info("Found the highest copiedRemoteOffset: {} for partition: {} after becoming leader", copiedOffsetOption, topicIdPartition); - copiedOffsetOption.ifPresent(offsetAndEpoch -> log.updateHighestOffsetInRemoteStorage(offsetAndEpoch.offset())); + copiedOffsetOption.ifPresent(offsetAndEpoch -> log.updateHighestOffsetInRemoteStorage(offsetAndEpoch.offset())); } } @@ -1868,6 +1868,7 @@ public FetchDataInfo read(RemoteStorageFetchInfo remoteStorageFetchInfo) throws } } } + // for testing RemoteLogInputStream getRemoteLogInputStream(InputStream in) { return new RemoteLogInputStream(in); @@ -2237,9 +2238,11 @@ private void removeRemoteTopicPartitionMetrics(TopicIdPartition topicIdPartition RLMTaskWithFuture leaderCopyTask(TopicIdPartition partition) { return leaderCopyRLMTasks.get(partition); } + RLMTaskWithFuture leaderExpirationTask(TopicIdPartition partition) { return leaderExpirationRLMTasks.get(partition); } + RLMTaskWithFuture followerTask(TopicIdPartition partition) { return followerRLMTasks.get(partition); } diff --git a/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerConfig.java b/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerConfig.java index dcdec1d68f7d9..b74c8eb26fda6 100644 --- a/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerConfig.java +++ b/storage/src/main/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerConfig.java @@ -396,7 +396,7 @@ public static ConfigDef configDef() { MEDIUM, REMOTE_LIST_OFFSETS_REQUEST_TIMEOUT_MS_DOC); } - + public RemoteLogManagerConfig(AbstractConfig config) { this.config = config; } diff --git a/storage/src/main/java/org/apache/kafka/server/purgatory/ListOffsetsPartitionStatus.java b/storage/src/main/java/org/apache/kafka/server/purgatory/ListOffsetsPartitionStatus.java index 74623ee802662..3ce7eaac86d5e 100644 --- a/storage/src/main/java/org/apache/kafka/server/purgatory/ListOffsetsPartitionStatus.java +++ b/storage/src/main/java/org/apache/kafka/server/purgatory/ListOffsetsPartitionStatus.java @@ -24,7 +24,7 @@ import java.util.Optional; public class ListOffsetsPartitionStatus { - + private final Optional> futureHolderOpt; private final Optional lastFetchableOffset; private final Optional maybeOffsetsError; @@ -43,37 +43,37 @@ private ListOffsetsPartitionStatus( this.maybeOffsetsError = maybeOffsetsError; this.responseOpt = responseOpt; } - + public static Builder builder() { return new Builder(); } - + public static class Builder { private Optional> futureHolderOpt = Optional.empty(); private Optional lastFetchableOffset = Optional.empty(); private Optional maybeOffsetsError = Optional.empty(); private volatile Optional responseOpt = Optional.empty(); - - public Builder futureHolderOpt(Optional> futureHolder) { + + public Builder futureHolderOpt(Optional> futureHolder) { this.futureHolderOpt = futureHolder; return this; } - + public Builder lastFetchableOffset(Optional lastFetchableOffset) { this.lastFetchableOffset = lastFetchableOffset; return this; } - + public Builder maybeOffsetsError(Optional maybeOffsetsError) { this.maybeOffsetsError = maybeOffsetsError; return this; } - + public Builder responseOpt(Optional responseOpt) { this.responseOpt = responseOpt; return this; } - + public ListOffsetsPartitionStatus build() { return new ListOffsetsPartitionStatus( futureHolderOpt, @@ -82,7 +82,7 @@ public ListOffsetsPartitionStatus build() { responseOpt ); } - + } public Optional> futureHolderOpt() { @@ -104,7 +104,7 @@ public void responseOpt(Optional responseOpt) { public Optional responseOpt() { return responseOpt; } - + public void completed(boolean completed) { this.completed = completed; } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/CleanShutdownFileHandler.java b/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/CleanShutdownFileHandler.java index 4f476f3a0557b..20493562d7cd1 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/CleanShutdownFileHandler.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/CleanShutdownFileHandler.java @@ -104,7 +104,7 @@ public void delete() throws Exception { } public boolean exists() { - return cleanShutdownFile.exists(); + return cleanShutdownFile.exists(); } @Override diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFile.java b/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFile.java index da294d457c3f7..0503e852911c2 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFile.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFile.java @@ -79,7 +79,7 @@ public void maybeFlush() { dirtyTopicIdOpt.ifPresent(topicId -> { try { try (FileOutputStream fileOutputStream = new FileOutputStream(tempPath().toFile()); - BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8))) { + BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8))) { writer.write(new PartitionMetadata(CURRENT_VERSION, topicId).encode()); writer.flush(); fileOutputStream.getFD().sync(); diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/CleanerConfig.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/CleanerConfig.java index 15b3b4cedef3f..25452bc111226 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/CleanerConfig.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/CleanerConfig.java @@ -78,7 +78,7 @@ public class CleanerConfig { public static final String LOG_CLEANER_MIN_COMPACTION_LAG_MS_DOC = "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted."; public static final String LOG_CLEANER_MAX_COMPACTION_LAG_MS_DOC = "The maximum time a message will remain ineligible for compaction in the log. Only applicable for logs that are being compacted."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(LOG_CLEANER_THREADS_PROP, INT, LOG_CLEANER_THREADS, atLeast(0), MEDIUM, LOG_CLEANER_THREADS_DOC) .define(LOG_CLEANER_IO_MAX_BYTES_PER_SECOND_PROP, DOUBLE, LOG_CLEANER_IO_MAX_BYTES_PER_SECOND, MEDIUM, LOG_CLEANER_IO_MAX_BYTES_PER_SECOND_DOC) .define(LOG_CLEANER_DEDUPE_BUFFER_SIZE_PROP, LONG, LOG_CLEANER_DEDUPE_BUFFER_SIZE, MEDIUM, LOG_CLEANER_DEDUPE_BUFFER_SIZE_DOC) diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/IndexEntry.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/IndexEntry.java index d91568a0dfe51..9d032d7ce1e53 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/IndexEntry.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/IndexEntry.java @@ -18,5 +18,6 @@ public interface IndexEntry { long indexKey(); + long indexValue(); } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LazyIndex.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LazyIndex.java index afc1c679c29c5..e953bd9e2f0fb 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LazyIndex.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LazyIndex.java @@ -45,15 +45,20 @@ public class LazyIndex implements Closeable { private enum IndexType { - OFFSET, TIME + OFFSET, TIME } private interface IndexWrapper extends Closeable { File file(); + void updateParentDir(File file); + void renameTo(File file) throws IOException; + boolean deleteIfExists() throws IOException; + void close() throws IOException; + void closeHandler(); } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LocalLog.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LocalLog.java index 5649b674a6791..738d736dd0fb5 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LocalLog.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LocalLog.java @@ -198,7 +198,7 @@ private T maybeHandleIOException(Supplier errorMsgSupplier, StorageA */ public boolean renameDir(String name) { return maybeHandleIOException( - () -> "Error while renaming dir for " + topicPartition + " in log dir " + dir.getParent(), + () -> "Error while renaming dir for " + topicPartition + " in log dir " + dir.getParent(), () -> { File renamedDir = new File(dir.getParent(), name); Utils.atomicMoveWithFallback(dir.toPath(), renamedDir.toPath()); diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleaner.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleaner.java index 72acdf3cfc13a..92f1238977216 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleaner.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleaner.java @@ -621,20 +621,20 @@ private void cleanLog(LogToClean cleanable) throws DigestException { private void recordStats(int id, String name, long from, long to, CleanerStats stats) { this.lastStats = stats; String message = String.format("%n\tLog cleaner thread %d cleaned log %s (dirty section = [%d, %d])%n", id, name, from, to) + - String.format("\t%,.1f MB of log processed in %,.1f seconds (%,.1f MB/sec).%n", mb(stats.bytesRead), + String.format("\t%,.1f MB of log processed in %,.1f seconds (%,.1f MB/sec).%n", mb(stats.bytesRead), stats.elapsedSecs(), mb(stats.bytesRead / stats.elapsedSecs())) + - String.format("\tIndexed %,.1f MB in %.1f seconds (%,.1f Mb/sec, %.1f%% of total time)%n", mb(stats.mapBytesRead), + String.format("\tIndexed %,.1f MB in %.1f seconds (%,.1f Mb/sec, %.1f%% of total time)%n", mb(stats.mapBytesRead), stats.elapsedIndexSecs(), mb(stats.mapBytesRead) / stats.elapsedIndexSecs(), 100 * stats.elapsedIndexSecs() / stats.elapsedSecs()) + - String.format("\tBuffer utilization: %.1f%%%n", 100 * stats.bufferUtilization) + - String.format("\tCleaned %,.1f MB in %.1f seconds (%,.1f Mb/sec, %.1f%% of total time)%n", mb(stats.bytesRead), + String.format("\tBuffer utilization: %.1f%%%n", 100 * stats.bufferUtilization) + + String.format("\tCleaned %,.1f MB in %.1f seconds (%,.1f Mb/sec, %.1f%% of total time)%n", mb(stats.bytesRead), stats.elapsedSecs() - stats.elapsedIndexSecs(), mb(stats.bytesRead) / (stats.elapsedSecs() - stats.elapsedIndexSecs()), 100 * (stats.elapsedSecs() - stats.elapsedIndexSecs()) / stats.elapsedSecs()) + - String.format("\tStart size: %,.1f MB (%,d messages)%n", mb(stats.bytesRead), stats.messagesRead) + - String.format("\tEnd size: %,.1f MB (%,d messages)%n", mb(stats.bytesWritten), stats.messagesWritten) + - String.format("\t%.1f%% size reduction (%.1f%% fewer messages)%n", 100.0 * (1.0 - Long.valueOf(stats.bytesWritten).doubleValue() / stats.bytesRead), + String.format("\tStart size: %,.1f MB (%,d messages)%n", mb(stats.bytesRead), stats.messagesRead) + + String.format("\tEnd size: %,.1f MB (%,d messages)%n", mb(stats.bytesWritten), stats.messagesWritten) + + String.format("\t%.1f%% size reduction (%.1f%% fewer messages)%n", 100.0 * (1.0 - Long.valueOf(stats.bytesWritten).doubleValue() / stats.bytesRead), 100.0 * (1.0 - Long.valueOf(stats.messagesWritten).doubleValue() / stats.messagesRead)); logger.info(message); if (lastPreCleanStats.delayedPartitions() > 0) { diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleanerManager.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleanerManager.java index ba64c1d07b8ea..45b471fd0fef8 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleanerManager.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogCleanerManager.java @@ -248,26 +248,25 @@ public Optional grabFilthiestCompactedLog(Time time, PreCleanStats p !isUncleanablePartition(entry.getValue(), entry.getKey()) ) .map(entry -> { - // create a LogToClean instance for each - TopicPartition topicPartition = entry.getKey(); - UnifiedLog log = entry.getValue(); - try { - Long lastCleanOffset = lastClean.get(topicPartition); - OffsetsToClean offsetsToClean = cleanableOffsets(log, Optional.ofNullable(lastCleanOffset), now); - // update checkpoint for logs with invalid checkpointed offsets - if (offsetsToClean.forceUpdateCheckpoint) { - updateCheckpoints(log.parentDirFile(), Optional.of(Map.entry(topicPartition, offsetsToClean.firstDirtyOffset)), Optional.empty()); - } - long compactionDelayMs = maxCompactionDelay(log, offsetsToClean.firstDirtyOffset, now); - preCleanStats.updateMaxCompactionDelay(compactionDelayMs); - - return new LogToClean(log, offsetsToClean.firstDirtyOffset, - offsetsToClean.firstUncleanableDirtyOffset, compactionDelayMs > 0); - } catch (Throwable e) { - throw new LogCleaningException(log, "Failed to calculate log cleaning stats for partition " + topicPartition, e); - } + // create a LogToClean instance for each + TopicPartition topicPartition = entry.getKey(); + UnifiedLog log = entry.getValue(); + try { + Long lastCleanOffset = lastClean.get(topicPartition); + OffsetsToClean offsetsToClean = cleanableOffsets(log, Optional.ofNullable(lastCleanOffset), now); + // update checkpoint for logs with invalid checkpointed offsets + if (offsetsToClean.forceUpdateCheckpoint) { + updateCheckpoints(log.parentDirFile(), Optional.of(Map.entry(topicPartition, offsetsToClean.firstDirtyOffset)), Optional.empty()); } - ) + long compactionDelayMs = maxCompactionDelay(log, offsetsToClean.firstDirtyOffset, now); + preCleanStats.updateMaxCompactionDelay(compactionDelayMs); + + return new LogToClean(log, offsetsToClean.firstDirtyOffset, + offsetsToClean.firstUncleanableDirtyOffset, compactionDelayMs > 0); + } catch (Throwable e) { + throw new LogCleaningException(log, "Failed to calculate log cleaning stats for partition " + topicPartition, e); + } + }) .filter(ltc -> ltc.totalBytes() > 0) // skip any empty logs .toList(); diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java index 548c2112e2aa3..75eb7eb0b4870 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java @@ -410,7 +410,7 @@ private String dirsToString(Collection dirs) { */ public void handleLogDirFailure(String dir) { LOG.warn("Stopping serving logs in dir {}", dir); - synchronized (logCreationOrDeletionLock) { + synchronized (logCreationOrDeletionLock) { liveLogDirs.remove(new File(dir)); directoryIds.remove(dir); if (liveLogDirs.isEmpty()) { @@ -783,7 +783,7 @@ public void startup(Set topicNames, Function isStra // Visible for testing public Map fetchTopicConfigOverrides(LogConfig defaultConfig, Set topicNames) { - Map topicConfigOverrides = new HashMap<>(); + Map topicConfigOverrides = new HashMap<>(); Map defaultProps = defaultConfig.originals(); topicNames.forEach(topicName -> { Properties overrides = configRepository.topicConfig(topicName); @@ -1503,7 +1503,7 @@ private Map> findAbandonedFutureLogs(int broker * @param topicPartition TopicPartition that needs to be swapped */ public void replaceCurrentWithFutureLog(TopicPartition topicPartition) throws IOException { - synchronized (logCreationOrDeletionLock) { + synchronized (logCreationOrDeletionLock) { UnifiedLog sourceLog = currentLogs.get(topicPartition); UnifiedLog destLog = futureLogs.get(topicPartition); @@ -1588,7 +1588,7 @@ public Optional asyncDelete(TopicPartition topicPartition) { */ public Optional asyncDelete(TopicPartition topicPartition, boolean isFuture, boolean checkpoint, boolean isStray) { Optional removedLogOpt; - synchronized (logCreationOrDeletionLock) { + synchronized (logCreationOrDeletionLock) { removedLogOpt = removeLogAndMetrics(isFuture ? futureLogs : currentLogs, topicPartition); } if (removedLogOpt.isPresent()) { diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogMetricNames.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogMetricNames.java index 7529115baa618..f0ec64654634c 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogMetricNames.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogMetricNames.java @@ -27,8 +27,8 @@ public class LogMetricNames { public static final String RETENTION_SIZE_IN_PERCENT = "RetentionSizeInPercent"; public static final List ALL_METRIC_NAMES = List.of( - NUM_LOG_SEGMENTS, - LOG_START_OFFSET, - LOG_END_OFFSET, SIZE, + NUM_LOG_SEGMENTS, + LOG_START_OFFSET, + LOG_END_OFFSET, SIZE, RETENTION_SIZE_IN_PERCENT); } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/OffsetMap.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/OffsetMap.java index de7deaeb8acc8..61caa1b881168 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/OffsetMap.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/OffsetMap.java @@ -21,12 +21,19 @@ public interface OffsetMap { int slots(); + void put(ByteBuffer key, long offset) throws DigestException; + long get(ByteBuffer key) throws DigestException; + void updateLatestOffset(long offset); + void clear(); + int size(); + long latestOffset(); + default double utilization() { return size() / (double) slots(); } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/TxnMetadata.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/TxnMetadata.java index 0a5fddb302027..7065039048ce7 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/TxnMetadata.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/TxnMetadata.java @@ -32,6 +32,7 @@ public TxnMetadata(long producerId, this.firstOffset = firstOffset; this.lastOffset = lastOffset; } + public TxnMetadata(long producerId, long firstOffset) { this(producerId, new LogOffsetMetadata(firstOffset)); } diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/UnifiedLog.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/UnifiedLog.java index 8d38a02d209dc..aaef9eeafec8f 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/UnifiedLog.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/UnifiedLog.java @@ -623,7 +623,7 @@ private void updateHighWatermarkMetadata(LogOffsetMetadata newHighWatermark) thr throw new IllegalArgumentException("High watermark offset should be non-negative"); } - synchronized (lock) { + synchronized (lock) { if (newHighWatermark.messageOffset < highWatermarkMetadata.messageOffset) { logger.warn("Non-monotonic update of high watermark from {} to {}", highWatermarkMetadata, newHighWatermark); } @@ -1134,7 +1134,7 @@ private LogAppendInfo append(MemoryRecords records, // trim any invalid bytes or partial messages before appending it to the on-disk log final MemoryRecords trimmedRecords = trimInvalidBytes(records, appendInfo); // they are valid, insert them in the log - synchronized (lock) { + synchronized (lock) { return maybeHandleIOException( () -> "Error while appending records to " + topicPartition() + " in dir " + dir().getParent(), () -> { @@ -1354,7 +1354,7 @@ public boolean maybeIncrementLogStartOffset(long newLogStartOffset, LogStartOffs return maybeHandleIOException( () -> "Exception while increasing log start offset for " + topicPartition() + " to " + newLogStartOffset + " in dir " + dir().getParent(), () -> { - synchronized (lock) { + synchronized (lock) { if (newLogStartOffset > highWatermark()) { throw new OffsetOutOfRangeException("Cannot increment the log start offset to " + newLogStartOffset + " of partition " + topicPartition() + " since it is larger than the high watermark " + highWatermark()); @@ -1376,7 +1376,7 @@ public boolean maybeIncrementLogStartOffset(long newLogStartOffset, LogStartOffs } } return false; - }); + }); } private record AnalyzeAndValidateProducerStateResult( @@ -1428,11 +1428,11 @@ private AnalyzeAndValidateProducerStateResult analyzeAndValidateProducerState(Lo // Check epoch first: if producer epoch is stale, throw recoverable InvalidProducerEpochException. ProducerStateEntry entry = producerStateManager.activeProducers().get(batch.producerId()); if (entry != null && batch.producerEpoch() < entry.producerEpoch()) { - String message = "Epoch of producer " + batch.producerId() + " is " + batch.producerEpoch() + + String message = "Epoch of producer " + batch.producerId() + " is " + batch.producerEpoch() + ", which is smaller than the last seen epoch " + entry.producerEpoch(); throw new InvalidProducerEpochException(message); } - + // Only check verification if epoch is current if (batchMissingRequiredVerification(batch, requestVerificationGuard)) { throw new InvalidTxnStateException("Record was not part of an ongoing transaction"); @@ -1741,7 +1741,7 @@ public OffsetResultHolder fetchOffsetByTimestamp(long targetTimestamp, Optional< Optional timestampAndOffsetOpt = findFirst( latestTimestampSegment.log().batchesFrom(position.position()), item -> item.maxTimestamp() == maxTimestampSoFar.timestamp()) - .flatMap(batch -> batch.offsetOfMaxTimestamp() + .flatMap(batch -> batch.offsetOfMaxTimestamp() .map(offset -> new FileRecords.TimestampAndOffset( batch.maxTimestamp(), offset, @@ -1837,7 +1837,7 @@ public LogOffsetMetadata maybeConvertToOffsetMetadata(long offset) throws IOExce * @return The number of segments deleted */ private int deleteOldSegments(DeletionCondition predicate, SegmentDeletionReason reason) throws IOException { - synchronized (lock) { + synchronized (lock) { List deletable = deletableSegments(predicate); if (!deletable.isEmpty()) { return deleteSegments(deletable, reason); @@ -2152,9 +2152,9 @@ private LogSegment maybeRoll(int messagesSize, LogAppendInfo appendInfo) throws if (segment.shouldRoll(new RollParams(config().maxSegmentMs(), config().segmentSize(), appendInfo.maxTimestamp(), appendInfo.lastOffset(), messagesSize, now))) { logger.debug("Rolling new log segment (log_size = {}/{}}, " + - "offset_index_size = {}/{}, " + - "time_index_size = {}/{}, " + - "inactive_time_ms = {}/{}).", + "offset_index_size = {}/{}, " + + "time_index_size = {}/{}, " + + "inactive_time_ms = {}/{}).", segment.size(), config().segmentSize(), segment.offsetIndex().entries(), segment.offsetIndex().maxEntries(), segment.timeIndex().entries(), segment.timeIndex().maxEntries(), @@ -2256,7 +2256,7 @@ private void flush(long offset, boolean includingOffset) { String includingOffsetStr = includingOffset ? "inclusive" : "exclusive"; maybeHandleIOException( () -> "Error while flushing log for " + topicPartition() + " in dir " + dir().getParent() + " with offset " + offset + - " (" + includingOffsetStr + ") and recovery point " + offset, + " (" + includingOffsetStr + ") and recovery point " + offset, () -> { if (flushOffset > localLog.recoveryPoint()) { logger.debug("Flushing log up to offset {} ({}) with recovery point {}, last flushed: {}, current time: {}, unflushed: {}", @@ -2389,7 +2389,7 @@ public void truncateFullyAndStartAt(long newOffset, Optional logStartOffse () -> "Error while truncating the entire log for " + topicPartition() + " in dir " + dir().getParent(), () -> { logger.debug("Truncate and start at offset {}, logStartOffset: {}", newOffset, logStartOffsetOpt.orElse(newOffset)); - synchronized (lock) { + synchronized (lock) { localLog.truncateFullyAndStartAt(newOffset); leaderEpochCache.clearAndFlush(); producerStateManager.truncateFullyAndStartAt(newOffset); diff --git a/storage/src/test/java/org/apache/kafka/admin/RemoteTopicCrudTest.java b/storage/src/test/java/org/apache/kafka/admin/RemoteTopicCrudTest.java index e5b06e05d09e0..4b154c0243da5 100644 --- a/storage/src/test/java/org/apache/kafka/admin/RemoteTopicCrudTest.java +++ b/storage/src/test/java/org/apache/kafka/admin/RemoteTopicCrudTest.java @@ -173,7 +173,7 @@ void testCreateRemoteTopicWithInvalidRetentionSize() { assertFutureThrows(InvalidConfigurationException.class, admin.createTopics(List.of(new NewTopic(testTopicName, numPartitions, numReplicationFactor).configs(topicConfig))).all()); } } - + @ClusterTest void testCreateCompactedRemoteStorage() { var topicConfig = Map.of( @@ -263,7 +263,7 @@ void testCreateTopicRetentionMsValidationWithRemoteCopyDisabled() throws Excepti new AlterConfigOp(new ConfigEntry(TopicConfig.REMOTE_LOG_COPY_DISABLE_CONFIG, "true"), AlterConfigOp.OpType.SET) )); - + var err2 = assertFutureThrows(InvalidConfigurationException.class, admin.incrementalAlterConfigs(configs).all()); assertEquals(errorMsgMs, Objects.requireNonNull(err2).getMessage()); @@ -404,12 +404,12 @@ void testUpdateTopicConfigWithValidRetentionTime() throws Exception { void testUpdateTopicConfigWithValidRetentionSize() throws Exception { try (var admin = cluster.admin()) { var topicConfig = Map.of( - TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG, "true" + TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG, "true" ); admin.createTopics(List.of(new NewTopic(testTopicName, numPartitions, numReplicationFactor) .configs(topicConfig))).all().get(); - + var configs = new HashMap>(); configs.put(new ConfigResource(ConfigResource.Type.TOPIC, testTopicName), List.of( @@ -429,10 +429,10 @@ void testUpdateTopicConfigWithInheritedLocalRetentionTime() throws Exception { var topicConfig = Map.of( TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG, "true" ); - + admin.createTopics(List.of(new NewTopic(testTopicName, numPartitions, numReplicationFactor) - .configs(topicConfig))).all().get(); - + .configs(topicConfig))).all().get(); + // inherited local retention ms is 1000 var configs = new HashMap>(); configs.put(new ConfigResource(ConfigResource.Type.TOPIC, testTopicName), @@ -440,7 +440,7 @@ void testUpdateTopicConfigWithInheritedLocalRetentionTime() throws Exception { new AlterConfigOp(new ConfigEntry(TopicConfig.RETENTION_MS_CONFIG, "200"), AlterConfigOp.OpType.SET) )); - + assertFutureThrows(InvalidConfigurationException.class, admin.incrementalAlterConfigs(configs).all()); } } @@ -451,7 +451,7 @@ void testUpdateTopicConfigWithInheritedLocalRetentionSize() throws Exception { var topicConfig = Map.of( TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG, "true" ); - + admin.createTopics(List.of(new NewTopic(testTopicName, numPartitions, numReplicationFactor) .configs(topicConfig))).all().get(); @@ -462,7 +462,7 @@ void testUpdateTopicConfigWithInheritedLocalRetentionSize() throws Exception { new AlterConfigOp(new ConfigEntry(TopicConfig.RETENTION_BYTES_CONFIG, "512"), AlterConfigOp.OpType.SET) )); - + assertFutureThrows(InvalidConfigurationException.class, admin.incrementalAlterConfigs(configs).all(), "Invalid value 1024 for configuration local.retention.bytes: Value must not be more than retention.bytes property value: 512"); } } @@ -476,19 +476,19 @@ void testUpdateTopicConfigWithDisablingRemoteStorage() throws Exception { admin.createTopics(List.of(new NewTopic(testTopicName, numPartitions, numReplicationFactor) .configs(topicConfig))).all().get(); - + var configs = new HashMap>(); configs.put(new ConfigResource(ConfigResource.Type.TOPIC, testTopicName), List.of( new AlterConfigOp(new ConfigEntry(TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG, "false"), AlterConfigOp.OpType.SET) )); - + assertFutureThrows(InvalidConfigurationException.class, admin.incrementalAlterConfigs(configs).all(), "It is invalid to disable remote storage without deleting remote data. " + - "If you want to keep the remote data and turn to read only, please set `remote.storage.enable=true,remote.log.copy.disable=true`. " + - "If you want to disable remote storage and delete all remote data, please set `remote.storage.enable=false,remote.log.delete.on.disable=true`." + "If you want to keep the remote data and turn to read only, please set `remote.storage.enable=true,remote.log.copy.disable=true`. " + + "If you want to disable remote storage and delete all remote data, please set `remote.storage.enable=false,remote.log.delete.on.disable=true`." ); } } @@ -547,7 +547,7 @@ void testTopicDeletion() throws Exception { }, "Topic should be deleted"); TestUtils.waitForCondition(() -> - numPartitions * MyRemoteLogMetadataManager.SEGMENT_COUNT_PER_PARTITION == MyRemoteStorageManager.DELETE_SEGMENT_EVENT_COUNTER.get(), + numPartitions * MyRemoteLogMetadataManager.SEGMENT_COUNT_PER_PARTITION == MyRemoteStorageManager.DELETE_SEGMENT_EVENT_COUNTER.get(), "Remote log segments should be deleted only once by the leader"); } } @@ -559,50 +559,50 @@ private void verifyRemoteLogTopicConfigs(Map topicConfig) throws .map(broker -> broker.logManager().getLog(new TopicPartition(testTopicName, 0), false)) .flatMap(Optional::stream) .toList(); - + var result = !logBuffer.isEmpty(); - + if (result) { if (topicConfig.containsKey(TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG)) { result = Boolean.parseBoolean( topicConfig.get(TopicConfig.REMOTE_LOG_STORAGE_ENABLE_CONFIG)) == logBuffer.get(0).config().remoteStorageEnable(); } - + if (topicConfig.containsKey(TopicConfig.LOCAL_LOG_RETENTION_BYTES_CONFIG)) { result = result && Long.parseLong( topicConfig.get(TopicConfig.LOCAL_LOG_RETENTION_BYTES_CONFIG)) == logBuffer.get(0).config().localRetentionBytes(); } - + if (topicConfig.containsKey(TopicConfig.LOCAL_LOG_RETENTION_MS_CONFIG)) { result = result && Long.parseLong( topicConfig.get(TopicConfig.LOCAL_LOG_RETENTION_MS_CONFIG)) == logBuffer.get(0).config().localRetentionMs(); } - + if (topicConfig.containsKey(TopicConfig.RETENTION_MS_CONFIG)) { result = result && Long.parseLong( topicConfig.get(TopicConfig.RETENTION_MS_CONFIG)) == logBuffer.get(0).config().retentionMs; } - + if (topicConfig.containsKey(TopicConfig.RETENTION_BYTES_CONFIG)) { result = result && Long.parseLong( topicConfig.get(TopicConfig.RETENTION_BYTES_CONFIG)) == logBuffer.get(0).config().retentionSize; } - + if (topicConfig.containsKey(TopicConfig.REMOTE_LOG_COPY_DISABLE_CONFIG)) { result = result && Boolean.parseBoolean( topicConfig.get(TopicConfig.REMOTE_LOG_COPY_DISABLE_CONFIG)) == logBuffer.get(0).config().remoteLogCopyDisable(); } - + if (topicConfig.containsKey(TopicConfig.REMOTE_LOG_DELETE_ON_DISABLE_CONFIG)) { result = result && Boolean.parseBoolean( diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataFormatterTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataFormatterTest.java index 47925d01a7de3..868ffab4637e5 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataFormatterTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataFormatterTest.java @@ -70,7 +70,7 @@ public void testFormat() throws IOException { try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos)) { try (RemoteLogMetadataSerde.RemoteLogMetadataFormatter formatter = - new RemoteLogMetadataSerde.RemoteLogMetadataFormatter()) { + new RemoteLogMetadataSerde.RemoteLogMetadataFormatter()) { formatter.writeTo(metadataRecord, ps); assertEquals(expected, baos.toString()); } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataSerdeTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataSerdeTest.java index ba2c3d1f26e9e..11a5e0f82df7b 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataSerdeTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogMetadataSerdeTest.java @@ -70,7 +70,7 @@ private RemoteLogSegmentMetadata createRemoteLogSegmentMetadata() { segLeaderEpochs.put(1, 20L); segLeaderEpochs.put(2, 80L); RemoteLogSegmentId remoteLogSegmentId = new RemoteLogSegmentId(TP0, Uuid.randomUuid()); - return new RemoteLogSegmentMetadata(remoteLogSegmentId, 0L, 100L, -1L, 1, + return new RemoteLogSegmentMetadata(remoteLogSegmentId, 0L, 100L, -1L, 1, time.milliseconds(), 1024, Optional.of(new CustomMetadata(new byte[] {0, 1, 2, 3})), COPY_SEGMENT_STARTED, segLeaderEpochs); } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogSegmentLifecycleTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogSegmentLifecycleTest.java index 026111b377929..0826966675910 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogSegmentLifecycleTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/RemoteLogSegmentLifecycleTest.java @@ -350,7 +350,7 @@ public void testCacheListSegments() throws Exception { // listRemoteLogSegments(1) should contain only segment2. List expectedSegmentsForEpoch1 = List.of(segment2); assertTrue(TestUtils.sameElementsWithOrder( - expectedSegmentsForEpoch1.iterator(), metadataManager.listRemoteLogSegments(topicIdPartition, 1))); + expectedSegmentsForEpoch1.iterator(), metadataManager.listRemoteLogSegments(topicIdPartition, 1))); } } } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java index 77233e15a2aec..2f2c2a94e1b7b 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java @@ -119,14 +119,14 @@ public void testDoesTopicExistWithAdminClientExecutionError() throws ExecutionEx Admin mockAdmin = mock(Admin.class); DescribeTopicsResult mockDescribeTopicsResult = mock(DescribeTopicsResult.class); KafkaFuture mockFuture = mock(KafkaFuture.class); - + String topic = "test-topic"; - + // Set up the mock to throw a RuntimeException wrapped in ExecutionException when(mockAdmin.describeTopics(anySet())).thenReturn(mockDescribeTopicsResult); when(mockDescribeTopicsResult.topicNameValues()).thenReturn(Map.of(topic, mockFuture)); when(mockFuture.get()).thenThrow(new ExecutionException("Admin client connection error", new RuntimeException("Connection failed"))); - + // The method should re-throw the ExecutionException since it's not an UnknownTopicOrPartitionException TopicBasedRemoteLogMetadataManager rlmm = topicBasedRlmm(); assertThrows(ExecutionException.class, () -> rlmm.doesTopicExist(mockAdmin, topic)); @@ -349,7 +349,7 @@ public void testInitializationFailure() throws IOException, InterruptedException // Set up a custom exit procedure for testing final AtomicBoolean exitCalled = new AtomicBoolean(false); final AtomicInteger exitCode = new AtomicInteger(-1); - + // Set custom exit procedure that won't actually exit the process Exit.setExitProcedure((statusCode, message) -> { exitCalled.set(true); @@ -364,11 +364,11 @@ public void testInitializationFailure() throws IOException, InterruptedException ); rlmm.configure(configs); rlmm.onBrokerReady(); - + // Wait for initialization failure and exit procedure to be called - TestUtils.waitForCondition(() -> exitCalled.get(), + TestUtils.waitForCondition(() -> exitCalled.get(), "Exit procedure should be called due to initialization failure"); - + // Verify exit code assertEquals(1, exitCode.get(), "Exit code should be 1"); } finally { @@ -407,13 +407,13 @@ private void verifyRemoteLogMetadataTopicWithMinIsr(TopicBasedRemoteLogMetadataM throws ExecutionException, InterruptedException { try (Admin admin = clusterInstance.admin()) { String metadataTopic = TopicBasedRemoteLogMetadataManagerConfig.REMOTE_LOG_METADATA_TOPIC_NAME; - + // Wait for the topic to be created clusterInstance.waitTopicCreation(metadataTopic, RemoteLogMetadataManagerTestUtils.METADATA_TOPIC_PARTITIONS_COUNT); - + // Verify the topic exists assertTrue(rlmm.doesTopicExist(admin, metadataTopic)); - + // Describe the topic configs to verify min.insync.replicas ConfigResource topicResource = new ConfigResource(ConfigResource.Type.TOPIC, metadataTopic); DescribeConfigsResult describeResult = admin.describeConfigs(List.of(topicResource)); @@ -422,7 +422,7 @@ private void verifyRemoteLogMetadataTopicWithMinIsr(TopicBasedRemoteLogMetadataM assertNotNull(config, "Topic config should not be null"); ConfigEntry minIsrEntry = config.get(TopicConfig.MIN_IN_SYNC_REPLICAS_CONFIG); assertNotNull(minIsrEntry, "min.insync.replicas config should exist"); - assertEquals(String.valueOf(expectedMinIsr), minIsrEntry.value(), + assertEquals(String.valueOf(expectedMinIsr), minIsrEntry.value(), "min.insync.replicas should be " + expectedMinIsr + " (" + valueDescription + ")"); } } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorage.java b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorage.java index 69cca4d63e00c..015f09bfad444 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorage.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorage.java @@ -153,7 +153,7 @@ public void transfer(File from, File to) throws IOException { public void transfer(ByteBuffer from, File to) throws IOException { if (from != null && from.hasRemaining()) { try (FileOutputStream fileOutputStream = new FileOutputStream(to, false); - FileChannel channel = fileOutputStream.getChannel()) { + FileChannel channel = fileOutputStream.getChannel()) { channel.write(from); } } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageListener.java b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageListener.java index fcc874467d626..55363ea9f1f73 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageListener.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageListener.java @@ -61,7 +61,7 @@ public void add(final LocalTieredStorageListener listener) { @Override public void onStorageEvent(final LocalTieredStorageEvent event) { - for (final LocalTieredStorageListener listener: listeners) { + for (final LocalTieredStorageListener listener : listeners) { try { listener.onStorageEvent(event); diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageTest.java index a11ba3a2423be..b08ccf50bfb7f 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/LocalTieredStorageTest.java @@ -219,7 +219,7 @@ public void deletePartition() throws RemoteStorageException { } tieredStorage.deletePartition(topicIdPartition); remoteStorageVerifier.assertFileDoesNotExist(remoteStorageVerifier.expectedPartitionPath()); - for (RemoteLogSegmentMetadata segmentMetadata: segmentMetadatas) { + for (RemoteLogSegmentMetadata segmentMetadata : segmentMetadatas) { remoteStorageVerifier.verifyLogSegmentFilesAbsent(segmentMetadata); } } @@ -368,7 +368,7 @@ private static List extractRecordsValue( final FileRecords records = FileRecords.open(snapshot.getFile(id, SEGMENT)); final List buffers = new ArrayList<>(); - for (Record record: records.records()) { + for (Record record : records.records()) { buffers.add(record.value()); } diff --git a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerTest.java b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerTest.java index bd75c8f88851b..7a316841e972a 100644 --- a/storage/src/test/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerTest.java +++ b/storage/src/test/java/org/apache/kafka/server/log/remote/storage/RemoteLogManagerTest.java @@ -243,18 +243,22 @@ void setUp() throws Exception { public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override public RLMQuotaManager createRLMCopyQuotaManager() { return rlmCopyQuotaManager; } + @Override public Duration quotaTimeout() { return Duration.ofMillis(100); } + @Override long findLogStartOffset(TopicIdPartition topicIdPartition, UnifiedLog log) { return 0L; @@ -289,7 +293,7 @@ void testGetLeaderEpochCheckpoint() { } @Test - void testFindHighestRemoteOffsetOnEmptyRemoteStorage() throws RemoteStorageException { + void testFindHighestRemoteOffsetOnEmptyRemoteStorage() throws RemoteStorageException { List totalEpochEntries = List.of( new EpochEntry(0, 0), new EpochEntry(1, 500) @@ -416,6 +420,7 @@ void testRemoteLogMetadataManagerWithEndpointConfigOverridden() throws IOExcepti public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; @@ -1227,7 +1232,7 @@ void testRemoteLogManagerRemoteMetrics() throws Exception { safeLongYammerMetricValue("RemoteLogSizeComputationTime,topic=" + leaderTopic), safeLongYammerMetricValue("RemoteLogSizeComputationTime"))); remoteLogSizeComputationTimeLatch.countDown(); - + TestUtils.waitForCondition( () -> 0 == safeLongYammerMetricValue("RemoteCopyLagBytes") && 0 == safeLongYammerMetricValue("RemoteCopyLagBytes,topic=" + leaderTopic), String.format("Expected to find 0 for RemoteCopyLagBytes metric value, but found %d for topic 'Leader' and %d for all topics.", @@ -1620,7 +1625,7 @@ void testFindOffsetByTimestamp() throws IOException, RemoteStorageException { assertEquals(Optional.of(new FileRecords.TimestampAndOffset(ts + 2, startOffset + 2, Optional.of(targetLeaderEpoch))), maybeTimestampAndOffset2); // Fetching message for `ts+3` will return None as there are no records with timestamp >= ts+3. - Optional maybeTimestampAndOffset3 = remoteLogManager.findOffsetByTimestamp(tp, ts + 3, startOffset, leaderEpochFileCache); + Optional maybeTimestampAndOffset3 = remoteLogManager.findOffsetByTimestamp(tp, ts + 3, startOffset, leaderEpochFileCache); assertEquals(Optional.empty(), maybeTimestampAndOffset3); } @@ -1808,6 +1813,7 @@ void testFetchOffsetByTimestampWithTieredStorageDoesNotFetchIndexWhenExistsLocal public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override Optional lookupTimestamp(RemoteLogSegmentMetadata rlsMetadata, long timestamp, long startingOffset) { return Optional.of(expectedRemoteResult); @@ -1859,11 +1865,12 @@ public void testRemoveMetricsOnClose() throws IOException { try (MockedConstruction mockMetricsGroupCtor = mockConstruction(KafkaMetricsGroup.class)) { RemoteLogManager remoteLogManager = new RemoteLogManager(config, brokerId, logDir, clusterId, time, tp -> Optional.of(mockLog), (topicPartition, offset) -> { - }, brokerTopicStats, metrics, endPoint) { + }, brokerTopicStats, metrics, endPoint) { @Override public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; @@ -2562,7 +2569,7 @@ public void testLogStartOffsetUpdatedOnStartup() throws RemoteStorageException, AtomicLong logStartOffset = new AtomicLong(0); try (RemoteLogManager remoteLogManager = new RemoteLogManager(config, brokerId, logDir, clusterId, time, tp -> Optional.of(mockLog), - (topicPartition, offset) -> logStartOffset.set(offset), + (topicPartition, offset) -> logStartOffset.set(offset), brokerTopicStats, metrics, endPoint) { @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { @@ -2623,18 +2630,22 @@ public synchronized Iterator listRemoteLogSegments(Top public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override public RLMQuotaManager createRLMCopyQuotaManager() { return rlmCopyQuotaManager; } + @Override public Duration quotaTimeout() { return Duration.ofMillis(100); } + @Override long findLogStartOffset(TopicIdPartition topicIdPartition, UnifiedLog log) { return 0L; @@ -2707,7 +2718,7 @@ long findLogStartOffset(TopicIdPartition topicIdPartition, UnifiedLog log) { when(mockLog.config()).thenReturn(mockLogConfig); RemoteLogManager.RLMCopyTask copyTask = remoteLogManager.new RLMCopyTask(leaderTopicIdPartition, 128); - Thread copyThread = new Thread(() -> { + Thread copyThread = new Thread(() -> { try { copyTask.copyLogSegmentsToRemote(mockLog); } catch (InterruptedException | RetriableRemoteStorageException e) { @@ -3356,6 +3367,7 @@ public void testDeleteRetentionMsOnExpiredSegment() throws RemoteStorageExceptio public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; @@ -3527,6 +3539,7 @@ public void testReadForMissingFirstBatchInRemote() throws RemoteStorageException public RemoteStorageManager createRemoteStorageManager() { return rsmManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; @@ -3607,18 +3620,22 @@ public void testReadForFirstBatchMoreThanMaxFetchBytes(boolean minOneMessage) th public RemoteStorageManager createRemoteStorageManager() { return rsmManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override public Optional fetchRemoteLogSegmentMetadata(TopicPartition topicPartition, int epochForOffset, long offset) { return Optional.of(segmentMetadata); } + @Override int lookupPositionForOffset(RemoteLogSegmentMetadata remoteLogSegmentMetadata, long offset) { return 1; } + @Override EnrichedRecordBatch findFirstBatch(RemoteLogInputStream remoteLogInputStream, long offset) { when(firstBatch.sizeInBytes()).thenReturn(recordBatchSizeInBytes); @@ -3695,18 +3712,22 @@ public void testReadForFirstBatchInLogCompaction() throws RemoteStorageException public RemoteStorageManager createRemoteStorageManager() { return rsmManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override public Optional fetchRemoteLogSegmentMetadata(TopicPartition topicPartition, int epochForOffset, long offset) { return Optional.of(segmentMetadata); } + @Override public RemoteLogInputStream getRemoteLogInputStream(InputStream in) { return remoteLogInputStream; } + @Override int lookupPositionForOffset(RemoteLogSegmentMetadata remoteLogSegmentMetadata, long offset) { return 1; @@ -4114,10 +4135,12 @@ public void testRemoteReadFetchDataInfo() throws RemoteStorageException, IOExcep public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override int lookupPositionForOffset(RemoteLogSegmentMetadata remoteLogSegmentMetadata, long offset) { return 0; @@ -4159,18 +4182,22 @@ public void testRLMOpsWhenMetadataIsNotReady() throws InterruptedException, IOEx public RemoteStorageManager createRemoteStorageManager() { return remoteStorageManager; } + @Override public RemoteLogMetadataManager createRemoteLogMetadataManager() { return remoteLogMetadataManager; } + @Override public RLMQuotaManager createRLMCopyQuotaManager() { return rlmCopyQuotaManager; } + @Override public Duration quotaTimeout() { return Duration.ofMillis(100); } + @Override long findLogStartOffset(TopicIdPartition topicIdPartition, UnifiedLog log) { return 0L; @@ -4179,10 +4206,10 @@ long findLogStartOffset(TopicIdPartition topicIdPartition, UnifiedLog log) { CountDownLatch latch = new CountDownLatch(3); // there are 3 RLMTasks, so setting the count to 3 when(remoteLogMetadataManager.isReady(any(TopicIdPartition.class))) - .thenAnswer(ans -> { - latch.countDown(); - return false; - }); + .thenAnswer(ans -> { + latch.countDown(); + return false; + }); remoteLogManager.onLeadershipChange( Set.of(mockPartition(leaderTopicIdPartition)), Set.of(mockPartition(followerTopicIdPartition)), diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFileTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFileTest.java index febcc13a3564c..361373f4aa720 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFileTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/checkpoint/PartitionMetadataFileTest.java @@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -class PartitionMetadataFileTest { +class PartitionMetadataFileTest { private final File dir = TestUtils.tempDirectory(); private final File file = PartitionMetadataFile.newFile(dir); diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/AbstractIndexTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/AbstractIndexTest.java index f6b28345b932e..4fad012fd4d71 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/AbstractIndexTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/AbstractIndexTest.java @@ -36,6 +36,7 @@ public class AbstractIndexTest { private static class TestIndex extends AbstractIndex { private boolean unmapInvoked = false; private MappedByteBuffer unmappedBuffer = null; + public TestIndex(File file, long baseOffset, int maxIndexSize, boolean writable) throws IOException { super(file, baseOffset, maxIndexSize, writable); } diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/BrokerCompressionTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/BrokerCompressionTest.java index 95cf2c514b06f..ec58fb0bdbb3d 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/BrokerCompressionTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/BrokerCompressionTest.java @@ -106,6 +106,6 @@ private static RecordBatch readFirstBatch(UnifiedLog log) throws IOException { private static Stream allCompressionParameters() { return Arrays.stream(BrokerCompressionType.values()) .flatMap(brokerCompression -> Arrays.stream(CompressionType.values()) - .map(messageCompression -> Arguments.of(messageCompression, brokerCompression))); + .map(messageCompression -> Arguments.of(messageCompression, brokerCompression))); } } diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/LogTestUtils.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/LogTestUtils.java index 67f8cb61e50b6..1bcfd17396ecd 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/LogTestUtils.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/LogTestUtils.java @@ -418,7 +418,7 @@ public LogConfig build() { return new LogConfig(configs); } } - + public static class FakeOffsetMap implements OffsetMap { private final Map map = new HashMap<>(); @@ -428,36 +428,36 @@ public static class FakeOffsetMap implements OffsetMap { public int slots() { return Integer.MAX_VALUE; } - + @Override public void put(ByteBuffer key, long offset) { latestOff = offset; map.put(new String(Utils.readBytes(key.duplicate()), StandardCharsets.UTF_8), offset); } - + @Override public long get(ByteBuffer key) { return map.getOrDefault(new String(Utils.readBytes(key.duplicate()), StandardCharsets.UTF_8), -1L); } - + @Override public void updateLatestOffset(long offset) { latestOff = offset; } - + @Override public void clear() { map.clear(); } - + @Override public int size() { return map.size(); } - + @Override public long latestOffset() { return latestOff; } - } + } } diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/LogValidatorTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/LogValidatorTest.java index d21ec04e0a41c..f2ac47d04bf86 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/LogValidatorTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/LogValidatorTest.java @@ -198,6 +198,7 @@ public void checkMismatchMagic(byte batchMagic, byte recordMagic, String compres assertTrue(metricsRecorder.recordInvalidMagicCount > 0); } + @Test public void testCreateTimeUpConversionV1ToV2() { long timestamp = System.currentTimeMillis(); @@ -429,7 +430,7 @@ private MemoryRecords recordsWithNonSequentialInnerOffsets(Byte magicValue, Comp @ParameterizedTest @CsvSource({"0,none,none", "1,none,none", "0,none,gzip", "1,none,gzip"}) public void checkAllowMultiBatch(Byte magic, String sourceCompression, String targetCompression) { - validateMessages(createTwoBatchedRecords(magic, Compression.of(sourceCompression).build()), magic, + validateMessages(createTwoBatchedRecords(magic, Compression.of(sourceCompression).build()), magic, CompressionType.forName(sourceCompression), Compression.of(targetCompression).build()); } diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/OffsetMapTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/OffsetMapTest.java index fd014ae38728f..3d7f720ae35a0 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/OffsetMapTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/OffsetMapTest.java @@ -89,7 +89,7 @@ public void testLatestOffset() throws Exception { } assertEquals(i - 1, map.latestOffset()); } - + @Test public void testUtilization() throws Exception { SkimpyOffsetMap map = new SkimpyOffsetMap(MEMORY_SIZE); diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/ProducerStateManagerTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/ProducerStateManagerTest.java index c1a2d7007baa8..6e8cdf0d9a639 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/ProducerStateManagerTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/ProducerStateManagerTest.java @@ -148,7 +148,7 @@ public void testProducerSequenceWrapAround() { short epoch = 15; int sequence = Integer.MAX_VALUE; long offset = 735L; - + appendReplicationEntry(stateManager, epoch, sequence, offset); appendClientEntry(stateManager, producerId, epoch, 0, offset + 500, false); @@ -238,7 +238,7 @@ public void testTxnFirstOffsetMetadataCached() { stateManager.maybeCreateVerificationStateEntry(producerId, defaultSequence, epoch, true)); LogOffsetMetadata firstOffsetMetadata = new LogOffsetMetadata(offset, 990000L, 234224); - appendInfo.appendDataBatch(epoch, defaultSequence, defaultSequence, + appendInfo.appendDataBatch(epoch, defaultSequence, defaultSequence, time.milliseconds(), firstOffsetMetadata, offset, true); stateManager.update(appendInfo); @@ -791,7 +791,7 @@ public void testFirstUnstableOffset(short transactionVersion) { @Test public void testProducersWithOngoingTransactionsDontExpire() { short epoch = 5; - + appendClientEntry(stateManager, producerId, epoch, defaultSequence, 99, true); assertEquals(OptionalLong.of(99L), stateManager.firstUndecidedOffset()); @@ -831,7 +831,7 @@ public void testOldEpochForControlRecord(short transactionVersion) { assertThrows(InvalidProducerEpochException.class, () -> appendEndTxnMarker(stateManager, producerId, (short) 3, ControlRecordType.COMMIT, 100, transactionVersion)); - + // For TV2, same epoch should also be rejected (requires strict >) if (transactionVersion >= 2) { assertThrows(InvalidProducerEpochException.class, @@ -1119,13 +1119,13 @@ public void testRejectNonZeroSequenceForTransactionsV2WithEmptyState() { epoch, true ); - + // Verify this is actually transactions v2 assertTrue( verificationEntry.supportsEpochBump(), "Should be using transactions v2 (supports epoch bump)" ); - + // Create ProducerAppendInfo with empty producer state ProducerAppendInfo appendInfo = new ProducerAppendInfo( partition, @@ -1134,7 +1134,7 @@ public void testRejectNonZeroSequenceForTransactionsV2WithEmptyState() { AppendOrigin.CLIENT, verificationEntry ); - + // Attempting to append with non-zero sequence number should fail for transactions v2 OutOfOrderSequenceException exception = assertThrows( OutOfOrderSequenceException.class, @@ -1146,12 +1146,12 @@ public void testRejectNonZeroSequenceForTransactionsV2WithEmptyState() { new LogOffsetMetadata(0L), 0L, false ) ); - + assertTrue(exception.getMessage().contains("Expected sequence 0 for " + "transactions v2 idempotent producer" )); assertTrue(exception.getMessage().contains("5 (incoming seq. number)")); - + // Attempting to append with sequence 0 should succeed assertDoesNotThrow(() -> appendInfo.appendDataBatch( epoch, @@ -1172,13 +1172,13 @@ public void testAllowNonZeroSequenceForTransactionsV1WithEmptyState() { epoch, false ); - + // Verify this is transactions v1 assertFalse( verificationEntry.supportsEpochBump(), "Should be using transactions v1 (does not support epoch bump)" ); - + // Create ProducerAppendInfo with empty producer state ProducerAppendInfo appendInfo = new ProducerAppendInfo( partition, @@ -1187,7 +1187,7 @@ public void testAllowNonZeroSequenceForTransactionsV1WithEmptyState() { AppendOrigin.CLIENT, verificationEntry ); - + // Attempting to append with non-zero sequence number should succeed for transactions v1 // (our validation should not trigger) assertDoesNotThrow(() -> appendInfo.appendDataBatch( @@ -1205,7 +1205,7 @@ public void testRejectNonZeroSequenceForDirectEpochBump() { appendClientEntry(stateManager, producerId, epoch, 0, 0L, false); appendClientEntry(stateManager, producerId, epoch, 1, 1L, false); appendClientEntry(stateManager, producerId, epoch, 2, 2L, false); - + // Verify initial state ProducerStateEntry initialEntry = getLastEntryOrElseThrownByProducerId(stateManager, producerId); assertEquals(0, initialEntry.producerEpoch()); @@ -1213,7 +1213,7 @@ public void testRejectNonZeroSequenceForDirectEpochBump() { assertFalse(initialEntry.isEmpty()); // Has batch metadata ProducerAppendInfo appendInfo = stateManager.prepareUpdate(producerId, AppendOrigin.CLIENT); - + // Test Case 1: Epoch bump (0 -> 1) with non-zero sequence should be rejected OutOfOrderSequenceException exception = assertThrows(OutOfOrderSequenceException.class, () -> appendInfo.appendDataBatch( @@ -1223,12 +1223,12 @@ public void testRejectNonZeroSequenceForDirectEpochBump() { time.milliseconds(), new LogOffsetMetadata(3L), 3L, false) ); - + assertTrue(exception.getMessage().contains("Invalid sequence number for new epoch")); assertTrue(exception.getMessage().contains("1 (request epoch)")); assertTrue(exception.getMessage().contains("5 (seq. number)")); assertTrue(exception.getMessage().contains("0 (current producer epoch)")); - + // Test Case 2: Epoch bump (0 -> 1) with sequence 0 should succeed ProducerAppendInfo appendInfo2 = stateManager.prepareUpdate(producerId, AppendOrigin.CLIENT); assertDoesNotThrow(() -> appendInfo2.appendDataBatch( diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/RemoteIndexCacheTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/RemoteIndexCacheTest.java index dc9c07839c96b..d16fa73aaa33c 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/RemoteIndexCacheTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/RemoteIndexCacheTest.java @@ -1298,7 +1298,7 @@ private Optional getIndexFileFromRemoteCacheDir(RemoteIndexCache cache, St return Files.walk(cache.cacheDir().toPath()) .filter(Files::isRegularFile) .filter(path -> path.getFileName().toString().endsWith(suffix)) - .findAny(); + .findAny(); } catch (IOException exc) { return Optional.empty(); } diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/TimeIndexTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/TimeIndexTest.java index 7cb7a0d589616..71fd6822b96b7 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/TimeIndexTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/TimeIndexTest.java @@ -120,6 +120,7 @@ public TimestampOffset lastEntry() { long timestamp = shouldCorruptTimestamp ? firstEntry.timestamp() - 1 : superLastEntry.timestamp(); return new TimestampOffset(timestamp, offset); } + @Override public long length() { long superLength = super.length(); diff --git a/storage/src/test/java/org/apache/kafka/storage/internals/log/UnifiedLogTest.java b/storage/src/test/java/org/apache/kafka/storage/internals/log/UnifiedLogTest.java index 48953d133a5f7..b5bf151bd16c2 100644 --- a/storage/src/test/java/org/apache/kafka/storage/internals/log/UnifiedLogTest.java +++ b/storage/src/test/java/org/apache/kafka/storage/internals/log/UnifiedLogTest.java @@ -228,7 +228,7 @@ public void followerShouldSaveEpochInformationFromReplicatedMessagesToTheEpochCa @Test public void shouldTruncateLeaderEpochsWhenDeletingSegments() throws IOException { - Supplier records = () -> singletonRecords("test".getBytes()); + Supplier records = () -> singletonRecords("test".getBytes()); LogConfig config = new LogTestUtils.LogConfigBuilder() .segmentBytes(records.get().sizeInBytes() * 5) .retentionBytes(records.get().sizeInBytes() * 10L) @@ -791,7 +791,7 @@ public void testAppendInfoFirstOffset() throws IOException { assertEquals(simpleRecords.size(), secondAppendInfo.firstOffset()); log.roll(); - LogAppendInfo afterRollAppendInfo = log.appendAsLeader(LogTestUtils.records(simpleRecords), 0); + LogAppendInfo afterRollAppendInfo = log.appendAsLeader(LogTestUtils.records(simpleRecords), 0); assertEquals(simpleRecords.size() * 2, afterRollAppendInfo.firstOffset()); } @@ -1455,6 +1455,7 @@ public void testRebuildProducerIdMapWithCompactedData() throws IOException { public MemoryRecords.RecordFilter.BatchRetentionResult checkBatchRetention(RecordBatch batch) { return new MemoryRecords.RecordFilter.BatchRetentionResult(MemoryRecords.RecordFilter.BatchRetention.DELETE_EMPTY, false); } + @Override public boolean shouldRetainRecord(RecordBatch recordBatch, Record record) { return !record.hasKey(); @@ -1508,6 +1509,7 @@ public void testRebuildProducerStateWithEmptyCompactedBatch() throws IOException public MemoryRecords.RecordFilter.BatchRetentionResult checkBatchRetention(RecordBatch batch) { return new MemoryRecords.RecordFilter.BatchRetentionResult(MemoryRecords.RecordFilter.BatchRetention.RETAIN_EMPTY, true); } + @Override public boolean shouldRetainRecord(RecordBatch recordBatch, Record record) { return false; } @@ -1561,6 +1563,7 @@ public void testUpdateProducerIdMapWithCompactedData() throws IOException { @Override public MemoryRecords.RecordFilter.BatchRetentionResult checkBatchRetention(RecordBatch batch) { return new MemoryRecords.RecordFilter.BatchRetentionResult(MemoryRecords.RecordFilter.BatchRetention.DELETE_EMPTY, false); } + @Override public boolean shouldRetainRecord(RecordBatch recordBatch, Record record) { return !record.hasKey(); } diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestBuilder.java b/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestBuilder.java index db9fd4f9b9bf8..d443468cfed61 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestBuilder.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestBuilder.java @@ -159,7 +159,7 @@ public TieredStorageTestBuilder expectSegmentToBeOffloaded(int fromBroker, KeyValueSpec... keyValues) { TopicPartition topicPartition = new TopicPartition(topic, partition); List> records = new ArrayList<>(); - for (KeyValueSpec kv: keyValues) { + for (KeyValueSpec kv : keyValues) { records.add(new ProducerRecord<>(topic, partition, kv.getTimestamp(), kv.getKey(), kv.getValue())); } offloadables.computeIfAbsent(topicPartition, k -> new ArrayList<>()) diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestHarness.java b/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestHarness.java index 40334a1726d47..f8ab4f7bf4024 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestHarness.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/TieredStorageTestHarness.java @@ -50,6 +50,7 @@ import static org.apache.kafka.tiered.storage.utils.TieredStorageTestUtils.STORAGE_WAIT_TIMEOUT_SEC; import static org.apache.kafka.tiered.storage.utils.TieredStorageTestUtils.createPropsForRemoteStorage; + /** * Base class for integration tests exercising the tiered storage functionality in Apache Kafka. * This uses a {@link LocalTieredStorage} instance as the second-tier storage system and diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/AlterLogDirAction.java b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/AlterLogDirAction.java index a4dc285600aae..aa47e6c8ca337 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/AlterLogDirAction.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/AlterLogDirAction.java @@ -68,7 +68,7 @@ public void doExecute(TieredStorageTestContext context) throws InterruptedExcept // wait until the topic partition folder disappears from source dir and appears in the target dir TestUtils.waitForCondition(() -> localStorage.get().dirContainsTopicPartition(topicPartition, targetDir.get()) && - !localStorage.get().dirContainsTopicPartition(topicPartition, sourceDir.get()), + !localStorage.get().dirContainsTopicPartition(topicPartition, sourceDir.get()), "Failed to alter dir:" + logDirs); } diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/ConsumeAction.java b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/ConsumeAction.java index 580b2324b21ee..25ebac648f6f9 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/ConsumeAction.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/ConsumeAction.java @@ -174,7 +174,7 @@ private String errorMessage( ) { return String.format( "Expected %s requests count from broker %d to tiered storage for topic-partition %s to be %s %d, " + - "but actual count was %d.", + "but actual count was %d.", eventType, remoteFetchSpec.sourceBrokerId(), remoteFetchSpec.topicPartition(), diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/UpdateTopicConfigAction.java b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/UpdateTopicConfigAction.java index 7cb6fa4b5c2c6..d478a2a75ee73 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/actions/UpdateTopicConfigAction.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/actions/UpdateTopicConfigAction.java @@ -38,6 +38,7 @@ public UpdateTopicConfigAction(String topic, this.configsToBeAdded = configsToBeAdded; this.configsToBeDeleted = configsToBeDeleted; } + @Override public void doExecute(TieredStorageTestContext context) throws ExecutionException, InterruptedException, TimeoutException { diff --git a/storage/src/test/java/org/apache/kafka/tiered/storage/utils/BrokerLocalStorage.java b/storage/src/test/java/org/apache/kafka/tiered/storage/utils/BrokerLocalStorage.java index 35b9350273364..7a76ab9d3427a 100644 --- a/storage/src/test/java/org/apache/kafka/tiered/storage/utils/BrokerLocalStorage.java +++ b/storage/src/test/java/org/apache/kafka/tiered/storage/utils/BrokerLocalStorage.java @@ -139,7 +139,7 @@ private void waitForOffset(TopicPartition topicPartition, */ private boolean isOffsetPresentInFirstLocalSegment(TopicPartition topicPartition, Long firstLogFileBaseOffset, - Long offsetToSearch) { + Long offsetToSearch) { if (offsetToSearch < firstLogFileBaseOffset) { return false; } @@ -150,7 +150,7 @@ private boolean isOffsetPresentInFirstLocalSegment(TopicPartition topicPartition .filter(dir -> dirContainsTopicPartition(topicPartition, dir)) .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.format("[BrokerId=%d] Directory for the topic-partition %s " + - "was not found", brokerId, topicPartition))); + "was not found", brokerId, topicPartition))); File partitionDir = new File(logDir.getAbsolutePath(), topicPartition.toString()); File firstSegmentFile = new File(partitionDir.getAbsolutePath(), LogFileUtils.filenamePrefixFromOffset(firstLogFileBaseOffset) + LogFileUtils.LOG_FILE_SUFFIX); diff --git a/streams/examples/src/test/java/org/apache/kafka/streams/examples/docs/DeveloperGuideTesting.java b/streams/examples/src/test/java/org/apache/kafka/streams/examples/docs/DeveloperGuideTesting.java index d0b9864c9f5dd..28e287bb8cc06 100644 --- a/streams/examples/src/test/java/org/apache/kafka/streams/examples/docs/DeveloperGuideTesting.java +++ b/streams/examples/src/test/java/org/apache/kafka/streams/examples/docs/DeveloperGuideTesting.java @@ -127,10 +127,10 @@ public void shouldUpdateStoreForNewKey() { @Test public void shouldPunctuateIfEvenTimeAdvances() { final Instant recordTime = Instant.now(); - inputTopic.pipeInput("a", 1L, recordTime); + inputTopic.pipeInput("a", 1L, recordTime); assertThat(outputTopic.readKeyValue(), equalTo(new KeyValue<>("a", 21L))); - inputTopic.pipeInput("a", 1L, recordTime); + inputTopic.pipeInput("a", 1L, recordTime); assertThat(outputTopic.isEmpty(), is(true)); inputTopic.pipeInput("a", 1L, recordTime.plusSeconds(10L)); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AdjustStreamThreadCountTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AdjustStreamThreadCountTest.java index d9779b5a9c564..4bc2e63647ced 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AdjustStreamThreadCountTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AdjustStreamThreadCountTest.java @@ -151,7 +151,7 @@ private void produceTestRecords(final String inputTopic, final EmbeddedKafkaClus final String value = "value-" + i; producer.send(new ProducerRecord<>(inputTopic, key, value)); } - } + } } private void startStreamsAndWaitForRunning(final KafkaStreams kafkaStreams) throws InterruptedException { @@ -290,7 +290,7 @@ public void shouldAddAndRemoveThreadsMultipleTimes() throws InterruptedException DEFAULT_DURATION.toMillis(), "Kafka Streams did not stabilize at the expected thread count and RUNNING state." ); - + threadMetadata = kafkaStreams.metadataForLocalThreads(); assertThat(threadMetadata.size(), equalTo(oldThreadCount)); } catch (final AssertionError e) { @@ -494,7 +494,7 @@ public void shouldResizeCacheAfterThreadReplacement() throws InterruptedExceptio final AtomicBoolean injectError = new AtomicBoolean(false); - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream = builder.stream(inputTopic); stream.process(() -> new Processor() { ProcessorContext context; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AtLeastOnceDeliveryMessageLossIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AtLeastOnceDeliveryMessageLossIntegrationTest.java index 59753b3921a1b..d547951b25fb7 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AtLeastOnceDeliveryMessageLossIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/AtLeastOnceDeliveryMessageLossIntegrationTest.java @@ -74,42 +74,42 @@ public class AtLeastOnceDeliveryMessageLossIntegrationTest { private static final Logger log = LoggerFactory.getLogger( AtLeastOnceDeliveryMessageLossIntegrationTest.class); - + private static final int NUM_BROKERS = 1; private static final int LARGE_RECORD_COUNT = 50000; private static final int SMALL_RECORD_COUNT = 40000; - + public static final EmbeddedKafkaCluster CLUSTER = new EmbeddedKafkaCluster(NUM_BROKERS); - + @BeforeAll public static void startCluster() throws IOException { CLUSTER.start(); } - + @AfterAll public static void closeCluster() { CLUSTER.stop(); } - + private String applicationId; private String inputTopic; private String outputTopic; private Properties streamsConfiguration; private KafkaStreams kafkaStreams; - + @BeforeEach public void setUp(final TestInfo testInfo) throws Exception { final String testId = safeUniqueTestName(testInfo); applicationId = "app-" + testId; inputTopic = "input-" + testId; outputTopic = "output-" + testId; - + cleanStateBeforeTest(CLUSTER, inputTopic, outputTopic); CLUSTER.createTopics(inputTopic, outputTopic); - + setupStreamsConfiguration(); } - + @AfterEach public void cleanUp() throws Exception { if (kafkaStreams != null) { @@ -122,7 +122,7 @@ public void cleanUp() throws Exception { @Test public void shouldCommitOffsetsAndProduceOutputRecordsWhenProducerFailsWithMessageTooLarge() throws Exception { - + try (final LogCaptureAppender appender = LogCaptureAppender.createAndRegister(Sender.class)) { produceInputData(LARGE_RECORD_COUNT); @@ -150,11 +150,11 @@ private void setupStreamsConfiguration() { streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getPath()); streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass()); streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass()); - + // AT_LEAST_ONCE processing guarantee streamsConfiguration.put(StreamsConfig.PROCESSING_GUARANTEE_CONFIG, StreamsConfig.AT_LEAST_ONCE); streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 30000L); - + // Producer configuration that can trigger MESSAGE_TOO_LARGE errors streamsConfiguration.put(ProducerConfig.LINGER_MS_CONFIG, 300000); streamsConfiguration.put(ProducerConfig.BATCH_SIZE_CONFIG, 33554432); @@ -165,7 +165,7 @@ private void produceInputData(final int recordCount) throws Exception { for (int i = 1; i <= recordCount; i++) { inputRecords.add(new KeyValue<>(String.valueOf(i), "item-" + i)); } - + IntegrationTestUtils.produceKeyValuesSynchronously( inputTopic, inputRecords, @@ -173,7 +173,7 @@ private void produceInputData(final int recordCount) throws Exception { CLUSTER.time ); } - + private void waitForProcessingAndCommit() throws Exception { // Wait slightly longer than commit interval to ensure processing and offset commits waitForCondition( @@ -194,25 +194,25 @@ private void waitForProcessingAndCommit() throws Exception { "Waiting for consumer offsets to be committed" ); } - + private boolean verifyConsumerOffsetsCommitted(final int expectedOffset) throws Exception { try (final Admin adminClient = Admin.create(mkMap( mkEntry(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers())))) { - + final TopicPartition topicPartition = new TopicPartition(inputTopic, 0); - + final long committedOffset = adminClient - .listConsumerGroupOffsets(applicationId) + .listConsumerGroupOffsets(applicationId) .partitionsToOffsetAndMetadata() .get() .get(topicPartition) .offset(); - + log.info("Consumer group {} committed offset: {} (expected: {})", applicationId, committedOffset, expectedOffset); return committedOffset == expectedOffset; } } - + private int verifyOutputRecords(final int expectedRecordCount) { try { final List> outputRecords = @@ -237,14 +237,14 @@ private int verifyOutputRecords(final int expectedRecordCount) { private KafkaStreams createStreamsApplication() { final StreamsBuilder builder = new StreamsBuilder(); - + final KStream input = builder.stream(inputTopic); input.peek((key, value) -> { if (Integer.parseInt(key) % 1000 == 0) { log.debug("Processing record {}: {} -> {}", key, key, value); } }).to(outputTopic); - + return new KafkaStreams(builder.build(), streamsConfiguration); } } \ No newline at end of file diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/DeadLetterQueueIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/DeadLetterQueueIntegrationTest.java index 3d7f91e4fc7e5..3f987bdb16e99 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/DeadLetterQueueIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/DeadLetterQueueIntegrationTest.java @@ -362,8 +362,7 @@ private KafkaStreams getDslStreams(final String processingExceptionHandlerClass) throw new RuntimeException("KABOOM"); } return v; - } - ) + }) .to(OUTPUT_TOPIC, Produced.with(Serdes.String(), Serdes.String())); return new KafkaStreams(builder.build(), getProcessingProperties(processingExceptionHandlerClass)); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EOSUncleanShutdownIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EOSUncleanShutdownIntegrationTest.java index 32f5dd69b75ed..ce8cd473f33d2 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EOSUncleanShutdownIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EOSUncleanShutdownIntegrationTest.java @@ -120,7 +120,7 @@ public void shouldWorkWithUncleanShutdownWipeOutStateStore() throws InterruptedE mkEntry(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ((Serializer) STRING_SERIALIZER).getClass().getName()), mkEntry(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()) )); - final KafkaStreams driver = new KafkaStreams(builder.build(), STREAMS_CONFIG); + final KafkaStreams driver = new KafkaStreams(builder.build(), STREAMS_CONFIG); driver.cleanUp(); driver.start(); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EmitOnChangeIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EmitOnChangeIntegrationTest.java index 020436be41997..f4abf6267d774 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EmitOnChangeIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EmitOnChangeIntegrationTest.java @@ -84,7 +84,7 @@ public void setup(final TestInfo testInfo) { @Test public void shouldEmitSameRecordAfterFailover() throws Exception { - final Properties properties = mkObjectProperties( + final Properties properties = mkObjectProperties( mkMap( mkEntry(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()), mkEntry(StreamsConfig.APPLICATION_ID_CONFIG, appId), diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EosIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EosIntegrationTest.java index a6cb68f5283f6..fe20fdaec5d6a 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EosIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/EosIntegrationTest.java @@ -1142,73 +1142,73 @@ private KafkaStreams getKafkaStreams(final String dummyHostName, final KStream input = builder.stream(MULTI_PARTITION_INPUT_TOPIC); input.process(() -> new Processor() { - ProcessorContext context; - KeyValueStore state = null; + ProcessorContext context; + KeyValueStore state = null; - @Override - public void init(final ProcessorContext context) { - this.context = context; + @Override + public void init(final ProcessorContext context) { + this.context = context; - if (withState) { - state = context.getStateStore(storeName); - } + if (withState) { + state = context.getStateStore(storeName); } + } - @Override - public void process(final Record record) { - if (stallInjected.compareAndSet(true, false)) { - LOG.info(dummyHostName + " is executing the injected stall"); - stallingHost.set(dummyHostName); - while (doStall) { - final Thread thread = Thread.currentThread(); - if (thread.isInterrupted()) { + @Override + public void process(final Record record) { + if (stallInjected.compareAndSet(true, false)) { + LOG.info(dummyHostName + " is executing the injected stall"); + stallingHost.set(dummyHostName); + while (doStall) { + final Thread thread = Thread.currentThread(); + if (thread.isInterrupted()) { + throw new RuntimeException("Detected we've been interrupted."); + } + if (!processingThreadsEnabled) { + if (!((StreamThread) thread).isRunning()) { throw new RuntimeException("Detected we've been interrupted."); } - if (!processingThreadsEnabled) { - if (!((StreamThread) thread).isRunning()) { - throw new RuntimeException("Detected we've been interrupted."); - } - } - try { - Thread.sleep(100); - } catch (final InterruptedException e) { - throw new RuntimeException(e); - } + } + try { + Thread.sleep(100); + } catch (final InterruptedException e) { + throw new RuntimeException(e); } } + } - final long key = record.key(); - final long value = record.value(); + final long key = record.key(); + final long value = record.value(); - if ((value + 1) % 10 == 0) { - context.commit(); - commitRequested.incrementAndGet(); - } + if ((value + 1) % 10 == 0) { + context.commit(); + commitRequested.incrementAndGet(); + } - if (state != null) { - Long sum = state.get(key); + if (state != null) { + Long sum = state.get(key); - if (sum == null) { - sum = value; - } else { - sum += value; - } - state.put(key, sum); + if (sum == null) { + sum = value; + } else { + sum += value; } + state.put(key, sum); + } - if (errorInjected.compareAndSet(true, false)) { - // only tries to fail once on one of the task - throw new RuntimeException("Injected test exception."); - } + if (errorInjected.compareAndSet(true, false)) { + // only tries to fail once on one of the task + throw new RuntimeException("Injected test exception."); + } - if (state != null) { - context.forward(record.withValue(state.get(key))); - } else { - context.forward(record); - } + if (state != null) { + context.forward(record.withValue(state.get(key))); + } else { + context.forward(record); } - }, storeNames) + } + }, storeNames) .to(SINGLE_PARTITION_OUTPUT_TOPIC); stateTmpDir = TestUtils.tempDirectory().getPath() + File.separator; @@ -1394,7 +1394,7 @@ private void verifyStateStore(final KafkaStreams streams, final StateQueryResult> result = IntegrationTestUtils.iqv2WaitForResult(streams, request); - for (final QueryResult> partitionResult: result.getPartitionResults().values()) { + for (final QueryResult> partitionResult : result.getPartitionResults().values()) { try (final KeyValueIterator it = partitionResult.getResult()) { while (it.hasNext()) { assertTrue(expectedStoreContent.remove(it.next()), reason); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/FineGrainedAutoResetIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/FineGrainedAutoResetIntegrationTest.java index 7f2459cab3150..42b018c6835b5 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/FineGrainedAutoResetIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/FineGrainedAutoResetIntegrationTest.java @@ -426,6 +426,7 @@ public void shouldThrowStreamsExceptionNoResetSpecified() throws InterruptedExce private static final class TestingUncaughtExceptionHandler implements StreamsUncaughtExceptionHandler { boolean correctExceptionThrown = false; + @Override public StreamThreadExceptionResponse handle(final Throwable throwable) { assertThat(throwable.getClass().getSimpleName(), is("StreamsException")); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableEOSIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableEOSIntegrationTest.java index 5f0925dca91d2..1da414439feaf 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableEOSIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableEOSIntegrationTest.java @@ -322,7 +322,7 @@ public void shouldNotRestoreAbortedMessages(final boolean withHeaders) throws Ex produceAbortedMessages(); startStreams(withHeaders); - + final Map expected = new HashMap<>(); expected.put(1L, "A"); expected.put(2L, "B"); @@ -355,7 +355,7 @@ private void createTopics(final String safeTestName) throws Exception { CLUSTER.createTopics(streamTopic); CLUSTER.createTopic(globalTableTopic, 2, 1); } - + private void startStreams(final boolean withHeaders) { StreamsTestUtils.maybeSetDslStoreFormatHeaders(streamsConfiguration, withHeaders); startStreams(null); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableIntegrationTest.java index b4a73ccb60304..025f8f896293b 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/GlobalKTableIntegrationTest.java @@ -113,7 +113,7 @@ public static void closeCluster() { public void before(final TestInfo testInfo) throws Exception { TestGlobalProcessingExceptionHandler.handlerInvoked.set(false); TestGlobalProcessingExceptionHandler.shouldResume = false; - + builder = new StreamsBuilder(); final String safeTestName = safeUniqueTestName(testInfo); createTopics(safeTestName); @@ -459,7 +459,7 @@ public void testProcessingExceptionHandlerContinueEnabledRunTimePhase(final bool startStreams(); waitForApplicationState(singletonList(kafkaStreams), State.RUNNING, Duration.ofSeconds(30)); produceInitialGlobalTableValues(); - + TestUtils.waitForCondition( () -> TestGlobalProcessingExceptionHandler.handlerInvoked.get(), Duration.ofSeconds(30).toMillis(), diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HandlingSourceTopicDeletionIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HandlingSourceTopicDeletionIntegrationTest.java index f31e79c53992f..b4e73cc8665ab 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HandlingSourceTopicDeletionIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HandlingSourceTopicDeletionIntegrationTest.java @@ -101,7 +101,7 @@ public void shouldThrowErrorAfterSourceTopicDeleted(final String groupProtocol, try (final KafkaStreams kafkaStreams1 = new KafkaStreams(topology, streamsConfiguration); final KafkaStreams kafkaStreams2 = new KafkaStreams(topology, streamsConfiguration)) { - + kafkaStreams1.setUncaughtExceptionHandler(exception -> { calledUncaughtExceptionHandler1.set(true); return StreamsUncaughtExceptionHandler.StreamThreadExceptionResponse.SHUTDOWN_CLIENT; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HighAvailabilityTaskAssignorIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HighAvailabilityTaskAssignorIntegrationTest.java index 42ad0277d5dd2..de395df7cbeec 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HighAvailabilityTaskAssignorIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/HighAvailabilityTaskAssignorIntegrationTest.java @@ -243,9 +243,9 @@ public void onRestoreEnd(final TopicPartition topicPartition, assignmentStable::get, 120_000L, () -> "Assignment hasn't become stable: " + assignmentsCompleted.get() + - " Note, if this does fail, check and see if the new instance just failed to catch up within" + - " the probing rebalance interval. A full minute should be long enough to read ~500 records" + - " in any test environment, but you never know..." + " Note, if this does fail, check and see if the new instance just failed to catch up within" + + " the probing rebalance interval. A full minute should be long enough to read ~500 records" + + " in any test environment, but you never know..." ); restoreCompleteLatch.await(); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2EndpointToPartitionsIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2EndpointToPartitionsIntegrationTest.java index 5b3b789ab10de..5b738a565c8b6 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2EndpointToPartitionsIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2EndpointToPartitionsIntegrationTest.java @@ -155,7 +155,7 @@ public void shouldGetCorrectHostPartitionInformation(final String groupProtocolC IntegrationTestUtils.DEFAULT_TIMEOUT, () -> "Kafka Streams one or two never transitioned to a RUNNING state."); - waitForCondition(() -> { + waitForCondition(() -> { final ThreadMetadata threadMetadata = streamsOne.metadataForLocalThreads().iterator().next(); return threadMetadata.activeTasks().size() == 2 && threadMetadata.standbyTasks().size() == expectedStandbyCount; }, TestUtils.DEFAULT_MAX_WAIT_MS, diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2StoreIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2StoreIntegrationTest.java index 2c4307bba44d8..0935b85cbf541 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2StoreIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2StoreIntegrationTest.java @@ -785,7 +785,7 @@ public void verifyStore(final boolean cache, final boolean log, final StoresToTe shouldCollectExecutionInfoUnderFailure(); if (storeToTest.keyValue()) { if (storeToTest.timestamped()) { - shouldHandleKeyQuery(2, 5); + shouldHandleKeyQuery(2, 5); shouldHandleTimestampedKeyQuery(2, ValueAndTimestamp.makeAllowNullable(5, WINDOW_START + Duration.ofMinutes(2).toMillis() * 5)); shouldHandleRangeQueries(); shouldHandleTimestampedRangeQueries(true); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2VersionedStoreIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2VersionedStoreIntegrationTest.java index bb1f3c20a87f2..c0892e4f809a2 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2VersionedStoreIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/IQv2VersionedStoreIntegrationTest.java @@ -99,23 +99,23 @@ public class IQv2VersionedStoreIntegrationTest { public static void beforeAll() throws Exception { CLUSTER.start(); } - + @BeforeEach public void beforeEach() throws Exception { // Delete and recreate the topic to ensure clean state for each test CLUSTER.deleteTopic(INPUT_TOPIC_NAME); CLUSTER.createTopic(INPUT_TOPIC_NAME, 1, 1); - + // Set up fresh test data final Properties producerProps = new Properties(); producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()); producerProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class); producerProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class); try (final KafkaProducer producer = new KafkaProducer<>(producerProps)) { - producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[0], RECORD_KEY, RECORD_VALUES[0])).get(); - producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[1], RECORD_KEY, RECORD_VALUES[1])).get(); - producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[2], RECORD_KEY, RECORD_VALUES[2])).get(); - producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[3], RECORD_KEY, RECORD_VALUES[3])).get(); + producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[0], RECORD_KEY, RECORD_VALUES[0])).get(); + producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[1], RECORD_KEY, RECORD_VALUES[1])).get(); + producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[2], RECORD_KEY, RECORD_VALUES[2])).get(); + producer.send(new ProducerRecord<>(INPUT_TOPIC_NAME, 0, RECORD_TIMESTAMPS[3], RECORD_KEY, RECORD_VALUES[3])).get(); } inputPosition = Position.emptyPosition().withComponent(INPUT_TOPIC_NAME, 0, 3); } @@ -160,7 +160,7 @@ private static Stream groupProtocolParameters() { public void verifyStore(final String groupProtocol, final String testName, final TestInfo testInfo) throws Exception { // Set up streams setup(groupProtocol, testInfo); - + /* Test Versioned Key Queries */ // retrieve the latest value shouldHandleVersionedKeyQuery(Optional.empty(), RECORD_VALUES[3], RECORD_TIMESTAMPS[3], Optional.empty()); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/JoinGracePeriodDurabilityIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/JoinGracePeriodDurabilityIntegrationTest.java index d8a09e12ca05b..d2cb80164f1a9 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/JoinGracePeriodDurabilityIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/JoinGracePeriodDurabilityIntegrationTest.java @@ -75,6 +75,7 @@ public class JoinGracePeriodDurabilityIntegrationTest { public static final EmbeddedKafkaCluster CLUSTER = new EmbeddedKafkaCluster(3); private static final long NOW = Instant.now().toEpochMilli(); + @BeforeAll public static void startCluster() throws IOException { CLUSTER.start(); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamAggregationIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamAggregationIntegrationTest.java index 48e9ce88b9af8..b6b9c169d0dd1 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamAggregationIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamAggregationIntegrationTest.java @@ -291,14 +291,14 @@ public void shouldReduceWindowed(final boolean withHeaders, final TestInfo testI assertThat(windowedOutput, is(expectResult)); final Set expectResultString = new HashSet<>(expectResult.size()); - for (final KeyValueTimestamp, String> eachRecord: expectResult) { + for (final KeyValueTimestamp, String> eachRecord : expectResult) { expectResultString.add("CreateTime:" + eachRecord.timestamp() + ", " + eachRecord.key() + ", " + eachRecord.value()); } // check every message is contained in the expect result final String[] allRecords = resultFromConsoleConsumer.split("\n"); - for (final String record: allRecords) { + for (final String record : allRecords) { assertTrue(expectResultString.contains(record)); } } @@ -416,13 +416,13 @@ public void shouldAggregateWindowed(final boolean withHeaders, final TestInfo te assertThat(windowedMessages, is(expectResult)); final Set expectResultString = new HashSet<>(expectResult.size()); - for (final KeyValueTimestamp, Integer> eachRecord: expectResult) { + for (final KeyValueTimestamp, Integer> eachRecord : expectResult) { expectResultString.add("CreateTime:" + eachRecord.timestamp() + ", " + eachRecord.key() + ", " + eachRecord.value()); } // check every message is contained in the expect result final String[] allRecords = resultFromConsoleConsumer.split("\n"); - for (final String record: allRecords) { + for (final String record : allRecords) { assertTrue(expectResultString.contains(record)); } } @@ -625,14 +625,14 @@ public void shouldReduceSlidingWindows(final boolean withHeaders, final TestInfo assertThat(windowedOutput, is(expectResult)); final Set expectResultString = new HashSet<>(expectResult.size()); - for (final KeyValueTimestamp, String> eachRecord: expectResult) { + for (final KeyValueTimestamp, String> eachRecord : expectResult) { expectResultString.add("CreateTime:" + eachRecord.timestamp() + ", " + eachRecord.key() + ", " + eachRecord.value()); } // check every message is contained in the expect result final String[] allRecords = resultFromConsoleConsumer.split("\n"); - for (final String record: allRecords) { + for (final String record : allRecords) { assertTrue(expectResultString.contains(record)); } } @@ -740,13 +740,13 @@ public void shouldAggregateSlidingWindows(final boolean withHeaders, final TestI assertThat(windowedMessages, is(expectResult)); final Set expectResultString = new HashSet<>(expectResult.size()); - for (final KeyValueTimestamp, Integer> eachRecord: expectResult) { + for (final KeyValueTimestamp, Integer> eachRecord : expectResult) { expectResultString.add("CreateTime:" + eachRecord.timestamp() + ", " + eachRecord.key() + ", " + eachRecord.value()); } // check every message is contained in the expect result final String[] allRecords = resultFromConsoleConsumer.split("\n"); - for (final String record: allRecords) { + for (final String record : allRecords) { assertTrue(expectResultString.contains(record)); } } @@ -963,7 +963,7 @@ private void verifySessionStore(final String storeName, assertFalse(bob.hasNext()); } } - + @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldCountUnlimitedWindows(final boolean withHeaders) throws Exception { diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamRepartitionIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamRepartitionIntegrationTest.java index a008971d399b9..621888867a054 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamRepartitionIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KStreamRepartitionIntegrationTest.java @@ -135,11 +135,11 @@ private Properties createStreamsConfig(final String topologyOptimization, final streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.Integer().getClass()); streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass()); streamsConfiguration.put(StreamsConfig.TOPOLOGY_OPTIMIZATION_CONFIG, topologyOptimization); - + if (useNewProtocol) { streamsConfiguration.put(StreamsConfig.GROUP_PROTOCOL_CONFIG, GroupProtocol.STREAMS.name().toLowerCase(Locale.getDefault())); } - + return streamsConfiguration; } @@ -189,7 +189,7 @@ public void shouldThrowAnExceptionWhenNumberOfPartitionsOfRepartitionOperationDo try (final KafkaStreams ks = new KafkaStreams(builder.build(streamsConfiguration), streamsConfiguration)) { ks.setUncaughtExceptionHandler(exception -> { expectedThrowable.set(exception); - System.out.println(String.format("[%s Protocol] Exception caught: %s", + System.out.println(String.format("[%s Protocol] Exception caught: %s", useNewProtocol ? "STREAMS" : "CLASSIC", exception.getMessage())); return SHUTDOWN_CLIENT; }); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KTableKTableForeignKeyInnerJoinCustomPartitionerIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KTableKTableForeignKeyInnerJoinCustomPartitionerIntegrationTest.java index 5740103078d0a..de00e92ebce0a 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KTableKTableForeignKeyInnerJoinCustomPartitionerIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KTableKTableForeignKeyInnerJoinCustomPartitionerIntegrationTest.java @@ -203,14 +203,14 @@ public void shouldThrowIllegalArgumentExceptionWhenCustomPartitionerReturnsMulti final List kafkaStreamsList = asList(streams, streamsTwo, streamsThree); - for (final KafkaStreams stream: kafkaStreamsList) { + for (final KafkaStreams stream : kafkaStreamsList) { stream.setUncaughtExceptionHandler(e -> { assertThat(e.getCause().getMessage(), equalTo("The partitions returned by StreamPartitioner#partitions method when used for FK join should be a singleton set")); return StreamsUncaughtExceptionHandler.StreamThreadExceptionResponse.SHUTDOWN_CLIENT; }); } - for (final KafkaStreams stream: kafkaStreamsList) { + for (final KafkaStreams stream : kafkaStreamsList) { stream.start(); } diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KafkaStreamsTelemetryIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KafkaStreamsTelemetryIntegrationTest.java index efb36a662937d..7f0d0198fe6c1 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KafkaStreamsTelemetryIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/KafkaStreamsTelemetryIntegrationTest.java @@ -108,7 +108,7 @@ public class KafkaStreamsTelemetryIntegrationTest { private Uuid globalStoreConsumerInstanceId; private Properties streamsApplicationProperties = new Properties(); private Properties streamsSecondApplicationProperties = new Properties(); - private KeyValueIterator globalStoreIterator; + private KeyValueIterator globalStoreIterator; private static EmbeddedKafkaCluster cluster; private static final List INTERCEPTING_CONSUMERS = new ArrayList<>(); @@ -212,7 +212,7 @@ public void shouldPushGlobalThreadMetricsToBroker(final String recordingLevel, f @MethodSource("recordingLevelParameters") public void shouldPushMetricsToBroker(final String recordingLevel, final String groupProtocol) throws Exception { // End-to-end test validating metrics pushed to broker - streamsApplicationProperties = props(groupProtocol); + streamsApplicationProperties = props(groupProtocol); streamsApplicationProperties.put(StreamsConfig.METRICS_RECORDING_LEVEL_CONFIG, recordingLevel); final Topology topology = simpleTopology(false); subscribeForStreamsMetrics(); @@ -416,7 +416,7 @@ public void shouldPassCorrectMetricsDynamicInstances() throws Exception { public void passedMetricsShouldNotLeakIntoClientMetrics(final String groupProtocol) throws Exception { // Streams metrics should not be visible in client metrics streamsApplicationProperties = props(groupProtocol); - final Topology topology = complexTopology(); + final Topology topology = complexTopology(); try (final KafkaStreams streams = new KafkaStreams(topology, streamsApplicationProperties)) { IntegrationTestUtils.startApplicationAndWaitUntilRunning(streams); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/NamedTopologyIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/NamedTopologyIntegrationTest.java index 8186a5b304969..56ebfde4d9a5d 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/NamedTopologyIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/NamedTopologyIntegrationTest.java @@ -286,7 +286,7 @@ public void shouldPrefixAllInternalTopicNamesWithNamedTopology() throws Exceptio final String countTopicPrefix = TOPIC_PREFIX + "-" + countTopologyName; final String fkjTopicPrefix = TOPIC_PREFIX + "-" + fkjTopologyName; - final Set internalTopics = CLUSTER + final Set internalTopics = CLUSTER .getAllTopicsInCluster().stream() .filter(t -> t.contains(TOPIC_PREFIX)) .filter(t -> t.endsWith("-repartition") || t.endsWith("-changelog") || t.endsWith("-topic")) @@ -424,7 +424,7 @@ public void shouldAddAndRemoveNamedTopologiesBeforeStartingAndRouteQueriesToCorr CLUSTER.deleteTopics(SINGLE_PARTITION_INPUT_STREAM, SINGLE_PARTITION_OUTPUT_STREAM); } } - + @Test public void shouldAddNamedTopologyToRunningApplicationWithEmptyInitialTopology() throws Exception { topology1Builder.stream(INPUT_STREAM_1).groupBy((k, v) -> k).count(IN_MEMORY_STORE).toStream().to(OUTPUT_STREAM_1); @@ -574,7 +574,7 @@ public void shouldRemoveAndReplaceTopologicallyIncompatibleNamedTopology() throw CLUSTER.deleteTopics(DELAYED_INPUT_STREAM_1); } } - + @Test public void shouldAllowPatternSubscriptionWithMultipleNamedTopologies() throws Exception { topology1Builder.stream(Pattern.compile(INPUT_STREAM_1)).groupBy((k, v) -> k).count().toStream().to(OUTPUT_STREAM_1); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PauseResumeIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PauseResumeIntegrationTest.java index e0f080f885581..b72648c087286 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PauseResumeIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PauseResumeIntegrationTest.java @@ -92,9 +92,9 @@ public class PauseResumeIntegrationTest { private static final List> COUNT_OUTPUT_DATA2 = asList(pair("A", 3L), pair("B", 2L), pair("A", 4L), pair("C", 3L), pair("C", 4L)); private static final List> COUNT_OUTPUT_DATA_ALL = new ArrayList>() {{ - addAll(COUNT_OUTPUT_DATA); - addAll(COUNT_OUTPUT_DATA2); - }}; + addAll(COUNT_OUTPUT_DATA); + addAll(COUNT_OUTPUT_DATA2); + }}; private String appId; private KafkaStreams kafkaStreams, kafkaStreams2; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PurgeRepartitionTopicIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PurgeRepartitionTopicIntegrationTest.java index 67203b8926642..2d2677bf8457a 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PurgeRepartitionTopicIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/PurgeRepartitionTopicIntegrationTest.java @@ -218,7 +218,7 @@ public void shouldRestoreState() throws Exception { 60000, "Repartition topic " + REPARTITION_TOPIC + " not received more than " + PURGE_SEGMENT_BYTES + "B of data after 60000 ms." ); - + final long waitForPurgeMs = 60000; TestUtils.waitForCondition( new RepartitionTopicVerified(currentSize -> currentSize <= PURGE_SEGMENT_BYTES), diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java index ae0e6226ba299..a9ee1fad7f886 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java @@ -306,7 +306,7 @@ private void verifyAllKVKeys(final List streamsList, final Map exceptionalKeys = new TreeMap<>(); final StringSerializer serializer = new StringSerializer(); - for (final String key: keys) { + for (final String key : keys) { try { final KeyQueryMetadata queryMetadata = streams.queryMetadataForKey(storeName, key, serializer); if (queryMetadata == null || queryMetadata.equals(KeyQueryMetadata.NOT_AVAILABLE)) { @@ -360,7 +360,7 @@ private void verifyAllWindowedKeys(final List streamsList, final Map exceptionalKeys = new TreeMap<>(); final StringSerializer serializer = new StringSerializer(); - for (final String key: keys) { + for (final String key : keys) { try { final KeyQueryMetadata queryMetadata = streams.queryMetadataForKey(storeName, key, serializer); if (queryMetadata == null || queryMetadata.equals(KeyQueryMetadata.NOT_AVAILABLE)) { @@ -1237,7 +1237,7 @@ private void waitUntilAtLeastNumRecordProcessed(final String topic, private Set> fetch(final ReadOnlyWindowStore store, final String key) { try (final WindowStoreIterator fetch = - store.fetch(key, ofEpochMilli(0), ofEpochMilli(System.currentTimeMillis()))) { + store.fetch(key, ofEpochMilli(0), ofEpochMilli(System.currentTimeMillis()))) { if (fetch.hasNext()) { final KeyValue next = fetch.next(); return Collections.singleton(KeyValue.pair(key, next.value)); @@ -1281,7 +1281,7 @@ public void run() { producerConfig.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); try (final KafkaProducer producer = - new KafkaProducer<>(producerConfig, new StringSerializer(), new StringSerializer())) { + new KafkaProducer<>(producerConfig, new StringSerializer(), new StringSerializer())) { while (getCurrIteration() < numIterations) { for (final String value : inputValues) { diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RebalanceIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RebalanceIntegrationTest.java index a1a24be0aabd9..0dd139091b80a 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RebalanceIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RebalanceIntegrationTest.java @@ -143,6 +143,7 @@ public void shouldCommitAllTasksIfRevokedTaskTriggerPunctuation() throws Excepti builder.stream(MULTI_PARTITION_INPUT_TOPIC) .process(() -> new Processor() { ProcessorContext context; + @Override public void init(final ProcessorContext context) { this.context = context; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RestoreIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RestoreIntegrationTest.java index 01caca6467641..9259e32c1122e 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RestoreIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/RestoreIntegrationTest.java @@ -135,7 +135,7 @@ public class RestoreIntegrationTest { @BeforeAll public static void startCluster() throws IOException { CLUSTER.start(); - + final Properties adminConfig = new Properties(); adminConfig.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()); admin = Admin.create(adminConfig); @@ -926,7 +926,7 @@ private void createStateForRestoration(final String changelogTopic, final int st producerConfig.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()); try (final KafkaProducer producer = - new KafkaProducer<>(producerConfig, new IntegerSerializer(), new IntegerSerializer())) { + new KafkaProducer<>(producerConfig, new IntegerSerializer(), new IntegerSerializer())) { for (int i = 0; i < numberOfKeys; i++) { final int offset = startingOffset + i; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StateDirectoryIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StateDirectoryIntegrationTest.java index fbed04dd8a44a..fe694e0adbfdc 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StateDirectoryIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StateDirectoryIntegrationTest.java @@ -85,7 +85,7 @@ public void testCleanUpStateDirIfEmpty(final TestInfo testInfo) throws Interrupt )); try (final KafkaProducer producer = - new KafkaProducer<>(producerConfig, Serdes.String().serializer(), Serdes.String().serializer())) { + new KafkaProducer<>(producerConfig, Serdes.String().serializer(), Serdes.String().serializer())) { // Create Test Records producer.send(new ProducerRecord<>(input, "a")); producer.send(new ProducerRecord<>(input, "b")); @@ -162,11 +162,11 @@ public void testCleanUpStateDirIfEmpty(final TestInfo testInfo) throws Interrupt // case 3: The state directory is not cleaned up, for it includes a checkpoint file but it is empty. assertTrue(appDir.exists() || Arrays.stream(appDir.listFiles()) - .filter( + .filter( (File f) -> f.isDirectory() && f.listFiles().length > 0 && !(new File(f, ".checkpoint")).exists() ).findFirst().isPresent() || Arrays.stream(appDir.listFiles()) - .filter( + .filter( (File f) -> f.isDirectory() && (new File(f, ".checkpoint")).length() == 0L ).findFirst().isPresent() ); @@ -191,7 +191,7 @@ public void testNotCleanUpStateDirIfNotEmpty(final TestInfo testInfo) throws Int )); try (final KafkaProducer producer = - new KafkaProducer<>(producerConfig, Serdes.String().serializer(), Serdes.String().serializer())) { + new KafkaProducer<>(producerConfig, Serdes.String().serializer(), Serdes.String().serializer())) { // Create Test Records producer.send(new ProducerRecord<>(input, "a")); producer.send(new ProducerRecord<>(input, "b")); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQueryIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQueryIntegrationTest.java index 7631bbfa3bc1d..cb782ece6f05c 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQueryIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQueryIntegrationTest.java @@ -233,7 +233,7 @@ public void shouldQuerySpecificActivePartitionStores(final boolean withHeaders) final StoreQueryParameters> storeQueryParam2 = StoreQueryParameters.>fromNameAndType(TABLE_NAME, keyValueStore()) - .withPartition(keyDontBelongPartition); + .withPartition(keyDontBelongPartition); try { // Assert that key is not served when wrong specific partition is requested diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamStreamJoinIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamStreamJoinIntegrationTest.java index f6fbe1c75f85f..34289a2a2cf61 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamStreamJoinIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamStreamJoinIntegrationTest.java @@ -304,7 +304,7 @@ public void testLeftRepartitioned(final boolean cacheEnabled, final boolean with leftStream.map(MockMapper.noOpKeyValueMapper()) .leftJoin( rightStream.flatMap(MockMapper.noOpFlatKeyValueMapper()) - .selectKey(MockMapper.selectKeyKeyValueMapper()), + .selectKey(MockMapper.selectKeyKeyValueMapper()), valueJoiner, JoinWindows.ofTimeDifferenceAndGrace(ofSeconds(10), ofHours(24)) ).to(OUTPUT_TOPIC); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinIntegrationTest.java index 1a9329953c9e5..163c3c96c7eed 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinIntegrationTest.java @@ -72,11 +72,11 @@ public void testInner(final boolean cacheEnabled, final boolean withHeaders) { null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-d", null, 6L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-d", null, 6L)), null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), null, null, null, @@ -117,10 +117,10 @@ public void testLeft(final boolean cacheEnabled, final boolean withHeaders) { null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-null", null, 4L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-null", null, 4L)), null ); @@ -155,14 +155,14 @@ public void testInnerWithVersionedStore(final boolean cacheEnabled, final boolea null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-b", null, 6L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-b", null, 6L)), null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), null ); @@ -201,10 +201,10 @@ public void testLeftWithVersionedStore(final boolean cacheEnabled, final boolean null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "E-e", null, 15L)), null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), null ); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinWithGraceIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinWithGraceIntegrationTest.java index ba862f5556df0..a75a3e5270e78 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinWithGraceIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamTableJoinWithGraceIntegrationTest.java @@ -80,14 +80,14 @@ public void testInnerWithVersionedStore(final boolean cacheEnabled, final boolea null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-b", null, 6L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "D-b", null, 6L)), null, null, null, null, null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), null ); @@ -129,7 +129,7 @@ public void testLeftWithVersionedStore(final boolean cacheEnabled, final boolean Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "C-null", null, 9L)), null, null, - Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), + Collections.singletonList(new TestRecord<>(ANY_UNIQUE_KEY, "F-a", null, 4L)), null ); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamsUncaughtExceptionHandlerIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamsUncaughtExceptionHandlerIntegrationTest.java index 94cde6824b39f..5ddf85d1386ae 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamsUncaughtExceptionHandlerIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StreamsUncaughtExceptionHandlerIntegrationTest.java @@ -364,7 +364,7 @@ private void testShutdownApplication(final int numThreads) throws Exception { final Topology topology = builder.build(); final MockTime time = new MockTime(0L); - + try (final KafkaStreams kafkaStreams1 = new KafkaStreams(topology, properties, time); final KafkaStreams kafkaStreams2 = new KafkaStreams(topology, properties, time); final LogCaptureAppender logCaptureAppender = LogCaptureAppender.createAndRegister()) { diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SuppressionIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SuppressionIntegrationTest.java index 9b1aa9496a7a9..ec8fd18f81bbb 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SuppressionIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SuppressionIntegrationTest.java @@ -98,6 +98,7 @@ public static void startCluster() throws IOException { public static void closeCluster() { CLUSTER.stop(); } + private static final StringSerializer STRING_SERIALIZER = new StringSerializer(); private static final Serde STRING_SERDE = Serdes.String(); private static final int COMMIT_INTERVAL = 100; diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskAssignorIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskAssignorIntegrationTest.java index f0fc5477be9e4..5a76b726e07d1 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskAssignorIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskAssignorIntegrationTest.java @@ -124,7 +124,7 @@ public void shouldProperlyConfigureTheAssignor(final TestInfo testInfo) throws N final Field threads = KafkaStreams.class.getDeclaredField("threads"); threads.setAccessible(true); - final List streamThreads = (List) threads.get(kafkaStreams); + final List streamThreads = (List) threads.get(kafkaStreams); final StreamThread streamThread = streamThreads.get(0); final Field mainConsumer = StreamThread.class.getDeclaredField("mainConsumer"); @@ -133,7 +133,7 @@ public void shouldProperlyConfigureTheAssignor(final TestInfo testInfo) throws N final Field delegate = KafkaConsumer.class.getDeclaredField("delegate"); delegate.setAccessible(true); - final Consumer consumer = (Consumer) delegate.get(parentConsumer); + final Consumer consumer = (Consumer) delegate.get(parentConsumer); assertThat(consumer, instanceOf(ClassicKafkaConsumer.class)); final Field assignors = ClassicKafkaConsumer.class.getDeclaredField("assignors"); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskMetadataIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskMetadataIntegrationTest.java index a7d1a0c65b185..a81bcab9d87b6 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskMetadataIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TaskMetadataIntegrationTest.java @@ -90,7 +90,7 @@ public void setup(final TestInfo testInfo) { inputTopic = "input" + testId; IntegrationTestUtils.cleanStateBeforeTest(CLUSTER, inputTopic); - builder = new StreamsBuilder(); + builder = new StreamsBuilder(); process = new AtomicBoolean(true); commit = new AtomicBoolean(true); @@ -98,7 +98,7 @@ public void setup(final TestInfo testInfo) { final KStream stream = builder.stream(inputTopic); stream.process(PauseProcessor::new); - properties = mkObjectProperties( + properties = mkObjectProperties( mkMap( mkEntry(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()), mkEntry(StreamsConfig.APPLICATION_ID_CONFIG, appId), diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestTaskAssignor.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestTaskAssignor.java index 8e4d614e42ad9..7fc45fc3e4058 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestTaskAssignor.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestTaskAssignor.java @@ -32,7 +32,7 @@ public void onAssignmentComputed(final ConsumerPartitionAssignor.GroupAssignment for (final String threadName : assignment.groupAssignment().keySet()) { if (threadName.contains("-StreamThread-1-")) { - final TaskId taskWithData = EosIntegrationTest.TASK_WITH_DATA.get(); + final TaskId taskWithData = EosIntegrationTest.TASK_WITH_DATA.get(); if (taskWithData != null && taskWithData.partition() == assignment.groupAssignment().get(threadName).partitions().get(0).partition()) { EosIntegrationTest.DID_REVOKE_IDLE_TASK.set(true); } diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestingMetricsInterceptingAdminClient.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestingMetricsInterceptingAdminClient.java index ae8e9f0924cf7..0e459340b9035 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestingMetricsInterceptingAdminClient.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TestingMetricsInterceptingAdminClient.java @@ -468,7 +468,7 @@ public RemoveRaftVoterResult removeRaftVoter(final int voterId, final Uuid voter public DescribeShareGroupsResult describeShareGroups(final Collection groupIds, final DescribeShareGroupsOptions options) { return adminDelegate.describeShareGroups(groupIds, options); } - + @Override public DescribeStreamsGroupsResult describeStreamsGroups(final Collection groupIds, final DescribeStreamsGroupsOptions options) { return adminDelegate.describeStreamsGroups(groupIds, options); diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedStoreUpgradeIntegrationTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedStoreUpgradeIntegrationTest.java index dbeaa628d4cdd..706d2a2fcd247 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedStoreUpgradeIntegrationTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedStoreUpgradeIntegrationTest.java @@ -576,7 +576,7 @@ private void shouldMigrateWindowStoreToTimestampedWindowStoreUsingPapi(final Str final StreamsBuilder streamsBuilderForNewStore, final boolean persistentStore) throws Exception { final Properties props = props(); - kafkaStreams = new KafkaStreams(streamsBuilderForOldStore.build(), props); + kafkaStreams = new KafkaStreams(streamsBuilderForOldStore.build(), props); kafkaStreams.start(); processWindowedKeyValueAndVerifyPlainCount(1, singletonList( diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedWindowStoreWithHeadersTest.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedWindowStoreWithHeadersTest.java index 012bc773df6c5..3d7dc7ab478e8 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedWindowStoreWithHeadersTest.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/TimestampedWindowStoreWithHeadersTest.java @@ -471,7 +471,7 @@ private int checkStoreContents() { // validate fetch from store try (final WindowStoreIterator> iterator = - store.fetch(key, windowStartTime, windowStartTime)) { + store.fetch(key, windowStartTime, windowStartTime)) { final ValueTimestampHeaders actualValueTimestampHeaders = iterator.hasNext() ? iterator.next().value : null; if (!Objects.equals(actualValueTimestampHeaders, expectedValueTimestampHeaders)) { @@ -536,7 +536,7 @@ private int checkStoreContents() { // validate fetch from store try (final WindowStoreIterator> iterator = - store.fetch(key, windowStartTime, windowStartTime)) { + store.fetch(key, windowStartTime, windowStartTime)) { final ValueAndTimestamp actualValueAndTimestamp = iterator.hasNext() ? iterator.next().value : null; if (!Objects.equals(actualValueAndTimestamp, expectedValueAndTimestamp)) { diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/EmbeddedKafkaCluster.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/EmbeddedKafkaCluster.java index ba3451589f0a2..2d9522d726b09 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/EmbeddedKafkaCluster.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/EmbeddedKafkaCluster.java @@ -92,6 +92,7 @@ public class EmbeddedKafkaCluster { private final KafkaClusterTestKit cluster; private final Properties brokerConfig; public final MockTime time; + public EmbeddedKafkaCluster(final int numBrokers) { this(numBrokers, new Properties()); } @@ -105,11 +106,13 @@ public EmbeddedKafkaCluster(final int numBrokers, final long mockTimeMillisStart) { this(numBrokers, brokerConfig, Collections.emptyMap(), mockTimeMillisStart, System.nanoTime()); } + public EmbeddedKafkaCluster(final int numBrokers, final Properties brokerConfig, final Map> brokerConfigOverrides) { this(numBrokers, brokerConfig, brokerConfigOverrides, System.currentTimeMillis(), System.nanoTime()); } + public EmbeddedKafkaCluster(final int numBrokers, final Properties brokerConfig, final Map> brokerConfigOverrides, diff --git a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/IntegrationTestUtils.java b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/IntegrationTestUtils.java index 832e8eb1a0691..e0d89ecaf9c6a 100644 --- a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/IntegrationTestUtils.java +++ b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/utils/IntegrationTestUtils.java @@ -204,6 +204,7 @@ private static boolean needToWait(final QueryResult queryResult) { */ public static class StateListenerStub implements StreamThread.StateListener { boolean toPendingShutdownSeen = false; + @Override public void onChange(final Thread thread, final ThreadStateTransitionValidator newState, diff --git a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/LineSplit.java b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/LineSplit.java index 12848486853cd..42c3cf8cf72c0 100644 --- a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/LineSplit.java +++ b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/LineSplit.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ${package}; +package $; import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.streams.KafkaStreams; diff --git a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/Pipe.java b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/Pipe.java index 8162e8d6e0305..4cb6b913cd32a 100644 --- a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/Pipe.java +++ b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/Pipe.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ${package}; +package $; import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.streams.KafkaStreams; diff --git a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/WordCount.java b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/WordCount.java index 440d674d4c20c..364fe1dfdaef7 100644 --- a/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/WordCount.java +++ b/streams/quickstart/java/src/main/resources/archetype-resources/src/main/java/WordCount.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ${package}; +package $; import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.common.utils.Bytes; diff --git a/streams/src/main/java/org/apache/kafka/streams/StoreQueryParameters.java b/streams/src/main/java/org/apache/kafka/streams/StoreQueryParameters.java index b76f310d8d526..6c287b48addd7 100644 --- a/streams/src/main/java/org/apache/kafka/streams/StoreQueryParameters.java +++ b/streams/src/main/java/org/apache/kafka/streams/StoreQueryParameters.java @@ -30,7 +30,7 @@ public class StoreQueryParameters { private final String storeName; private final QueryableStoreType queryableStoreType; - protected StoreQueryParameters(final String storeName, final QueryableStoreType queryableStoreType, final Integer partition, final boolean staleStores) { + protected StoreQueryParameters(final String storeName, final QueryableStoreType queryableStoreType, final Integer partition, final boolean staleStores) { this.storeName = storeName; this.queryableStoreType = queryableStoreType; this.partition = partition; @@ -38,7 +38,7 @@ protected StoreQueryParameters(final String storeName, final QueryableStoreType< } public static StoreQueryParameters fromNameAndType(final String storeName, - final QueryableStoreType queryableStoreType) { + final QueryableStoreType queryableStoreType) { return new StoreQueryParameters<>(storeName, queryableStoreType, null, false); } diff --git a/streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java b/streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java index 083ca82e549d7..46eb10ebefb86 100644 --- a/streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java +++ b/streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java @@ -564,7 +564,7 @@ public class StreamsConfig extends AbstractConfig { /** {@code enable.metrics.push} */ @SuppressWarnings("WeakerAccess") - public static final String ENABLE_METRICS_PUSH_CONFIG = CommonClientConfigs.ENABLE_METRICS_PUSH_CONFIG; + public static final String ENABLE_METRICS_PUSH_CONFIG = CommonClientConfigs.ENABLE_METRICS_PUSH_CONFIG; @Deprecated public static final String ENABLE_METRICS_PUSH_DOC = "Whether to enable pushing of internal client metrics for (main, restore, and global) consumers, producers, and admin clients." + " The cluster must have a client metrics subscription which corresponds to a client."; @@ -1247,7 +1247,7 @@ public class StreamsConfig extends AbstractConfig { Type.STRING, CommonClientConfigs.DEFAULT_METADATA_RECOVERY_STRATEGY, ConfigDef.CaseInsensitiveValidString - .in(Utils.enumOptions(MetadataRecoveryStrategy.class)), + .in(Utils.enumOptions(MetadataRecoveryStrategy.class)), Importance.LOW, CommonClientConfigs.METADATA_RECOVERY_STRATEGY_DOC) .define(CommonClientConfigs.METADATA_RECOVERY_REBOOTSTRAP_TRIGGER_MS_CONFIG, @@ -1644,7 +1644,7 @@ private void checkMainConsumerAndAdminMetricsConfig(final Boolean adminMetricsCo private Boolean maybeMetricsPushEnabled(final String prefix) { Boolean configSetValue = null; if (originalsWithPrefix(prefix).containsKey(ENABLE_METRICS_PUSH_CONFIG)) { - configSetValue = (Boolean) originalsWithPrefix(prefix).get(ENABLE_METRICS_PUSH_CONFIG); + configSetValue = (Boolean) originalsWithPrefix(prefix).get(ENABLE_METRICS_PUSH_CONFIG); } return configSetValue; } @@ -1761,7 +1761,7 @@ private void checkIfUnexpectedUserSpecifiedClientConfig(final Map verifyTopologyOptimizationConfigs(final String config) throw new ConfigException("\"" + config + "\" is not a valid optimization config. " + CONFIG_ERROR_MSG); } } - for (final String conf: configs) { + for (final String conf : configs) { if (!TOPOLOGY_OPTIMIZATION_CONFIGS.contains(conf)) { throw new ConfigException("Unrecognized config. " + CONFIG_ERROR_MSG); } @@ -2222,7 +2222,7 @@ private Map clientProps(final Set configNames, // iterate all client config names, filter out non-client configs from the original // property map and use the overridden values when they are not specified by users final Map parsed = new HashMap<>(); - for (final String configName: configNames) { + for (final String configName : configNames) { if (originals.containsKey(configName)) { parsed.put(configName, originals.get(configName)); } diff --git a/streams/src/main/java/org/apache/kafka/streams/TopologyDescription.java b/streams/src/main/java/org/apache/kafka/streams/TopologyDescription.java index 0ab0e0d92ac2e..c9ca2aaf4d141 100644 --- a/streams/src/main/java/org/apache/kafka/streams/TopologyDescription.java +++ b/streams/src/main/java/org/apache/kafka/streams/TopologyDescription.java @@ -101,6 +101,7 @@ interface Node { */ @SuppressWarnings("unused") String name(); + /** * The predecessors of this node within a sub-topology. * Note, sources do not have any predecessors. @@ -109,6 +110,7 @@ interface Node { */ @SuppressWarnings("unused") Set predecessors(); + /** * The successor of this node within a sub-topology. * Note, sinks do not have any successors. diff --git a/streams/src/main/java/org/apache/kafka/streams/errors/DeserializationExceptionHandler.java b/streams/src/main/java/org/apache/kafka/streams/errors/DeserializationExceptionHandler.java index 8c3667c20f498..53b1dba357d34 100644 --- a/streams/src/main/java/org/apache/kafka/streams/errors/DeserializationExceptionHandler.java +++ b/streams/src/main/java/org/apache/kafka/streams/errors/DeserializationExceptionHandler.java @@ -92,6 +92,7 @@ default DeserializationHandlerResponse handle(final ErrorHandlerContext context, default Response handleError(final ErrorHandlerContext context, final ConsumerRecord record, final Exception exception) { return new Response(Result.from(handle(context, record, exception)), Collections.emptyList()); } + /** * Enumeration that describes the response from the exception handler. */ diff --git a/streams/src/main/java/org/apache/kafka/streams/internals/UpgradeFromValues.java b/streams/src/main/java/org/apache/kafka/streams/internals/UpgradeFromValues.java index ca3465fa62e47..0ef7ac230c848 100644 --- a/streams/src/main/java/org/apache/kafka/streams/internals/UpgradeFromValues.java +++ b/streams/src/main/java/org/apache/kafka/streams/internals/UpgradeFromValues.java @@ -45,6 +45,7 @@ public enum UpgradeFromValues { public static UpgradeFromValues fromString(final String upgradeFrom) { return UpgradeFromValues.valueOf("UPGRADE_FROM_" + upgradeFrom.replace(".", "")); } + public String toString() { return value; } diff --git a/streams/src/main/java/org/apache/kafka/streams/internals/metrics/ClientMetrics.java b/streams/src/main/java/org/apache/kafka/streams/internals/metrics/ClientMetrics.java index 597c20457f29c..10f87534ae53d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/internals/metrics/ClientMetrics.java +++ b/streams/src/main/java/org/apache/kafka/streams/internals/metrics/ClientMetrics.java @@ -51,7 +51,7 @@ private ClientMetrics() {} private static final String DEFAULT_VALUE = "unknown"; private static final String FAILED_STREAM_THREADS = "failed-stream-threads"; private static final String RECORDING_LEVEL = "recording-level"; - + static { final Properties props = new Properties(); diff --git a/streams/src/main/java/org/apache/kafka/streams/internals/metrics/StreamsThreadMetricsDelegatingReporter.java b/streams/src/main/java/org/apache/kafka/streams/internals/metrics/StreamsThreadMetricsDelegatingReporter.java index 1c6ce0a2035d3..5654e8f5f465a 100644 --- a/streams/src/main/java/org/apache/kafka/streams/internals/metrics/StreamsThreadMetricsDelegatingReporter.java +++ b/streams/src/main/java/org/apache/kafka/streams/internals/metrics/StreamsThreadMetricsDelegatingReporter.java @@ -30,7 +30,7 @@ import java.util.Optional; public class StreamsThreadMetricsDelegatingReporter implements MetricsReporter { - + private static final Logger log = LoggerFactory.getLogger(StreamsThreadMetricsDelegatingReporter.class); private static final String THREAD_ID_TAG = "thread-id"; private final Consumer consumer; diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/KTable.java b/streams/src/main/java/org/apache/kafka/streams/kstream/KTable.java index 2f2aa93c5d60a..a5b6c82a59e1e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/KTable.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/KTable.java @@ -2194,6 +2194,7 @@ KTable join(final KTable other, final BiFunction foreignKeyExtractor, final ValueJoiner joiner, final TableJoined tableJoined); + /** * Join records of this {@code KTable} with another {@code KTable} using non-windowed inner join. *

diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/AbstractStream.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/AbstractStream.java index 7e54803593f88..f54772e7fec56 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/AbstractStream.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/AbstractStream.java @@ -83,7 +83,7 @@ protected InternalTopologyBuilder internalTopologyBuilder() { Set ensureCopartitionWith(final Collection> otherStreams) { final Set allSourceNodes = new HashSet<>(subTopologySourceNodes); - for (final AbstractStream other: otherStreams) { + for (final AbstractStream other : otherStreams) { allSourceNodes.addAll(other.subTopologySourceNodes); } builder.internalTopologyBuilder.copartitionSources(allSourceNodes); diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/CogroupedStreamAggregateBuilder.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/CogroupedStreamAggregateBuilder.java index f41f52dac8b1c..59a6c0adabed5 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/CogroupedStreamAggregateBuilder.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/CogroupedStreamAggregateBuilder.java @@ -62,13 +62,13 @@ KTable build(final Map, Aggregator processors = new ArrayList<>(); final Collection parentProcessors = new ArrayList<>(); - + int counter = 0; for (final Entry, Aggregator> kGroupedStream : groupPatterns.entrySet()) { final KStreamAggProcessorSupplier parentProcessor = new KStreamAggregate<>(storeFactory, initializer, kGroupedStream.getValue()); parentProcessors.add(parentProcessor); - + final String kStreamAggProcessorName = named.suffixWithOrElseGet( "-cogroup-agg-" + counter++, builder, @@ -100,7 +100,7 @@ KTable build(final Map final Collection parentProcessors = new ArrayList<>(); int counter = 0; for (final Entry, Aggregator> kGroupedStream : groupPatterns.entrySet()) { - final KStreamAggProcessorSupplier parentProcessor = + final KStreamAggProcessorSupplier parentProcessor = (KStreamAggProcessorSupplier) new KStreamWindowAggregate( windows, storeFactory, @@ -108,7 +108,7 @@ KTable build(final Map initializer, kGroupedStream.getValue()); parentProcessors.add(parentProcessor); - + final String kStreamAggProcessorName = named.suffixWithOrElseGet( "-cogroup-agg-" + counter++, builder, diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilder.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilder.java index c64e13d3cf646..64ad854cf6f69 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilder.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilder.java @@ -445,7 +445,7 @@ private void rewriteSingleStoreSelfJoin( // Remove JoinOtherWindowed node final GraphNode parent = joinNode.parentNodes().stream().findFirst().get(); GraphNode left = null, right = null; - for (final GraphNode child: parent.children()) { + for (final GraphNode child : parent.children()) { if (child instanceof WindowedStreamProcessorNode && child.buildPriority() < joinNode.buildPriority()) { if (child.nodeName().equals(joinNode.thisWindowedStreamProcessorName())) { left = child; @@ -462,7 +462,7 @@ private void rewriteSingleStoreSelfJoin( throw new IllegalStateException(String.format("Expected the left node %s to have smaller build priority than the right node %s.", left, right)); } } - for (final GraphNode child: currentNode.children()) { + for (final GraphNode child : currentNode.children()) { if (!visited.containsKey(child)) { rewriteSingleStoreSelfJoin(child, visited); } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/JoinedInternal.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/JoinedInternal.java index b323250e6f11d..e666b57ffc021 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/JoinedInternal.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/JoinedInternal.java @@ -21,7 +21,7 @@ import java.time.Duration; -public class JoinedInternal extends Joined { +public class JoinedInternal extends Joined { JoinedInternal(final Joined joined) { super(joined); diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregate.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregate.java index 83081ec3aa0d7..8ee3302a0870a 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregate.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregate.java @@ -302,7 +302,7 @@ private void fetchAndEmit(final Record record, // Only time ordered (indexed) session store should have implemented // this function, otherwise a not-supported exception would throw try (final KeyValueIterator, AggregationWithHeaders> windowToEmit = - store.findSessions(emitRangeLowerBound, emitRangeUpperBound)) { + store.findSessions(emitRangeLowerBound, emitRangeUpperBound)) { while (windowToEmit.hasNext()) { emittedCount++; @@ -402,7 +402,7 @@ public String[] storeNames() { private class KTableSessionWindowValueGetter implements KTableValueGetter, VAgg> { private SessionStore> store; - + @Override public void init(final ProcessorContext context) { try { diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregate.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregate.java index aa6d718802a99..f1f8508e392fe 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregate.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregate.java @@ -145,7 +145,7 @@ public void process(final Record record) { reverseIteratorPossible = true; log.debug("Sliding Windows aggregate using a reverse iterator"); } - } catch (final UnsupportedOperationException e) { + } catch (final UnsupportedOperationException e) { reverseIteratorPossible = false; log.debug("Sliding Windows aggregate using a forward iterator"); } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableMapValues.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableMapValues.java index 9c787d535a47a..4e1fc90af73fe 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableMapValues.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableMapValues.java @@ -112,7 +112,7 @@ private VOut computeValue(final KIn key, final VIn value) { return newValue; } - private ValueTimestampHeaders computeValueAndTimestamp(final KIn key, final ValueTimestampHeaders valueTimestampHeaders, final Headers contextHeaders) { + private ValueTimestampHeaders computeValueAndTimestamp(final KIn key, final ValueTimestampHeaders valueTimestampHeaders, final Headers contextHeaders) { VOut newValue = null; long timestamp = 0; diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableSource.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableSource.java index 9bb54befeb40b..50f8834fdcdf0 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableSource.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableSource.java @@ -152,7 +152,7 @@ public void process(final Record record) { + "topic=[{}] partition=[{}] offset=[{}].", store.name(), oldValueAndTimestamp.timestamp(), record.timestamp(), - recordMetadata.topic(), recordMetadata.partition(), recordMetadata.offset() + recordMetadata.topic(), recordMetadata.partition(), recordMetadata.offset() ); } else { LOG.warn( diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/NamedInternal.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/NamedInternal.java index 532928a2d7e67..92e344b86e369 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/NamedInternal.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/NamedInternal.java @@ -57,7 +57,7 @@ public String name() { public NamedInternal withName(final String name) { return new NamedInternal(name); } - + String suffixWithOrElseGet(final String suffix, final String other) { if (name != null) { return name + suffix; @@ -88,7 +88,7 @@ String orElseGenerateWithPrefix(final InternalNameProvider provider, final Strin if (name != null) { provider.newProcessorName(prefix); return name; - } else { + } else { return provider.newProcessorName(prefix); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/OuterStreamJoinStoreFactory.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/OuterStreamJoinStoreFactory.java index 0db5a36734c57..5098b5a6c575c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/OuterStreamJoinStoreFactory.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/OuterStreamJoinStoreFactory.java @@ -123,7 +123,7 @@ public StoreBuilder builder() { final StoreBuilder, LeftOrRightValue>> builder = - new ListValueStoreBuilder<>( + new ListValueStoreBuilder<>( supplier, timestampedKeyAndJoinSideSerde, leftOrRightValueSerde, diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SessionStoreMaterializer.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SessionStoreMaterializer.java index 31fa0a58c9fec..ada77848ab930 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SessionStoreMaterializer.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SessionStoreMaterializer.java @@ -59,7 +59,7 @@ public SessionStoreMaterializer( } @Override - public StoreBuilder builder() { + public StoreBuilder builder() { final SessionBytesStoreSupplier supplier = materialized.storeSupplier() == null ? dslStoreSuppliers().sessionStore(new DslSessionParams( materialized.storeName(), diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SlidingWindowStoreMaterializer.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SlidingWindowStoreMaterializer.java index ad5607215fd17..fd055aaee3bb1 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SlidingWindowStoreMaterializer.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/SlidingWindowStoreMaterializer.java @@ -104,7 +104,7 @@ public StoreBuilder builder() { @Override public final long retentionPeriod() { - return materialized.retention() != null + return materialized.retention() != null ? materialized.retention().toMillis() : windows.gracePeriodMs() + 2 * windows.timeDifferenceMs(); } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowStoreMaterializer.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowStoreMaterializer.java index cd84813461949..8b08d1a13127a 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowStoreMaterializer.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowStoreMaterializer.java @@ -70,7 +70,7 @@ public StoreBuilder builder() { )) : (WindowBytesStoreSupplier) materialized.storeSupplier(); - final StoreBuilder builder; + final StoreBuilder builder; if (supplier instanceof HeadersBytesStoreSupplier) { builder = Stores.timestampedWindowStoreWithHeadersBuilder( supplier, diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowedSerializer.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowedSerializer.java index 9cffa7c2f7a66..8d79e05db2b1b 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowedSerializer.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/WindowedSerializer.java @@ -24,7 +24,7 @@ public interface WindowedSerializer extends Serializer> { byte[] serializeBaseKey(String topic, Windowed data); - default byte[] serializeBaseKey(final String topic, final Headers headers, final Windowed data) { + default byte[] serializeBaseKey(final String topic, final Headers headers, final Windowed data) { return serializeBaseKey(topic, data); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignTableJoinProcessorSupplier.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignTableJoinProcessorSupplier.java index 97a95542e6b76..c762f492a6262 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignTableJoinProcessorSupplier.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignTableJoinProcessorSupplier.java @@ -124,7 +124,7 @@ public void process(final Record> record) { //Perform the prefixScan and propagate the results try (final KeyValueIterator>> prefixScanResults = - subscriptionStore.range(prefixBytes, ByteUtils.increment(prefixBytes))) { + subscriptionStore.range(prefixBytes, ByteUtils.increment(prefixBytes))) { while (prefixScanResults.hasNext()) { final KeyValue>> next = prefixScanResults.next(); diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapper.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapper.java index 0a14eedcb6eab..6e41b4b43dc2f 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapper.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapper.java @@ -52,6 +52,7 @@ public enum Instruction { PROPAGATE_ONLY_IF_FK_VAL_AVAILABLE((byte) 0x03); private final byte value; + Instruction(final byte value) { this.value = value; } @@ -61,7 +62,7 @@ public byte value() { } public static Instruction fromValue(final byte value) { - for (final Instruction i: values()) { + for (final Instruction i : values()) { if (i.value == value) { return i; } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapperSerde.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapperSerde.java index 2c473e58e3619..313de31e286c9 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapperSerde.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/SubscriptionWrapperSerde.java @@ -122,7 +122,7 @@ private byte[] serializePrimaryKey(final SubscriptionWrapper data, final primaryKeySerializationPseudoTopic = primaryKeySerializationPseudoTopicSupplier.get(); } - return primaryKeySerializer.serialize( + return primaryKeySerializer.serialize( primaryKeySerializationPseudoTopic, headers, data.primaryKey() diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseJoinProcessorNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseJoinProcessorNode.java index 128de320f2bbb..1d6065e6229b8 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseJoinProcessorNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseJoinProcessorNode.java @@ -75,12 +75,12 @@ String otherJoinSideNodeName() { @Override public String toString() { return "BaseJoinProcessorNode{" + - "joinThisProcessorParameters=" + joinThisProcessorParameters + - ", joinOtherProcessorParameters=" + joinOtherProcessorParameters + - ", joinMergeProcessorParameters=" + joinMergeProcessorParameters + - ", valueJoiner=" + valueJoiner + - ", thisJoinSideNodeName='" + thisJoinSideNodeName + '\'' + - ", otherJoinSideNodeName='" + otherJoinSideNodeName + '\'' + - "} " + super.toString(); + "joinThisProcessorParameters=" + joinThisProcessorParameters + + ", joinOtherProcessorParameters=" + joinOtherProcessorParameters + + ", joinMergeProcessorParameters=" + joinMergeProcessorParameters + + ", valueJoiner=" + valueJoiner + + ", thisJoinSideNodeName='" + thisJoinSideNodeName + '\'' + + ", otherJoinSideNodeName='" + otherJoinSideNodeName + '\'' + + "} " + super.toString(); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseRepartitionNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseRepartitionNode.java index 84fcc1f2714e1..8e207169e8bb1 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseRepartitionNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/BaseRepartitionNode.java @@ -82,15 +82,15 @@ public ProcessorParameters processorParameters() { @Override public String toString() { return "BaseRepartitionNode{" + - "keySerde=" + keySerde + - ", valueSerde=" + valueSerde + - ", sinkName='" + sinkName + '\'' + - ", sourceName='" + sourceName + '\'' + - ", repartitionTopic='" + repartitionTopic + '\'' + - ", processorParameters=" + processorParameters + '\'' + - ", partitioner=" + partitioner + - ", internalTopicProperties=" + internalTopicProperties + - "} " + super.toString(); + "keySerde=" + keySerde + + ", valueSerde=" + valueSerde + + ", sinkName='" + sinkName + '\'' + + ", sourceName='" + sourceName + '\'' + + ", repartitionTopic='" + repartitionTopic + '\'' + + ", processorParameters=" + processorParameters + '\'' + + ", partitioner=" + partitioner + + ", internalTopicProperties=" + internalTopicProperties + + "} " + super.toString(); } public abstract static class BaseRepartitionNodeBuilder> { diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/GraphNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/GraphNode.java index 6894e0dcb0ba1..88ec2c4d5052f 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/GraphNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/GraphNode.java @@ -147,13 +147,13 @@ public void setOutputVersioned(final boolean outputVersioned) { public String toString() { final String[] parentNames = parentNodeNames(); return "StreamsGraphNode{" + - "nodeName='" + nodeName + '\'' + - ", buildPriority=" + buildPriority + - ", hasWrittenToTopology=" + hasWrittenToTopology + - ", keyChangingOperation=" + keyChangingOperation + - ", valueChangingOperation=" + valueChangingOperation + - ", mergeNode=" + mergeNode + - ", parentNodes=" + Arrays.toString(parentNames) + '}'; + "nodeName='" + nodeName + '\'' + + ", buildPriority=" + buildPriority + + ", hasWrittenToTopology=" + hasWrittenToTopology + + ", keyChangingOperation=" + keyChangingOperation + + ", valueChangingOperation=" + valueChangingOperation + + ", mergeNode=" + mergeNode + + ", parentNodes=" + Arrays.toString(parentNames) + '}'; } public void addLabel(final Label label) { diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/ProcessorGraphNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/ProcessorGraphNode.java index 514676af1f6d4..3c41bffda12d6 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/ProcessorGraphNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/ProcessorGraphNode.java @@ -43,8 +43,8 @@ public ProcessorGraphNode(final String nodeName, @Override public String toString() { return "ProcessorNode{" + - "processorParameters=" + processorParameters + - "} " + super.toString(); + "processorParameters=" + processorParameters + + "} " + super.toString(); } @Override diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StateStoreNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StateStoreNode.java index 05375d35efe83..9bd2fe3a7da2d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StateStoreNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StateStoreNode.java @@ -38,7 +38,7 @@ public void writeToTopology(final InternalTopologyBuilder topologyBuilder) { @Override public String toString() { return "StateStoreNode{" + - " name='" + storeBuilder.storeName() + '\'' + + " name='" + storeBuilder.storeName() + '\'' + ", logConfig=" + storeBuilder.logConfig() + ", loggingEnabled='" + storeBuilder.loggingEnabled() + '\'' + "} "; diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSinkNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSinkNode.java index f12a9e5b9bf2c..a7befc9d6cf43 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSinkNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSinkNode.java @@ -45,9 +45,9 @@ public StreamSinkNode(final String nodeName, @Override public String toString() { return "StreamSinkNode{" + - "topicNameExtractor=" + topicNameExtractor + - ", producedInternal=" + producedInternal + - "} " + super.toString(); + "topicNameExtractor=" + topicNameExtractor + + ", producedInternal=" + producedInternal + + "} " + super.toString(); } @Override diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSourceNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSourceNode.java index d343bdb1bb586..b0a4c40fc517c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSourceNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamSourceNode.java @@ -51,7 +51,7 @@ public void merge(final StreamSourceNode other) { if (resetPolicy != null && !resetPolicy.equals(otherResetPolicy) || otherResetPolicy != null && !otherResetPolicy.equals(resetPolicy)) { log.error("Tried to merge source nodes {} and {} which are subscribed to the same topic/pattern, but " - + "the offset reset policies do not match", this, other); + + "the offset reset policies do not match", this, other); throw new TopologyException("Can't configure different offset reset policies on the same input topic(s)"); } for (final GraphNode otherChild : other.children()) { @@ -63,10 +63,10 @@ public void merge(final StreamSourceNode other) { @Override public String toString() { return "StreamSourceNode{" + - "topicNames=" + (topicNames().isPresent() ? topicNames().get() : null) + - ", topicPattern=" + (topicPattern().isPresent() ? topicPattern().get() : null) + - ", consumedInternal=" + consumedInternal() + - "} " + super.toString(); + "topicNames=" + (topicNames().isPresent() ? topicNames().get() : null) + + ", topicPattern=" + (topicPattern().isPresent() ? topicPattern().get() : null) + + ", consumedInternal=" + consumedInternal() + + "} " + super.toString(); } @Override diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamStreamJoinNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamStreamJoinNode.java index 7448498a44286..d0b55586a966a 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamStreamJoinNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamStreamJoinNode.java @@ -48,7 +48,7 @@ private StreamStreamJoinNode(final String nodeName, null); this.thisWindowedStreamProcessorName = thisWindowedStreamProcessorName; - this.otherWindowedStreamProcessorName = otherWindowedStreamProcessorName; + this.otherWindowedStreamProcessorName = otherWindowedStreamProcessorName; this.selfJoinProcessorParameters = selfJoinProcessorParameters; } @@ -57,7 +57,7 @@ public String toString() { return "StreamStreamJoinNode{" + "thisWindowedStreamProcessorName=" + thisWindowedStreamProcessorName + ", otherWindowedStreamProcessorName=" + otherWindowedStreamProcessorName + - "} " + super.toString(); + "} " + super.toString(); } @SuppressWarnings("unchecked") @@ -163,7 +163,6 @@ public StreamStreamJoinNode build() { thisWindowedStreamProcessorName, otherWindowedStreamProcessorName); - } } } diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamTableJoinNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamTableJoinNode.java index 4e79a1779e8d8..b83c7d8623ac5 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamTableJoinNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/StreamTableJoinNode.java @@ -50,10 +50,10 @@ public StreamTableJoinNode(final String nodeName, @Override public String toString() { return "StreamTableJoinNode{" + - "storeNames=" + Arrays.toString(storeNames) + - ", processorParameters=" + processorParameters + - ", otherJoinSideNodeName='" + otherJoinSideNodeName + '\'' + - "} " + super.toString(); + "storeNames=" + Arrays.toString(storeNames) + + ", processorParameters=" + processorParameters + + ", otherJoinSideNodeName='" + otherJoinSideNodeName + '\'' + + "} " + super.toString(); } @Override diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableSourceNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableSourceNode.java index 192f44dbe3405..d1df000b68b0b 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableSourceNode.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableSourceNode.java @@ -60,10 +60,10 @@ public void reuseSourceTopicForChangeLog(final boolean shouldReuseSourceTopicFor @Override public String toString() { return "TableSourceNode{" + - ", processorParameters=" + processorParameters + - ", sourceName='" + sourceName + '\'' + - ", isGlobalKTable=" + isGlobalKTable + - "} " + super.toString(); + ", processorParameters=" + processorParameters + + ", sourceName='" + sourceName + '\'' + + ", isGlobalKTable=" + isGlobalKTable + + "} " + super.toString(); } public static TableSourceNodeBuilder tableSourceNodeBuilder() { diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/suppress/StrictBufferConfigImpl.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/suppress/StrictBufferConfigImpl.java index 34a9ce69ac5e0..5e5cfaef54658 100644 --- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/suppress/StrictBufferConfigImpl.java +++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/suppress/StrictBufferConfigImpl.java @@ -120,6 +120,6 @@ public String toString() { ", maxBytes=" + maxBytes + ", bufferFullStrategy=" + bufferFullStrategy + ", logConfig=" + logConfig().toString() + - '}'; + '}'; } } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/PunctuationType.java b/streams/src/main/java/org/apache/kafka/streams/processor/PunctuationType.java index 2e50c17053082..d27654b6616dd 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/PunctuationType.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/PunctuationType.java @@ -32,6 +32,6 @@ * */ public enum PunctuationType { - STREAM_TIME, - WALL_CLOCK_TIME, + STREAM_TIME, + WALL_CLOCK_TIME, } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/TaskId.java b/streams/src/main/java/org/apache/kafka/streams/processor/TaskId.java index 6b909ec72747f..d8e4736338f8d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/TaskId.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/TaskId.java @@ -49,7 +49,7 @@ public TaskId(final int subtopology, final int partition, final String topologyN this.partition = partition; if (topologyName != null && topologyName.length() == 0) { LOG.warn("Empty string passed in for task's namedTopology, since NamedTopology name cannot be empty, we " - + "assume this task does not belong to a NamedTopology and downgrade this to null"); + + "assume this task does not belong to a NamedTopology and downgrade this to null"); this.topologyName = null; } else { this.topologyName = topologyName; diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/api/ProcessorWrapper.java b/streams/src/main/java/org/apache/kafka/streams/processor/api/ProcessorWrapper.java index 22b80a35ecb3e..83f8cd17f0cbd 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/api/ProcessorWrapper.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/api/ProcessorWrapper.java @@ -62,7 +62,7 @@ WrappedProcessorSupplier wrapProces * To convert a {@link FixedKeyProcessorSupplier} instance into a {@link WrappedFixedKeyProcessorSupplier}, * use the {@link ProcessorWrapper#asWrappedFixedKey(FixedKeyProcessorSupplier)} method */ - WrappedFixedKeyProcessorSupplier wrapFixedKeyProcessorSupplier(final String processorName, + WrappedFixedKeyProcessorSupplier wrapFixedKeyProcessorSupplier(final String processorName, final FixedKeyProcessorSupplier processorSupplier); /** @@ -77,7 +77,7 @@ static WrappedProcessorSupplier asW /** * Use to convert a {@link FixedKeyProcessorSupplier} instance into a {@link WrappedFixedKeyProcessorSupplier} */ - static WrappedFixedKeyProcessorSupplier asWrappedFixedKey( + static WrappedFixedKeyProcessorSupplier asWrappedFixedKey( final FixedKeyProcessorSupplier processorSupplier ) { return new WrappedFixedKeyProcessorSupplierImpl<>(processorSupplier); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/assignment/TaskAssignmentUtils.java b/streams/src/main/java/org/apache/kafka/streams/processor/assignment/TaskAssignmentUtils.java index 2261e27c367f5..024aeb6fb950b 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/assignment/TaskAssignmentUtils.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/assignment/TaskAssignmentUtils.java @@ -949,7 +949,7 @@ private static MoveStandbyTaskPredicate getStandbyTaskMovePredicate(final Applic return (source, destination, sourceTask, kafkaStreamsAssignments) -> { final Set> tagsWithSource = new HashSet<>(); final Set> tagsWithDestination = new HashSet<>(); - for (final KafkaStreamsAssignment assignment: kafkaStreamsAssignments.values()) { + for (final KafkaStreamsAssignment assignment : kafkaStreamsAssignments.values()) { final boolean hasAssignedTask = assignment.tasks().containsKey(sourceTask); final boolean isSourceProcess = assignment.processId().equals(source.processId()); final boolean isDestinationProcess = assignment.processId().equals(destination.processId()); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/assignment/assignors/StickyTaskAssignor.java b/streams/src/main/java/org/apache/kafka/streams/processor/assignment/assignors/StickyTaskAssignor.java index 6ad61851ddae3..f26af2221d260 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/assignment/assignors/StickyTaskAssignor.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/assignment/assignors/StickyTaskAssignor.java @@ -163,10 +163,10 @@ private static void assignActive(final ApplicationState applicationState, // try and assign any remaining unassigned tasks to clients that previously // have seen the task. - for (final Iterator iterator = unassigned.iterator(); iterator.hasNext(); ) { + for (final Iterator iterator = unassigned.iterator(); iterator.hasNext();) { final TaskId taskId = iterator.next(); final Set previousClientsForStandbyTask = assignmentState.previousStandbyAssignment.getOrDefault(taskId, new HashSet<>()); - for (final ProcessId client: previousClientsForStandbyTask) { + for (final ProcessId client : previousClientsForStandbyTask) { if (assignmentState.hasRoomForActiveTask(client, activeTasksPerThread)) { assignmentState.finalizeAssignment(taskId, client, AssignedTask.Type.ACTIVE); iterator.remove(); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListener.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListener.java index 1cdfcba6810f5..532889530498e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListener.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListener.java @@ -56,7 +56,7 @@ public DefaultStreamsRebalanceListener(final Logger log, this.streamsRebalanceData = streamsRebalanceData; this.streamThread = streamThread; this.taskManager = taskManager; - + // Create sensors for rebalance metrics this.tasksRevokedSensor = RebalanceListenerMetrics.tasksRevokedSensor(threadId, streamsMetrics); this.tasksAssignedSensor = RebalanceListenerMetrics.tasksAssignedSensor(threadId, streamsMetrics); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/GlobalStateManagerImpl.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/GlobalStateManagerImpl.java index 12aa60c0c79a4..63a5adfc0db03 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/GlobalStateManagerImpl.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/GlobalStateManagerImpl.java @@ -437,7 +437,7 @@ private void reprocessState(final StateStoreMetadata storeMetadata) { fatalUserException ); } - + if (response.result() == ProcessingExceptionHandler.Result.FAIL) { log.error("Processing exception handler is set to fail upon" + " a processing error. If you would rather have the streaming pipeline" + diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopicManager.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopicManager.java index 554a646b48461..ba91d945005e7 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopicManager.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopicManager.java @@ -516,7 +516,7 @@ private Set computeTopicsToCreate(final Map topicsNotYetCreated = identifyTopicsNotCreated(topics, tempUnknownTopics); final Set topicsToCreate = new HashSet<>(); - + for (final String topicName : topicsNotYetCreated) { // Topic already exists or non-deterministic result if (tempUnknownTopics.contains(topicName) || topics.get(topicName) == null) { @@ -554,7 +554,7 @@ private Set createTopics(final Set topicsToCreate, createTopicResult.getValue().get(); topicsNotReady.remove(topicName); createdTopics.add(topicName); - + } catch (final InterruptedException fatalException) { // this should not happen; if it ever happens it indicate a bug Thread.currentThread().interrupt(); @@ -615,10 +615,10 @@ private Set createTopics(final Set topicsToCreate, ); Utils.sleep(retryBackOffMs); } - } + } return createdTopics; - } - + } + /** * Try to get the partition information for the given topics; return the partition info for topics that already exists. @@ -877,8 +877,8 @@ private void cleanUpCreatedTopics(final Set topicsToCleanUp) { deadline, "Cleanup timeout", String.format("Could not cleanup internal topics within %d milliseconds. This can happen if the " + - "Kafka cluster is temporarily not available or the broker did not complete topic creation " + - "before the cleanup. The following internal topics could not be cleaned up: %s", + "Kafka cluster is temporarily not available or the broker did not complete topic creation " + + "before the cleanup. The following internal topics could not be cleaned up: %s", retryTimeoutMs, topicsStillToCleanup), null )); @@ -897,7 +897,7 @@ private void cleanUpCreatedTopics(final Set topicsToCleanUp) { log.info("Completed cleanup of internal topics {}.", topicsToCleanUp); } - + private void maybeThrowTimeout(final TimeoutContext context) { if (!context.pendingItems.isEmpty() && time.milliseconds() >= context.deadline) { log.error("{}: {}", context.prefix, context.errorDetails); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilder.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilder.java index a19bbcc50eb78..271b305f414b6 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilder.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilder.java @@ -218,6 +218,7 @@ private ReprocessFactory(final ProcessorSupplier processor this.valueDeserializer = value; this.processorName = processorName; } + public ProcessorSupplier processorSupplier() { return processorSupplier; } @@ -2255,7 +2256,7 @@ synchronized void addSubscribedTopicsFromAssignment(final Set pa final Collection existingTopics = subscriptionUpdates(); - if (!existingTopics.equals(assignedTopics)) { + if (!existingTopics.equals(assignedTopics)) { assignedTopics.addAll(existingTopics); updateSubscribedTopics(assignedTopics, logPrefix); } @@ -2295,7 +2296,7 @@ public synchronized Map stateStores() { public WrappedFixedKeyProcessorSupplier wrapFixedKeyProcessorSupplier( final String name, - final FixedKeyProcessorSupplier processorSupplier + final FixedKeyProcessorSupplier processorSupplier ) { return ProcessorWrapper.asWrappedFixedKey( processorWrapper.wrapFixedKeyProcessorSupplier(name, processorSupplier) diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/NoOpProcessorWrapper.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/NoOpProcessorWrapper.java index 7a969731b06f8..96259c2df5bb4 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/NoOpProcessorWrapper.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/NoOpProcessorWrapper.java @@ -41,7 +41,7 @@ public WrappedFixedKeyProcessorSupplier wrapFix return ProcessorWrapper.asWrappedFixedKey(processorSupplier); } - public static class WrappedProcessorSupplierImpl implements WrappedProcessorSupplier { + public static class WrappedProcessorSupplierImpl implements WrappedProcessorSupplier { private final ProcessorSupplier delegate; diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/PartitionGroup.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/PartitionGroup.java index 95c5fc29f257e..c68a5fcedc221 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/PartitionGroup.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/PartitionGroup.java @@ -131,7 +131,7 @@ ReadyToProcessResult readyToProcess(final long wallClockTime) { } else { final Long fetchedLag = fetchedLags.getOrDefault(partition, -1L); appendLog(logMessageBuilder, String.format("Partition %s has fetched lag of %d", partition, fetchedLag)); - + if (fetchedLag == -1L) { // must wait to fetch metadata for the partition idlePartitionDeadlines.remove(partition); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorContextImpl.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorContextImpl.java index a0ca68753107a..60447aac13a2c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorContextImpl.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorContextImpl.java @@ -158,7 +158,7 @@ private void addVectorClockToHeaders(final Headers headers, final Position posit */ @SuppressWarnings("unchecked") @Override - public S getStateStore(final String name) { + public S getStateStore(final String name) { throwUnsupportedOperationExceptionIfStandby("getStateStore"); if (currentNode() == null) { throw new StreamsException("Accessing from an unknown node"); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorStateManager.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorStateManager.java index 0992d33f70095..eb33266830313 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorStateManager.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/ProcessorStateManager.java @@ -713,7 +713,7 @@ private Long changelogOffsetFromCommittedOffset(final long offset) { return offset != OFFSET_UNKNOWN ? offset : null; } - private TopicPartition getStorePartition(final String storeName) { + private TopicPartition getStorePartition(final String storeName) { // NOTE we assume the partition of the topic can always be inferred from the task id; // if user ever use a custom partition grouper (deprecated in KIP-528) this would break and // it is not a regression (it would always break anyways) diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/RecordCollectorImpl.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/RecordCollectorImpl.java index c4178733ef319..5876cb7cfa401 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/RecordCollectorImpl.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/RecordCollectorImpl.java @@ -171,7 +171,7 @@ public void send(final String topic, + "topic=[{}]", topic); droppedRecordsSensor.record(); } else { - for (final int multicastPartition: multicastPartitions) { + for (final int multicastPartition : multicastPartitions) { send(topic, key, value, headers, multicastPartition, timestamp, keySerializer, valueSerializer, processorNodeId, context); } } @@ -398,7 +398,7 @@ private void handleException(final ProductionExceptionHandler.Serializati } log.warn("Unable to serialize record, continue processing. " + - "ProducerRecord(topic=[{}], partition=[{}], timestamp=[{}])", + "ProducerRecord(topic=[{}], partition=[{}], timestamp=[{}])", topic, partition, timestamp); @@ -449,10 +449,10 @@ private StreamsException createStreamsExceptionForClassCastException(final MessageFormat.format( String.format( "ClassCastException while producing data to topic %s. " + - "The {0} serializer %s is not compatible to the actual {0} type: %s. " + - "Change the default {0} serde in StreamConfig or provide the correct {0} serde via method parameters " + - "(for example if using the DSL, `#to(String topic, Produced produced)` with " + - "`Produced.{0}Serde(WindowedSerdes.timeWindowedSerdeFrom(String.class))`).", + "The {0} serializer %s is not compatible to the actual {0} type: %s. " + + "Change the default {0} serde in StreamConfig or provide the correct {0} serde via method parameters " + + "(for example if using the DSL, `#to(String topic, Produced produced)` with " + + "`Produced.{0}Serde(WindowedSerdes.timeWindowedSerdeFrom(String.class))`).", topic, keyOrValueSerializer.getClass().getName(), keyOrValueClass), diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/RepartitionTopics.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/RepartitionTopics.java index 2a0358a866b3d..09e80d8c21558 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/RepartitionTopics.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/RepartitionTopics.java @@ -75,7 +75,7 @@ public void setup() { log.info("Skipping the repartition topic validation since there are no repartition topics."); } else { log.info("Skipping the repartition topic validation since all topologies containing repartition" - + "topics are missing external user source topics and cannot be processed."); + + "topics are missing external user source topics and cannot be processed."); } } else { // ensure the co-partitioning topics within the group have the same number of partitions, diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StateDirectory.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StateDirectory.java index 31ce759a3d84d..fcca6e87f24bb 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StateDirectory.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StateDirectory.java @@ -831,7 +831,7 @@ private List listTaskDirectories(final FileFilter filter) { } private List listNamedTopologyDirs() { - final File[] namedTopologyDirectories = stateDir.listFiles(f -> f.getName().startsWith("__") && f.getName().endsWith("__")); + final File[] namedTopologyDirectories = stateDir.listFiles(f -> f.getName().startsWith("__") && f.getName().endsWith("__")); return namedTopologyDirectories != null ? Arrays.asList(namedTopologyDirectories) : Collections.emptyList(); } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StoreChangelogReader.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StoreChangelogReader.java index eab7da800d882..6be358d222b10 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StoreChangelogReader.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StoreChangelogReader.java @@ -1029,7 +1029,7 @@ private void prepareChangelogs(final Map tasks, final long recordsToRestore = Math.max(changelogMetadata.restoreEndOffset - startOffset, 0L); task.recordRestoration(time, recordsToRestore, true); changelogMetadata.restoreStartTimeNs = time.nanoseconds(); - } else if (changelogMetadata.stateManager.taskType() == TaskType.STANDBY) { + } else if (changelogMetadata.stateManager.taskType() == TaskType.STANDBY) { try { standbyUpdateListener.onUpdateStart(partition, storeName, startOffset); } catch (final Exception e) { diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamTask.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamTask.java index 05c049739b18c..d859bbd9c2b54 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamTask.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamTask.java @@ -222,7 +222,7 @@ public StreamTask(final TaskId id, stateMgr.registerGlobalStateStores(topology.globalStateStores()); committedOffsets = new HashMap<>(); highWatermark = new HashMap<>(); - for (final TopicPartition topicPartition: inputPartitions) { + for (final TopicPartition topicPartition : inputPartitions) { committedOffsets.put(topicPartition, -1L); highWatermark.put(topicPartition, -1L); } @@ -636,7 +636,7 @@ private void validateClean() { // closeClean in handleAssignment. We should throw if we detect this to force the TaskManager to closeDirty if (commitNeeded) { log.debug("Tried to close clean but there was pending uncommitted data, this means we failed to" - + " commit and should close as dirty instead"); + + " commit and should close as dirty instead"); throw new TaskMigratedException("Tried to close dirty task as clean"); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamThread.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamThread.java index 833d42aeae4ea..0e72e92196108 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamThread.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamThread.java @@ -259,13 +259,13 @@ State setState(final State newState) { if (state == State.PENDING_SHUTDOWN && newState != State.DEAD) { log.debug("Ignoring request to transit from PENDING_SHUTDOWN to {}: " + - "only DEAD state is a valid next state", newState); + "only DEAD state is a valid next state", newState); // when the state is already in PENDING_SHUTDOWN, all other transitions will be // refused but we do not throw exception here return null; } else if (state == State.DEAD) { log.debug("Ignoring request to transit from DEAD to {}: " + - "no valid next state after DEAD", newState); + "no valid next state after DEAD", newState); // when the state is already in NOT_RUNNING, all its transitions // will be refused but we do not throw exception here return null; @@ -1124,8 +1124,8 @@ public void sendShutdownRequest() { private void handleTaskMigrated(final TaskMigratedException e) { log.warn("Detected that the thread is being fenced. " + - "This implies that this thread missed a rebalance and dropped out of the consumer group. " + - "Will close out all assigned tasks and rejoin the consumer group.", e); + "This implies that this thread missed a rebalance and dropped out of the consumer group. " + + "Will close out all assigned tasks and rejoin the consumer group.", e); taskManager.handleLostAll(); mainConsumer.unsubscribe(); @@ -1454,7 +1454,7 @@ private long pollPhase() { final int numRecords = records.count(); - for (final TopicPartition topicPartition: records.partitions()) { + for (final TopicPartition topicPartition : records.partitions()) { records .records(topicPartition) .stream() diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignor.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignor.java index f458629cf1f2c..c67e043f9cbac 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignor.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignor.java @@ -618,7 +618,7 @@ private boolean checkMetadataVersions(final int minReceivedMetadataVersion, } else if (minReceivedMetadataVersion >= EARLIEST_PROBEABLE_VERSION) { versionProbing = true; log.info("Received a future (version probing) subscription (version: {})." - + " Sending assignment back (with supported version {}).", + + " Sending assignment back (with supported version {}).", futureMetadataVersion, minSupportedMetadataVersion); @@ -728,10 +728,10 @@ private void checkAllPartitions(final Set allSourceTopics, partitionInfo.partition()); if (!allAssignedPartitions.contains(partition)) { log.warn("Partition {} is not assigned to any tasks: {}" - + " Possible causes of a partition not getting assigned" - + " is that another topic defined in the topology has not been" - + " created when starting your streams application," - + " resulting in no tasks created for this topology at all.", partition, + + " Possible causes of a partition not getting assigned" + + " is that another topic defined in the topology has not been" + + " created when starting your streams application," + + " resulting in no tasks created for this topology at all.", partition, partitionsForTask); } } @@ -784,7 +784,7 @@ private UserTaskAssignmentListener assignTasksToClients(final Cluster fullMetada statefulTasks.addAll(changelogTopics.statefulTaskIds()); log.info("Assigning stateful tasks: {}\n" - + "and stateless tasks: {}", + + "and stateless tasks: {}", statefulTasks, allTasks.stream().filter(t -> !statefulTasks.contains(t)).collect(Collectors.toSet())); log.debug("Assigning tasks and {} standby replicas to client nodes {}", @@ -866,7 +866,7 @@ private LegacyTaskAssignor createTaskAssignor(final boolean lagComputationSucces return taskAssignor; } else { log.info("Failed to fetch end offsets for changelogs, will return previous assignment to clients and " - + "trigger another rebalance to retry."); + + "trigger another rebalance to retry."); return new FallbackPriorTaskAssignor(); } } @@ -1269,7 +1269,7 @@ private Map> buildStandbyTaskMap(final String consum // all of the accumulated state in the case of in-memory stores) if (clientState.previouslyOwnedStandby(task) && allStatefulTasks.contains(task)) { log.info("Adding removed stateful active task {} as a standby for {} until it is revoked and can " - + "be transitioned to active in a followup rebalance", task, consumer); + + "be transitioned to active in a followup rebalance", task, consumer); // This has no effect on the assignment, as we'll never consult the ClientState again, but // it does perform a useful assertion that the it's legal to assign this task as a standby to this instance diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsRebalanceListener.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsRebalanceListener.java index 9ee34d8398b61..8083c264e95b4 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsRebalanceListener.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsRebalanceListener.java @@ -61,7 +61,7 @@ public void onPartitionsAssigned(final Collection partitions) { throw new MissingSourceTopicException("One or more source topics were missing during rebalance"); } else if (assignmentErrorCode.get() == AssignorError.VERSION_PROBING.code()) { log.info("Received version probing code {}", AssignorError.VERSION_PROBING); - } else if (assignmentErrorCode.get() == AssignorError.ASSIGNMENT_ERROR.code()) { + } else if (assignmentErrorCode.get() == AssignorError.ASSIGNMENT_ERROR.code()) { log.error("Received error code {}", AssignorError.ASSIGNMENT_ERROR); taskManager.handleRebalanceComplete(); throw new TaskAssignmentException("Hit an unexpected exception during task assignment phase of rebalance"); @@ -83,8 +83,8 @@ public void onPartitionsAssigned(final Collection partitions) { @Override public void onPartitionsRevoked(final Collection partitions) { log.debug("Current state {}: revoked partitions {} because of consumer rebalance.\n" + - "\tcurrently assigned active tasks: {}\n" + - "\tcurrently assigned standby tasks: {}\n", + "\tcurrently assigned active tasks: {}\n" + + "\tcurrently assigned standby tasks: {}\n", streamThread.state(), partitions, taskManager.activeTaskIds(), @@ -105,8 +105,8 @@ public void onPartitionsRevoked(final Collection partitions) { @Override public void onPartitionsLost(final Collection partitions) { log.info("at state {}: partitions {} lost due to missed rebalance.\n" + - "\tlost active tasks: {}\n" + - "\tlost assigned standby tasks: {}\n", + "\tlost active tasks: {}\n" + + "\tlost assigned standby tasks: {}\n", streamThread.state(), partitions, taskManager.activeTaskIds(), diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskAction.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskAction.java index da5f3250ea7c0..8e7d03daeb03c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskAction.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskAction.java @@ -18,5 +18,6 @@ interface TaskAction { String name(); + void apply(final T task); } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskExecutionMetadata.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskExecutionMetadata.java index 0e2f52446491f..17a686ceb212d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskExecutionMetadata.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskExecutionMetadata.java @@ -71,7 +71,7 @@ public boolean canProcessTask(final Task task, final long now) { final boolean taskWasReady = !taskToLastNotReadyLogTime.containsKey(task.id()); final boolean canProcess; final String logMessage; - + if (!hasNamedTopologies) { // TODO implement error handling/backoff for non-named topologies (needs KIP) canProcess = !pausedTopologies.contains(UNNAMED_TOPOLOGY); @@ -94,7 +94,7 @@ public boolean canProcessTask(final Task task, final long now) { } } } - + if (!canProcess) { if (taskWasReady) { // READY -> NOT_READY - start timer @@ -108,16 +108,16 @@ public boolean canProcessTask(final Task task, final long now) { taskToLastNotReadyLogTime.remove(task.id()); log.trace(logMessage); } - + return canProcess; } - + private void maybeLogNotReady(final TaskId taskId, final long now, final String logMessage) { final Long lastLogTime = taskToLastNotReadyLogTime.get(taskId); if (lastLogTime == null) { return; } - + final long timeSinceLastLog = now - lastLogTime; if (timeSinceLastLog >= NOT_READY_LOG_INTERVAL_MS) { log.info("Task {} is not ready to process: {}", taskId, logMessage != null ? logMessage : "Task cannot be processed"); @@ -158,7 +158,7 @@ void removeTaskFromSuccessfullyProcessedBeforeClosing(final Task task) { void clearSuccessfullyProcessed() { successfullyProcessed.clear(); } - + void removeTaskFromNotReadyTracking(final Task task) { final TaskId taskId = task.id(); taskToLastNotReadyLogTime.remove(taskId); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskManager.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskManager.java index 4eb2ad36fc8ad..093199d3443fd 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskManager.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TaskManager.java @@ -110,6 +110,7 @@ public class TaskManager { private final StandbyTaskCreator standbyTaskCreator; private final StateUpdater stateUpdater; private final DefaultTaskManager schedulingTaskManager; + TaskManager(final Time time, final ChangelogReader changelogReader, final ProcessId processId, @@ -151,6 +152,7 @@ public class TaskManager { void init() { this.stateUpdater.start(); } + void setMainConsumer(final Consumer mainConsumer) { this.mainConsumer = mainConsumer; } @@ -244,7 +246,7 @@ boolean handleCorruption(final Set corruptedTasks) { commitTasksAndMaybeUpdateCommittableOffsets(tasksToCommit, new HashMap<>()); } catch (final TaskCorruptedException e) { log.info("Some additional tasks were found corrupted while trying to commit, these will be added to the " + - "tasks to clean and revive: {}", e.corruptedTasks()); + "tasks to clean and revive: {}", e.corruptedTasks()); corruptedActiveTasks.addAll(tasks.initializedTasks(e.corruptedTasks())); } catch (final TimeoutException e) { log.info("Hit TimeoutException when committing all non-corrupted tasks, these will be closed and revived"); @@ -355,10 +357,10 @@ private Collection assignStartupTasks(final Map> activeTasks, final Map> standbyTasks) { log.info("Handle new assignment with:\n" + - "\tNew active tasks: {}\n" + - "\tNew standby tasks: {}\n" + - "\tExisting active tasks: {}\n" + - "\tExisting standby tasks: {}", + "\tNew active tasks: {}\n" + + "\tNew standby tasks: {}\n" + + "\tExisting active tasks: {}\n" + + "\tExisting standby tasks: {}", activeTasks.keySet(), standbyTasks.keySet(), activeTaskIds(), standbyTaskIds()); topologyMetadata.addSubscribedTopicsFromAssignment( @@ -382,7 +384,7 @@ public void handleAssignment(final Map> activeTasks, tasks.clearPendingTasksToCreate(); tasks.addPendingActiveTasksToCreate(pendingTasksToCreate(activeTasksToCreate)); tasks.addPendingStandbyTasksToCreate(pendingTasksToCreate(standbyTasksToCreate)); - + // first rectify all existing tasks: // 1. for tasks that are already owned, just update input partitions / resume and skip re-creating them // 2. for tasks that have changed active/standby status, just recycle and skip re-creating them @@ -1053,8 +1055,8 @@ void handleRevocation(final Collection revokedPartitions) { if (!remainingRevokedPartitions.isEmpty()) { log.debug("The following revoked partitions {} are missing from the current task partitions. It could " - + "potentially be due to race condition of consumer detecting the heartbeat failure, or the tasks " + - "have been cleaned up by the handleAssignment callback.", remainingRevokedPartitions); + + "potentially be due to race condition of consumer detecting the heartbeat failure, or the tasks " + + "have been cleaned up by the handleAssignment callback.", remainingRevokedPartitions); } if (revokedTasksNeedCommit) { @@ -1696,6 +1698,7 @@ private Stream standbyTaskStream() { standbyTasksInTaskRegistry ); } + // For testing only. int commitAll() { return commit(tasks.allInitializedTasks()); @@ -1706,7 +1709,7 @@ int commitAll() { * the corresponding record queues have capacity (again). */ public void resumePollingForPartitionsWithAvailableSpace() { - for (final StreamTask t: tasks.activeInitializedTasks()) { + for (final StreamTask t : tasks.activeInitializedTasks()) { t.resumePollingForPartitionsWithAvailableSpace(); } } @@ -1715,7 +1718,7 @@ public void resumePollingForPartitionsWithAvailableSpace() { * Fetches up-to-date lag information from the consumer. */ public void updateLags() { - for (final StreamTask t: tasks.activeInitializedTasks()) { + for (final StreamTask t : tasks.activeInitializedTasks()) { t.updateLags(); } } @@ -1944,7 +1947,7 @@ void recordTaskProcessRatio(final long totalProcessLatencyMs, final long now) { * @throws TaskMigratedException if the task producer got fenced (EOS only) */ int punctuate() { - return taskExecutor.punctuate(); + return taskExecutor.punctuate(); } void maybePurgeCommittedRecords() { diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TopologyMetadata.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TopologyMetadata.java index fe04f2c4613f2..72df964df6665 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/TopologyMetadata.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/TopologyMetadata.java @@ -135,7 +135,7 @@ public TopologyMetadata(final ConcurrentNavigableMap subtopologyTopicsInfoMapExcluding(final Set< public Map> topologyToSubtopologyTopicsInfoMap() { final Map> topologyToSubtopologyTopicsInfoMap = new HashMap<>(); applyToEachBuilder(b -> topologyToSubtopologyTopicsInfoMap.put(b.topologyName(), b.subtopologyToTopicsInfo())); - return topologyToSubtopologyTopicsInfoMap; + return topologyToSubtopologyTopicsInfoMap; } public Map> nodeToSourceTopics(final TaskId task) { diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/AssignorError.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/AssignorError.java index 5bf36ff3b19fc..b10708568a6ed 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/AssignorError.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/AssignorError.java @@ -42,6 +42,7 @@ public int code() { public String codeName() { return codeName; } + public String description() { return description; } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ClientState.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ClientState.java index 25f931cb65fda..23242f9899133 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ClientState.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ClientState.java @@ -201,7 +201,7 @@ public Map> prevOwnedStandbyByConsumer() { final Map> consumerToPreviousStandbyTaskIds = new TreeMap<>(); final Map> consumerToPreviousActiveTaskIds = previousActiveTasks.consumerToTaskIds(); - for (final Map.Entry> entry: consumerToPreviousStatefulTaskIds.entrySet()) { + for (final Map.Entry> entry : consumerToPreviousStatefulTaskIds.entrySet()) { final Set standbyTaskIds = new HashSet<>(entry.getValue()); if (consumerToPreviousActiveTaskIds.containsKey(entry.getKey())) standbyTaskIds.removeAll(consumerToPreviousActiveTaskIds.get(entry.getKey())); @@ -395,10 +395,10 @@ public void computeTaskLags(final ProcessId uuid, final Map allTas taskLagTotals.put(task, UNKNOWN_OFFSET_SUM); } else if (endOffsetSum < offsetSum) { LOG.warn("Task " + task + " had endOffsetSum=" + endOffsetSum + " smaller than offsetSum=" + - offsetSum + " on member " + uuid + ". This probably means the task is corrupted," + - " which in turn indicates that it will need to restore from scratch if it gets assigned." + - " The assignor will de-prioritize returning this task to this member in the hopes that" + - " some other member may be able to re-use its state."); + offsetSum + " on member " + uuid + ". This probably means the task is corrupted," + + " which in turn indicates that it will need to restore from scratch if it gets assigned." + + " The assignor will de-prioritize returning this task to this member in the hopes that" + + " some other member may be able to re-use its state."); taskLagTotals.put(task, endOffsetSum); } else { taskLagTotals.put(task, endOffsetSum - offsetSum); @@ -502,7 +502,7 @@ public void setAssignedTasks(final KafkaStreamsAssignment assignment) { public String currentAssignment() { return "[activeTasks: (" + assignedActiveTasks.taskIds() + - ") standbyTasks: (" + assignedStandbyTasks.taskIds() + ")]"; + ") standbyTasks: (" + assignedStandbyTasks.taskIds() + ")]"; } @Override diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ConsumerProtocolUtils.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ConsumerProtocolUtils.java index 8dbedb8b5d938..8211c7f79a407 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ConsumerProtocolUtils.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/ConsumerProtocolUtils.java @@ -85,7 +85,7 @@ public static void writeTaskIdTo(final TaskId taskId, final ByteBuffer buf, fina throw new TaskAssignmentException("Named topologies are not compatible with protocol version " + version); } } - + public static TaskId readTaskIdFrom(final ByteBuffer buf, final int version) { final int subtopology = buf.getInt(); final int partition = buf.getInt(); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignor.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignor.java index b05ce401fbf14..4a05bd9549f26 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignor.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignor.java @@ -166,7 +166,7 @@ private void assignActive() { // try and assign any remaining unassigned tasks to clients that previously // have seen the task. - for (final Iterator iterator = unassigned.iterator(); iterator.hasNext(); ) { + for (final Iterator iterator = unassigned.iterator(); iterator.hasNext();) { final TaskId taskId = iterator.next(); final Set clientIds = previousStandbyTaskAssignment.get(taskId); if (clientIds != null) { diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/StreamsAssignmentProtocolVersions.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/StreamsAssignmentProtocolVersions.java index 47169ffe0fc9e..63b46ab6b0290 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/StreamsAssignmentProtocolVersions.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/assignment/StreamsAssignmentProtocolVersions.java @@ -21,6 +21,7 @@ public final class StreamsAssignmentProtocolVersions { public static final int EARLIEST_PROBEABLE_VERSION = 3; public static final int MIN_NAMED_TOPOLOGY_VERSION = 10; public static final int LATEST_SUPPORTED_VERSION = 11; + /* * Any time you modify the subscription or assignment info, you need to bump the latest supported version, unless * the version has already been bumped within the current release cycle. diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImpl.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImpl.java index a23a50e755aa5..aebdcf7ed5774 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImpl.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImpl.java @@ -261,6 +261,7 @@ public void addThreadLevelMutableMetric(final String name, final Gauge valueProvider) { addThreadLevelMutableMetric(name, description, threadId, Collections.emptyMap(), valueProvider); } + public void addThreadLevelMutableMetric(final String name, final String description, final String threadId, diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetrics.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetrics.java index d9e8f668c137d..6fcb74000c06d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetrics.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetrics.java @@ -49,7 +49,7 @@ private ThreadMetrics() {} private static final String CREATE_TASK = "task-created"; private static final String CLOSE_TASK = "task-closed"; private static final String BLOCKED_TIME = "blocked-time-ns-total"; - private static final String STATE = "state"; + private static final String STATE = "state"; private static final String THREAD_START_TIME = "thread-start-time"; private static final String THREAD_STATE = "thread-state"; diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/KafkaStreamsNamedTopologyWrapper.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/KafkaStreamsNamedTopologyWrapper.java index 943f00dc2e57b..f232af5af0bcc 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/KafkaStreamsNamedTopologyWrapper.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/KafkaStreamsNamedTopologyWrapper.java @@ -209,7 +209,7 @@ public RemoveNamedTopologyResult removeNamedTopology(final String topologyToRemo if (hasStartedOrFinishedShuttingDown()) { log.error("Attempted to remove topology {} from while the Kafka Streams was in state {}, " - + "topologies cannot be modified if the application has begun or completed shutting down.", + + "topologies cannot be modified if the application has begun or completed shutting down.", topologyToRemove, state ); removeTopologyFuture.completeExceptionally( @@ -217,7 +217,7 @@ public RemoveNamedTopologyResult removeNamedTopology(final String topologyToRemo ); } else if (getTopologyByName(topologyToRemove).isEmpty()) { log.error("Attempted to remove unknown topology {}. This application currently contains the" - + "following topologies: {}.", topologyToRemove, topologyMetadata.namedTopologiesView() + + "following topologies: {}.", topologyToRemove, topologyMetadata.namedTopologiesView() ); removeTopologyFuture.completeExceptionally( new UnknownTopologyException("Unable to remove topology", topologyToRemove) diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/NamedTopologyStoreQueryParameters.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/NamedTopologyStoreQueryParameters.java index 65f6c8306b316..5b73c159b645e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/NamedTopologyStoreQueryParameters.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/NamedTopologyStoreQueryParameters.java @@ -28,7 +28,7 @@ public class NamedTopologyStoreQueryParameters extends StoreQueryParameters queryableStoreType, + final QueryableStoreType queryableStoreType, final Integer partition, final boolean staleStores) { super(storeName, queryableStoreType, partition, staleStores); diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/RemoveNamedTopologyResult.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/RemoveNamedTopologyResult.java index a9c094f828102..ac9a4a585308e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/RemoveNamedTopologyResult.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/RemoveNamedTopologyResult.java @@ -99,7 +99,7 @@ public Void get() throws ExecutionException { resetOffsets.run(); } catch (final Throwable e) { log.error("Failed to reset offsets, you should do so manually if you want to add new topologies" - + "in the future that consume from the same input topics"); + + "in the future that consume from the same input topics"); firstError.compareAndSet(e, null); } diff --git a/streams/src/main/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManager.java b/streams/src/main/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManager.java index 53950c1008817..283b0e8f179bb 100644 --- a/streams/src/main/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManager.java +++ b/streams/src/main/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManager.java @@ -369,17 +369,17 @@ private boolean canProgress(final StreamTask task, final long nowMs) { } public void startTaskExecutors() { - for (final TaskExecutor t: taskExecutors) { + for (final TaskExecutor t : taskExecutors) { t.start(); } } public void shutdown(final Duration duration) { - for (final TaskExecutor t: taskExecutors) { + for (final TaskExecutor t : taskExecutors) { t.requestShutdown(); } signalTaskExecutors(); - for (final TaskExecutor t: taskExecutors) { + for (final TaskExecutor t : taskExecutors) { t.awaitShutdown(duration); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/DslKeyValueParams.java b/streams/src/main/java/org/apache/kafka/streams/state/DslKeyValueParams.java index 3bf696761fb22..191b3e6c612af 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/DslKeyValueParams.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/DslKeyValueParams.java @@ -47,7 +47,7 @@ public DslKeyValueParams(final String name, final boolean isTimestamped) { * @param dslStoreFormat the format of the state store, see ({@link DslStoreFormat} */ public DslKeyValueParams(final String name, final DslStoreFormat dslStoreFormat) { - this.name = Objects.requireNonNull(name); + this.name = Objects.requireNonNull(name); this.dslStoreFormat = Objects.requireNonNull(dslStoreFormat); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/ReadOnlyWindowStore.java b/streams/src/main/java/org/apache/kafka/streams/state/ReadOnlyWindowStore.java index 3bcb5ec8ddbaa..760ebecf75367 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/ReadOnlyWindowStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/ReadOnlyWindowStore.java @@ -118,7 +118,7 @@ public interface ReadOnlyWindowStore { * @throws NullPointerException if {@code null} is used for key. * @throws IllegalArgumentException if duration is negative or can't be represented as {@code long milliseconds} */ - default WindowStoreIterator backwardFetch(final K key, final Instant timeFrom, final Instant timeTo) throws IllegalArgumentException { + default WindowStoreIterator backwardFetch(final K key, final Instant timeFrom, final Instant timeTo) throws IllegalArgumentException { throw new UnsupportedOperationException(); } @@ -157,7 +157,7 @@ KeyValueIterator, V> fetch(K keyFrom, K keyTo, Instant timeFrom, Ins * @throws IllegalArgumentException if duration is negative or can't be represented as {@code long milliseconds} */ default KeyValueIterator, V> backwardFetch(final K keyFrom, final K keyTo, final Instant timeFrom, final Instant timeTo) - throws IllegalArgumentException { + throws IllegalArgumentException { throw new UnsupportedOperationException(); } @@ -204,7 +204,7 @@ default KeyValueIterator, V> backwardAll() { * @throws NullPointerException if {@code null} is used for any key * @throws IllegalArgumentException if duration is negative or can't be represented as {@code long milliseconds} */ - default KeyValueIterator, V> backwardFetchAll(final Instant timeFrom, final Instant timeTo) throws IllegalArgumentException { + default KeyValueIterator, V> backwardFetchAll(final Instant timeFrom, final Instant timeTo) throws IllegalArgumentException { throw new UnsupportedOperationException(); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/SessionStoreWithHeaders.java b/streams/src/main/java/org/apache/kafka/streams/state/SessionStoreWithHeaders.java index 8cae65c809355..3e4147c1fc410 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/SessionStoreWithHeaders.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/SessionStoreWithHeaders.java @@ -32,6 +32,6 @@ * @param type of the record keys * @param type of the aggregated values */ -public interface SessionStoreWithHeaders extends StateStore, SessionStore> { +public interface SessionStoreWithHeaders extends StateStore, SessionStore> { } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/BatchWritingStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/BatchWritingStore.java index 60328253cafe8..0504dada12216 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/BatchWritingStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/BatchWritingStore.java @@ -24,5 +24,6 @@ public interface BatchWritingStore { void addToBatch(final KeyValue record, final WriteBatchInterface batch) throws RocksDBException; + void write(final WriteBatchInterface batch) throws RocksDBException; } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/CacheFunction.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/CacheFunction.java index 66ef2d76f17a7..f85fa3fabf45c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/CacheFunction.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/CacheFunction.java @@ -21,5 +21,6 @@ interface CacheFunction { Bytes key(Bytes cacheKey); + Bytes cacheKey(Bytes cacheKey); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/HeadersDeserializer.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/HeadersDeserializer.java index 18090042ce864..1aebc0033672d 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/HeadersDeserializer.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/HeadersDeserializer.java @@ -69,7 +69,7 @@ public static Headers deserialize(final byte[] data) { for (int i = 0; i < headersCount; i++) { final int keyLength = ByteUtils.readVarint(buffer); final byte[] keyBytes = readBytes(buffer, keyLength); - + final String key = new String(keyBytes, StandardCharsets.UTF_8); final int valueLength = ByteUtils.readVarint(buffer); diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemorySessionStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemorySessionStore.java index 9d3936d0eb0b6..eb165893b8a59 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemorySessionStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemorySessionStore.java @@ -73,7 +73,7 @@ public class InMemorySessionStore implements SessionStore { "Note that the built-in numerical serdes do not follow this for negative numbers"; private final ConcurrentNavigableMap>> endTimeMap = new ConcurrentSkipListMap<>(); - private final Set openIterators = ConcurrentHashMap.newKeySet(); + private final Set openIterators = ConcurrentHashMap.newKeySet(); private volatile boolean open = false; diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemoryTimeOrderedKeyValueChangeBuffer.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemoryTimeOrderedKeyValueChangeBuffer.java index 04e6911d1f7bb..5314ba2664d74 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemoryTimeOrderedKeyValueChangeBuffer.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/InMemoryTimeOrderedKeyValueChangeBuffer.java @@ -196,6 +196,7 @@ public void setSerdesIfNull(final SerdeGetter getter) { keySerde = keySerde == null ? (Serde) getter.keySerde() : keySerde; valueSerde = valueSerde == null ? FullChangeSerde.wrap((Serde) getter.valueSerde()) : valueSerde; } + @Override public void init(final StateStoreContext stateStoreContext, final StateStore root) { this.context = ProcessorContextUtils.asInternalProcessorContext(stateStoreContext); diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/KeyValueTimestampedHeaderStoreToKeyValueTimestampStoreAdapter.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/KeyValueTimestampedHeaderStoreToKeyValueTimestampStoreAdapter.java index a85f96877ace6..94e3f5e244a5b 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/KeyValueTimestampedHeaderStoreToKeyValueTimestampStoreAdapter.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/KeyValueTimestampedHeaderStoreToKeyValueTimestampStoreAdapter.java @@ -142,7 +142,7 @@ public void putAll(final List>> entries) { keyValuePair.key, ValueAndTimestamp.make(keyValuePair.value.value(), keyValuePair.value.timestamp())) ) - .collect(Collectors.toList()) + .collect(Collectors.toList()) ); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/MemoryNavigableLRUCache.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/MemoryNavigableLRUCache.java index 0406f217aecae..26109575afc12 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/MemoryNavigableLRUCache.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/MemoryNavigableLRUCache.java @@ -101,12 +101,12 @@ public , P> KeyValueIterator prefixScan( } @Override - public KeyValueIterator all() { + public KeyValueIterator all() { return range(null, null); } @Override - public KeyValueIterator reverseAll() { + public KeyValueIterator reverseAll() { return reverseRange(null, null); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java index 0fa2c50b88fb5..44e649089f230 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java @@ -308,7 +308,7 @@ private QueryResult runRangeQuery(final Query query, } @SuppressWarnings("unchecked") - private QueryResult runKeyQuery(final Query query, + private QueryResult runKeyQuery(final Query query, final PositionBound positionBound, final QueryConfig config) { final QueryResult result; @@ -465,7 +465,7 @@ private List> innerEntries(final List> fr protected void maybeRecordE2ELatency() { if (e2eLatencySensor.shouldRecord() && internalContext != null) { final long currentTime = time.milliseconds(); - final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); + final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); e2eLatencySensor.record(e2eLatency, currentTime); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredSessionStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredSessionStore.java index 38e0664914498..23655954e6302 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredSessionStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredSessionStore.java @@ -135,13 +135,13 @@ private void registerMetrics() { (config, now) -> numOpenIterators.sum()); StateStoreMetrics.addOldestOpenIteratorGauge(taskId.toString(), metricsScope, name(), streamsMetrics, (config, now) -> { - try { - final Iterator openIteratorsIterator = openIterators.iterator(); - return openIteratorsIterator.hasNext() ? openIteratorsIterator.next().startTimestamp() : 0L; - } catch (final NoSuchElementException e) { - return 0L; + try { + final Iterator openIteratorsIterator = openIterators.iterator(); + return openIteratorsIterator.hasNext() ? openIteratorsIterator.next().startTimestamp() : 0L; + } catch (final NoSuchElementException e) { + return 0L; + } } - } ); if (!persistent()) { StateStoreMetrics.addNumKeysGauge(taskId.toString(), metricsScope, name(), streamsMetrics, @@ -550,7 +550,7 @@ void maybeRecordE2ELatency() { // In that case, we _can't_ get the current timestamp, so we don't record anything. if (e2eLatencySensor.shouldRecord() && internalContext != null) { final long currentTime = time.milliseconds(); - final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); + final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); e2eLatencySensor.record(e2eLatency, currentTime); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStore.java index 72caa56d88e35..be79667228550 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStore.java @@ -55,7 +55,7 @@ * @param */ public class MeteredTimestampedKeyValueStore - extends MeteredKeyValueStore> + extends MeteredKeyValueStore> implements TimestampedKeyValueStore { MeteredTimestampedKeyValueStore( @@ -126,6 +126,7 @@ public boolean putIfDifferentValues( static class RawAndDeserializedValue { final byte[] rawValue; final ValueAndTimestamp value; + RawAndDeserializedValue(final byte[] rawValue, final ValueAndTimestamp value) { this.rawValue = rawValue; this.value = value; @@ -255,7 +256,7 @@ private QueryResult runKeyQuery( } @SuppressWarnings("unchecked") - private QueryResult runRangeQuery( + private QueryResult runRangeQuery( final Query query, final PositionBound positionBound, final QueryConfig config @@ -343,6 +344,7 @@ public KeyValue next() { valueAndTimestampDeserializer.apply(keyValue.value) ); } + @Override public void close() { try { diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredWindowStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredWindowStore.java index 44e7d1b4510bc..4381a5e30af07 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredWindowStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredWindowStore.java @@ -558,7 +558,7 @@ protected void maybeRecordE2ELatency() { // In that case, we _can't_ get the current timestamp, so we don't record anything. if (e2eLatencySensor.shouldRecord() && internalContext != null) { final long currentTime = time.milliseconds(); - final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); + final long e2eLatency = currentTime - internalContext.recordContext().timestamp(); e2eLatencySensor.record(e2eLatency, currentTime); } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java index 5581a03648312..8dd17f8d745a0 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java @@ -236,7 +236,7 @@ public static long hash64(short data) { long hash = DEFAULT_SEED; long k1 = 0; k1 ^= ((long) data & 0xff) << 8; - k1 ^= ((long)((data & 0xFF00) >> 8) & 0xff); + k1 ^= ((long) ((data & 0xFF00) >> 8) & 0xff); k1 *= C1; k1 = Long.rotateLeft(k1, R1); k1 *= C2; diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/OrderedBytes.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/OrderedBytes.java index 561f24c407a44..feba11ee65140 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/OrderedBytes.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/OrderedBytes.java @@ -24,6 +24,7 @@ class OrderedBytes { private static final int MIN_KEY_LENGTH = 1; + /** * Returns the upper byte range for a key with a given fixed size maximum suffix * diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.java index e86127d679b20..91348b0f1bc01 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.java @@ -188,7 +188,7 @@ public Options setWriteBufferSize(final long writeBufferSize) { } @Override - public long writeBufferSize() { + public long writeBufferSize() { return columnFamilyOptions.writeBufferSize(); } @@ -1653,7 +1653,7 @@ public Options setMemtableWholeKeyFiltering(final boolean memtableWholeKeyFilter public boolean memtableWholeKeyFiltering() { return columnFamilyOptions.memtableWholeKeyFiltering(); } - + @Override public Options setExperimentalMempurgeThreshold(final double experimentalMempurgeThreshold) { columnFamilyOptions.setExperimentalMempurgeThreshold(experimentalMempurgeThreshold); diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java index b4dcf371a2db4..e94de18fd230b 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java @@ -263,7 +263,7 @@ void openDB(final Map configs, final File stateDir) { } catch (final ProcessorStateException e) { final String message = "State store " + name + " didn't find a valid state, since under EOS it has the risk of getting uncommitted data in stores"; throw new TaskCorruptedException(Set.of(taskId), new ProcessorStateException(message, e)); - } catch (final StreamsException fatal) { + } catch (final StreamsException fatal) { final String fatalMessage = "Fatal error while opening store " + name; throw new ProcessorStateException(fatalMessage, fatal); } catch (final RocksDBException fatal) { @@ -903,14 +903,23 @@ private void closeOpenIterators() { interface DBAccessor { byte[] get(final ColumnFamilyHandle columnFamily, final byte[] key) throws RocksDBException; + byte[] get(final ColumnFamilyHandle columnFamily, final ReadOptions readOptions, final byte[] key) throws RocksDBException; + RocksIterator newIterator(final ColumnFamilyHandle columnFamily); + void put(final ColumnFamilyHandle columnFamily, final byte[] key, final byte[] value) throws RocksDBException; + void delete(final ColumnFamilyHandle columnFamily, final byte[] key) throws RocksDBException; + void deleteRange(final ColumnFamilyHandle columnFamily, final byte[] from, final byte[] to) throws RocksDBException; + long approximateNumEntries(final ColumnFamilyHandle columnFamily) throws RocksDBException; + void flush(final ColumnFamilyHandle... columnFamilies) throws RocksDBException; + void reset(); + void close(); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStoreSupplier.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStoreSupplier.java index fb8655b69ace1..042902c7f599c 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStoreSupplier.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStoreSupplier.java @@ -18,7 +18,7 @@ public class RocksDBTimeOrderedKeyValueBytesStoreSupplier { private final String name; - + public RocksDBTimeOrderedKeyValueBytesStoreSupplier(final String name) { this.name = name; } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreSupplier.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreSupplier.java index eca24e0f737bc..c02684c93a83e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreSupplier.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreSupplier.java @@ -192,12 +192,12 @@ public long retentionPeriod() { @Override public String toString() { return "RocksDbIndexedTimeOrderedWindowBytesStoreSupplier{" + - "name='" + name + '\'' + - ", retentionPeriod=" + retentionPeriod + - ", segmentInterval=" + segmentInterval + - ", windowSize=" + windowSize + - ", retainDuplicates=" + retainDuplicates + - ", windowStoreType=" + windowStoreType + - '}'; + "name='" + name + '\'' + + ", retentionPeriod=" + retentionPeriod + + ", segmentInterval=" + segmentInterval + + ", windowSize=" + windowSize + + ", retainDuplicates=" + retainDuplicates + + ", windowStoreType=" + windowStoreType + + '}'; } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier.java index e0bc7704e7627..7703a46f0806f 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier.java @@ -89,12 +89,12 @@ private RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier( @Override public String toString() { return "RocksDbIndexedTimeOrderedWindowBytesStoreWithHeadersSupplier{" + - "name='" + name + '\'' + - ", retentionPeriod=" + retentionPeriod + - ", segmentInterval=" + segmentInterval + - ", windowSize=" + windowSize + - ", retainDuplicates=" + retainDuplicates + - ", windowStoreType=" + windowStoreType + - '}'; + "name='" + name + '\'' + + ", retentionPeriod=" + retentionPeriod + + ", segmentInterval=" + segmentInterval + + ", windowSize=" + windowSize + + ", retainDuplicates=" + retainDuplicates + + ", windowStoreType=" + windowStoreType + + '}'; } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbWindowBytesStoreSupplier.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbWindowBytesStoreSupplier.java index 6a5ec29145b80..4cbc5092a6e44 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbWindowBytesStoreSupplier.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDbWindowBytesStoreSupplier.java @@ -111,12 +111,12 @@ public long retentionPeriod() { @Override public String toString() { return "RocksDbWindowBytesStoreSupplier{" + - "name='" + name + '\'' + - ", retentionPeriod=" + retentionPeriod + - ", segmentInterval=" + segmentInterval + - ", windowSize=" + windowSize + - ", retainDuplicates=" + retainDuplicates + - ", windowStoreType=" + windowStoreType + - '}'; + "name='" + name + '\'' + + ", retentionPeriod=" + retentionPeriod + + ", segmentInterval=" + segmentInterval + + ", windowSize=" + windowSize + + ", retainDuplicates=" + retainDuplicates + + ", windowStoreType=" + windowStoreType + + '}'; } } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java index 321b9bf60a2cc..c8f68347dec36 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java @@ -103,8 +103,8 @@ private static T validateAndCastStores(final StateStore store, if (!store.isOpen()) { throw new InvalidStateStoreException( "Cannot get state store " + storeName + " for task " + taskId + - " because the store is not open. " + - "The state store may have migrated to another instance."); + " because the store is not open. " + + "The state store may have migrated to another instance."); } if (store instanceof TimestampedKeyValueStoreWithHeaders) { if (queryableStoreType instanceof QueryableStoreTypes.KeyValueStoreType) { diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingWindowStore.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingWindowStore.java index 4e0fd29f09d1a..b32f574dfc354 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingWindowStore.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingWindowStore.java @@ -122,7 +122,7 @@ public void init(final StateStoreContext stateStoreContext, final StateStore roo stateStoreContext.applicationId() ); internalContext = asInternalProcessorContext(stateStoreContext); - final String topic = ProcessorStateManager.storeChangelogTopic(prefix, name(), stateStoreContext.taskId().topologyName()); + final String topic = ProcessorStateManager.storeChangelogTopic(prefix, name(), stateStoreContext.taskId().topologyName()); bytesSerdes = new StateSerdes<>( topic, diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/TimestampedKeyAndJoinSide.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/TimestampedKeyAndJoinSide.java index 41f83d85eb83a..a8f4cbec6f7de 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/TimestampedKeyAndJoinSide.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/TimestampedKeyAndJoinSide.java @@ -51,6 +51,7 @@ private TimestampedKeyAndJoinSide(final boolean leftSide, final K key, final lon public static TimestampedKeyAndJoinSide makeLeft(final K key, final long timestamp) { return new TimestampedKeyAndJoinSide<>(true, key, timestamp); } + /** * Create a new {@link TimestampedKeyAndJoinSide} instance for the right join side if the provide {@code key} is not {@code null}. * @@ -61,6 +62,7 @@ public static TimestampedKeyAndJoinSide makeLeft(final K key, final long public static TimestampedKeyAndJoinSide makeRight(final K key, final long timestamp) { return new TimestampedKeyAndJoinSide<>(false, key, timestamp); } + public boolean isLeftSide() { return leftSide; } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/Utils.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/Utils.java index 6b9d382758775..14c592ad16b15 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/Utils.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/Utils.java @@ -64,7 +64,7 @@ public static byte[] rawAggregation(final byte[] aggregationWithHeaders) { // If the header is empty, then copy the value bytes directly if (hasEmptyHeaders(aggregationWithHeaders)) { // Strip header size's varint byte, and empty headers consume no bytes - final byte[] aggregation = new byte[aggregationWithHeaders.length - 1]; + final byte[] aggregation = new byte[aggregationWithHeaders.length - 1]; System.arraycopy(aggregationWithHeaders, 1, aggregation, 0, aggregation.length); return aggregation; } @@ -72,7 +72,7 @@ public static byte[] rawAggregation(final byte[] aggregationWithHeaders) { final ByteBuffer buffer = ByteBuffer.wrap(aggregationWithHeaders); // Skip the headers bytes without deserializing or copying final int headersSize = ByteUtils.readVarint(buffer); - buffer.position(buffer.position() + headersSize); + buffer.position(buffer.position() + headersSize); return readBytes(buffer, buffer.remaining()); } @@ -92,7 +92,7 @@ public static byte[] rawPlainValue(final byte[] rawValueTimestampHeaders) { // If the header is empty, then copy the value bytes directly if (hasEmptyHeaders(rawValueTimestampHeaders)) { // Strip header size (varint 1 byte), empty headers (no bytes), and timestamp - final byte[] rawValue = new byte[rawValueTimestampHeaders.length - 1 - StateSerdes.TIMESTAMP_SIZE]; + final byte[] rawValue = new byte[rawValueTimestampHeaders.length - 1 - StateSerdes.TIMESTAMP_SIZE]; System.arraycopy(rawValueTimestampHeaders, 1 + StateSerdes.TIMESTAMP_SIZE, rawValue, 0, rawValue.length); return rawValue; } @@ -123,7 +123,7 @@ public static byte[] rawTimestampedValue(final byte[] rawValueTimestampHeaders) // If the header is empty, then copy the value and timestamp bytes directly if (hasEmptyHeaders(rawValueTimestampHeaders)) { // Strip header size (varint 1 byte), empty headers (no bytes) - final byte[] rawValueAndTimestamp = new byte[rawValueTimestampHeaders.length - 1]; + final byte[] rawValueAndTimestamp = new byte[rawValueTimestampHeaders.length - 1]; System.arraycopy(rawValueTimestampHeaders, 1, rawValueAndTimestamp, 0, rawValueAndTimestamp.length); return rawValueAndTimestamp; } @@ -133,8 +133,8 @@ public static byte[] rawTimestampedValue(final byte[] rawValueTimestampHeaders) // Skip headers, keep timestamp + value if (headersSize < 0 || headersSize > buffer.remaining() || buffer.remaining() - headersSize < StateSerdes.TIMESTAMP_SIZE) { throw new SerializationException( - "Invalid format: headers size " + headersSize + - ", timestamp expected size " + StateSerdes.TIMESTAMP_SIZE + + "Invalid format: headers size " + headersSize + + ", timestamp expected size " + StateSerdes.TIMESTAMP_SIZE + ", but buffer size " + buffer.remaining() ); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/WindowToTimestampedWindowByteStoreAdapter.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/WindowToTimestampedWindowByteStoreAdapter.java index 5a7f05c1b2b5c..4bb23245c031e 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/WindowToTimestampedWindowByteStoreAdapter.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/WindowToTimestampedWindowByteStoreAdapter.java @@ -107,7 +107,7 @@ public KeyValueIterator, byte[]> backwardFetch(final Bytes keyFr public KeyValueIterator, byte[]> fetch(final Bytes keyFrom, final Bytes keyTo, final Instant timeFrom, - final Instant timeTo) throws IllegalArgumentException { + final Instant timeTo) throws IllegalArgumentException { return new KeyValueToTimestampedKeyValueIteratorAdapter<>(store.fetch(keyFrom, keyTo, timeFrom, timeTo)); } diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetrics.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetrics.java index 0b276715dab6a..d5cc82dd99101 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetrics.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetrics.java @@ -173,9 +173,11 @@ public RocksDBMetricContext(final String taskName, public String taskName() { return taskName; } + public String metricsScope() { return metricsScope; } + public String storeName() { return storeName; } diff --git a/streams/src/test/java/org/apache/kafka/streams/AutoOffsetResetTest.java b/streams/src/test/java/org/apache/kafka/streams/AutoOffsetResetTest.java index 0ef63c0f85720..7bc56991981ae 100644 --- a/streams/src/test/java/org/apache/kafka/streams/AutoOffsetResetTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/AutoOffsetResetTest.java @@ -68,7 +68,7 @@ void twoInstancesCreatedAtTheSameTimeWithSameOptionsShouldBeEqual() { final AutoOffsetReset latest1 = AutoOffsetReset.latest(); final AutoOffsetReset latest2 = AutoOffsetReset.latest(); final AutoOffsetReset earliest1 = AutoOffsetReset.earliest(); - final AutoOffsetReset earliest2 = AutoOffsetReset.earliest(); + final AutoOffsetReset earliest2 = AutoOffsetReset.earliest(); final AutoOffsetReset custom1 = AutoOffsetReset.byDuration(Duration.ofSeconds(5)); final AutoOffsetReset custom2 = AutoOffsetReset.byDuration(Duration.ofSeconds(5)); final AutoOffsetReset customDifferent = AutoOffsetReset.byDuration(Duration.ofSeconds(10)); diff --git a/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java b/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java index 11607240eb211..999f637eb6780 100644 --- a/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java @@ -810,7 +810,7 @@ public void shouldNotRemoveThreadWhenNotRunning() { prepareStreamThread(streamThreadOne, 1); props.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, 1); try (final KafkaStreams streams = - new KafkaStreams(getBuilderWithSource().build(), props, supplier, time)) { + new KafkaStreams(getBuilderWithSource().build(), props, supplier, time)) { assertThat(streams.removeStreamThread(), equalTo(Optional.empty())); assertThat(streams.threads.size(), equalTo(1)); } @@ -877,6 +877,7 @@ public void shouldThrowExceptionSettingStreamsUncaughtExceptionHandlerNotInCreat } } + @Test public void shouldThrowNullPointerExceptionSettingStreamsUncaughtExceptionHandlerIfNull() { prepareStreams(); @@ -1527,7 +1528,7 @@ public void shouldThrowTopologyExceptionOnEmptyTopology() { assertThat( e.getMessage(), equalTo("Invalid topology: Topology has no stream threads and no global threads, " + - "must subscribe to at least one source topic or global table.")); + "must subscribe to at least one source topic or global table.")); } } @@ -1729,7 +1730,7 @@ public void shouldReturnProducerAndConsumerInstanceIds() { final ClientInstanceIds clientInstanceIds = streams.clientInstanceIds(Duration.ZERO); assertThat(clientInstanceIds.consumerInstanceIds().size(), equalTo(1)); assertThat(clientInstanceIds.consumerInstanceIds().get("main-consumer"), equalTo(mainConsumerInstanceId)); - assertThat(clientInstanceIds.producerInstanceIds().size(), equalTo(1)); + assertThat(clientInstanceIds.producerInstanceIds().size(), equalTo(1)); assertThat(clientInstanceIds.producerInstanceIds().get("some-thread-producer"), equalTo(producerInstanceId)); assertThat(clientInstanceIds.adminInstanceId(), equalTo(adminInstanceId)); } diff --git a/streams/src/test/java/org/apache/kafka/streams/StreamsBuilderTest.java b/streams/src/test/java/org/apache/kafka/streams/StreamsBuilderTest.java index b59334bab11f8..5eaa349ae3843 100644 --- a/streams/src/test/java/org/apache/kafka/streams/StreamsBuilderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/StreamsBuilderTest.java @@ -2688,7 +2688,7 @@ void shouldThrowWhenKStreamKTableJoinWithoutRepartitionNameAndMaterializedName() assertTrue(e.getMessage().contains("Following repartition topic(s) has not been named: KSTREAM-KEY-SELECT-0000000004-repartition")); } - private StreamsBuilder buildKStreamKTableJoinTopology(final Joined joined, + private StreamsBuilder buildKStreamKTableJoinTopology(final Joined joined, final Materialized> materialized) { final Map props = dummyStreamsConfigMap(); @@ -2747,7 +2747,7 @@ private StreamsBuilder buildKStreamVersionedKTableJoinTopology(final Joined value1, joined.withGracePeriod(Duration.ofHours(1)) ) - .to("test-topic"); + .to("test-topic"); return builder; } diff --git a/streams/src/test/java/org/apache/kafka/streams/StreamsConfigTest.java b/streams/src/test/java/org/apache/kafka/streams/StreamsConfigTest.java index 34db1ccc25302..e8c44edd0a08e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/StreamsConfigTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/StreamsConfigTest.java @@ -1674,7 +1674,7 @@ public void shouldThrowConfigExceptionWhenAdminClientAndMainConsumerMetricsDisab public void shouldGetDefaultValueProcessingExceptionHandler() { final StreamsConfig streamsConfig = new StreamsConfig(props); - assertEquals("org.apache.kafka.streams.errors.LogAndFailProcessingExceptionHandler", streamsConfig.processingExceptionHandler().getClass().getName()); + assertEquals("org.apache.kafka.streams.errors.LogAndFailProcessingExceptionHandler", streamsConfig.processingExceptionHandler().getClass().getName()); } @Test @@ -1682,7 +1682,7 @@ public void shouldOverrideDefaultProcessingExceptionHandler() { props.put(StreamsConfig.PROCESSING_EXCEPTION_HANDLER_CLASS_CONFIG, "org.apache.kafka.streams.errors.LogAndContinueProcessingExceptionHandler"); final StreamsConfig streamsConfig = new StreamsConfig(props); - assertEquals("org.apache.kafka.streams.errors.LogAndContinueProcessingExceptionHandler", streamsConfig.processingExceptionHandler().getClass().getName()); + assertEquals("org.apache.kafka.streams.errors.LogAndContinueProcessingExceptionHandler", streamsConfig.processingExceptionHandler().getClass().getName()); } @Test @@ -1880,7 +1880,7 @@ public void shouldNotLogWarningWhenProcessingExceptionHandlerIsEnabledOnGlobalTh static class MisconfiguredSerde implements Serde { @Override - public void configure(final Map configs, final boolean isKey) { + public void configure(final Map configs, final boolean isKey) { throw new RuntimeException("boom"); } diff --git a/streams/src/test/java/org/apache/kafka/streams/TopologyTest.java b/streams/src/test/java/org/apache/kafka/streams/TopologyTest.java index 7d172c3c89a1b..23fa51b4bdf47 100644 --- a/streams/src/test/java/org/apache/kafka/streams/TopologyTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/TopologyTest.java @@ -736,7 +736,7 @@ public void shouldDescribeMultipleGlobalStoreTopology() { @SuppressWarnings("deprecation") @Test public void streamStreamJoinTopologyWithDefaultStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -779,7 +779,7 @@ public void streamStreamJoinTopologyWithDefaultStoresNames() { @SuppressWarnings("deprecation") @Test public void streamStreamJoinTopologyWithCustomStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -823,7 +823,7 @@ public void streamStreamJoinTopologyWithCustomStoresNames() { @SuppressWarnings("deprecation") @Test public void streamStreamJoinTopologyWithCustomStoresSuppliers() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -877,7 +877,7 @@ public void streamStreamJoinTopologyWithCustomStoresSuppliers() { @Test public void streamStreamLeftJoinTopologyWithDefaultStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -919,7 +919,7 @@ public void streamStreamLeftJoinTopologyWithDefaultStoresNames() { @Test public void streamStreamLeftJoinTopologyWithCustomStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -962,7 +962,7 @@ public void streamStreamLeftJoinTopologyWithCustomStoresNames() { @Test public void streamStreamLeftJoinTopologyWithCustomStoresSuppliers() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -1016,7 +1016,7 @@ public void streamStreamLeftJoinTopologyWithCustomStoresSuppliers() { @Test public void streamStreamOuterJoinTopologyWithDefaultStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -1058,7 +1058,7 @@ public void streamStreamOuterJoinTopologyWithDefaultStoresNames() { @Test public void streamStreamOuterJoinTopologyWithCustomStoresNames() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -1101,7 +1101,7 @@ public void streamStreamOuterJoinTopologyWithCustomStoresNames() { @Test public void streamStreamOuterJoinTopologyWithCustomStoresSuppliers() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final KStream stream1; final KStream stream2; @@ -1155,7 +1155,7 @@ public void streamStreamOuterJoinTopologyWithCustomStoresSuppliers() { @Test public void topologyWithDynamicRoutingShouldDescribeExtractorClass() { - final StreamsBuilder builder = new StreamsBuilder(); + final StreamsBuilder builder = new StreamsBuilder(); final TopicNameExtractor topicNameExtractor = new TopicNameExtractor<>() { @Override diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/SlidingWindowsTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/SlidingWindowsTest.java index b0d8e2ed52438..9b16a730f6a6f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/SlidingWindowsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/SlidingWindowsTest.java @@ -37,7 +37,7 @@ public void shouldSetTimeDifference() { @Test public void timeDifferenceMustNotBeNegative() { - assertThrows(IllegalArgumentException.class, () -> SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(-1), ofMillis(5))); + assertThrows(IllegalArgumentException.class, () -> SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(-1), ofMillis(5))); } @Test @@ -47,7 +47,7 @@ public void shouldSetGracePeriod() { @Test public void gracePeriodMustNotBeNegative() { - assertThrows(IllegalArgumentException.class, () -> SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(-1))); + assertThrows(IllegalArgumentException.class, () -> SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(-1))); } @Test diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/WindowTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/WindowTest.java index 20950e26e726b..06c8e62714e45 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/WindowTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/WindowTest.java @@ -35,7 +35,7 @@ public boolean overlap(final Window other) { } } - static class TestWindow2 extends Window { + static class TestWindow2 extends Window { TestWindow2(final long startMs, final long endMs) { super(startMs, endMs); } diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/CogroupedKStreamImplTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/CogroupedKStreamImplTest.java index c5b374bd96ce4..b98501365b123 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/CogroupedKStreamImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/CogroupedKStreamImplTest.java @@ -151,7 +151,7 @@ public void shouldNotHaveNullMaterializedOnAggregate(final boolean withHeaders) @ValueSource(booleans = {false, true}) public void shouldNotHaveNullNamedOnAggregateWithMateriazlied(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> cogroupedStream.aggregate(STRING_INITIALIZER, null, Materialized.as("store"))); + assertThrows(NullPointerException.class, () -> cogroupedStream.aggregate(STRING_INITIALIZER, null, Materialized.as("store"))); } @ParameterizedTest diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilderTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilderTest.java index 0d12532a8003f..88558f32ffbad 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/InternalStreamsBuilderTest.java @@ -125,7 +125,7 @@ public void shouldHaveCorrectSourceTopicsForTableFromMergedStream() { final KStream source3 = builder.stream(Collections.singleton(topic3), consumed); final KStream processedSource1 = source1.mapValues(v -> v) - .filter((k, v) -> true); + .filter((k, v) -> true); final KStream processedSource2 = source2.filter((k, v) -> true); final KStream merged = processedSource1.merge(processedSource2).merge(source3); @@ -150,7 +150,7 @@ public void shouldNotMaterializeSourceKTableIfNotRequired() { assertEquals(0, topology.storeToChangelogTopic().size()); assertNull(table1.queryableStoreName()); } - + @Test public void shouldBuildGlobalTableWithNonQueryableStoreName() { final MaterializedInternal> materializedInternal = @@ -1358,7 +1358,7 @@ private GraphNode getNodeByType( if (clazz.isAssignableFrom(currentNode.getClass())) { return currentNode; } - for (final GraphNode child: currentNode.children()) { + for (final GraphNode child : currentNode.children()) { visited.add(child); final GraphNode result = getNodeByType(child, clazz, visited); if (result != null) { @@ -1377,7 +1377,7 @@ private void getNodesByType( if (clazz.isAssignableFrom(currentNode.getClass())) { result.add(currentNode); } - for (final GraphNode child: currentNode.children()) { + for (final GraphNode child : currentNode.children()) { if (!visited.contains(child)) { visited.add(child); getNodesByType(child, clazz, visited, result); @@ -1394,7 +1394,7 @@ private void countJoinWindowNodes( count.incrementAndGet(); } - for (final GraphNode child: currentNode.children()) { + for (final GraphNode child : currentNode.children()) { if (!visited.contains(child)) { visited.add(child); countJoinWindowNodes(count, child, visited); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KGroupedStreamImplTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KGroupedStreamImplTest.java index 39ec16cf47a85..9eb235a07fd61 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KGroupedStreamImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KGroupedStreamImplTest.java @@ -80,51 +80,51 @@ public void before() { @Test public void shouldNotHaveNullAggregatorOnCogroup() { - assertThrows(NullPointerException.class, () -> groupedStream.cogroup(null)); + assertThrows(NullPointerException.class, () -> groupedStream.cogroup(null)); } @Test public void shouldNotHaveNullReducerOnReduce() { - assertThrows(NullPointerException.class, () -> groupedStream.reduce(null)); + assertThrows(NullPointerException.class, () -> groupedStream.reduce(null)); } @Test public void shouldNotHaveInvalidStoreNameOnReduce() { - assertThrows(TopologyException.class, () -> groupedStream.reduce(MockReducer.STRING_ADDER, Materialized.as(INVALID_STORE_NAME))); + assertThrows(TopologyException.class, () -> groupedStream.reduce(MockReducer.STRING_ADDER, Materialized.as(INVALID_STORE_NAME))); } @Test public void shouldNotHaveNullReducerWithWindowedReduce() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(TimeWindows.ofSizeWithNoGrace(ofMillis(10))) .reduce(null, Materialized.as("store"))); } @Test public void shouldNotHaveNullWindowsWithWindowedReduce() { - assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((Windows) null)); + assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((Windows) null)); } @Test public void shouldNotHaveInvalidStoreNameWithWindowedReduce() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(TimeWindows.ofSizeWithNoGrace(ofMillis(10))) .reduce(MockReducer.STRING_ADDER, Materialized.as(INVALID_STORE_NAME))); } @Test public void shouldNotHaveNullInitializerOnAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream.aggregate(null, MockAggregator.TOSTRING_ADDER, Materialized.as("store"))); + assertThrows(NullPointerException.class, () -> groupedStream.aggregate(null, MockAggregator.TOSTRING_ADDER, Materialized.as("store"))); } @Test public void shouldNotHaveNullAdderOnAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream.aggregate(MockInitializer.STRING_INIT, null, Materialized.as("store"))); + assertThrows(NullPointerException.class, () -> groupedStream.aggregate(MockInitializer.STRING_INIT, null, Materialized.as("store"))); } @Test public void shouldNotHaveInvalidStoreNameOnAggregate() { - assertThrows(TopologyException.class, () -> groupedStream.aggregate( + assertThrows(TopologyException.class, () -> groupedStream.aggregate( MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, Materialized.as(INVALID_STORE_NAME))); @@ -132,66 +132,66 @@ public void shouldNotHaveInvalidStoreNameOnAggregate() { @Test public void shouldNotHaveNullInitializerOnWindowedAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(TimeWindows.ofSizeWithNoGrace(ofMillis(10))) .aggregate(null, MockAggregator.TOSTRING_ADDER, Materialized.as("store"))); } @Test public void shouldNotHaveNullAdderOnWindowedAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(TimeWindows.ofSizeWithNoGrace(ofMillis(10))) .aggregate(MockInitializer.STRING_INIT, null, Materialized.as("store"))); } @Test public void shouldNotHaveNullWindowsOnWindowedAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((Windows) null)); + assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((Windows) null)); } @Test public void shouldNotHaveInvalidStoreNameOnWindowedAggregate() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(TimeWindows.ofSizeWithNoGrace(ofMillis(10))) .aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, Materialized.as(INVALID_STORE_NAME))); } @Test public void shouldNotHaveNullReducerWithSlidingWindowedReduce() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(100))) .reduce(null, Materialized.as("store"))); } @Test public void shouldNotHaveNullWindowsWithSlidingWindowedReduce() { - assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SlidingWindows) null)); + assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SlidingWindows) null)); } @Test public void shouldNotHaveInvalidStoreNameWithSlidingWindowedReduce() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(100))) .reduce(MockReducer.STRING_ADDER, Materialized.as(INVALID_STORE_NAME))); } @Test public void shouldNotHaveNullInitializerOnSlidingWindowedAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(100))) .aggregate(null, MockAggregator.TOSTRING_ADDER, Materialized.as("store"))); } @Test public void shouldNotHaveNullAdderOnSlidingWindowedAggregate() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(100))) .aggregate(MockInitializer.STRING_INIT, null, Materialized.as("store"))); } @Test public void shouldNotHaveInvalidStoreNameOnSlidingWindowedAggregate() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(SlidingWindows.ofTimeDifferenceAndGrace(ofMillis(10), ofMillis(100))) .aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, Materialized.as(INVALID_STORE_NAME))); } @@ -500,19 +500,19 @@ public void shouldReduceSessionWindowsWithInternalStoreName() { @Test public void shouldNotAcceptNullReducerWhenReducingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(30))) .reduce(null, Materialized.as("store"))); } @Test public void shouldNotAcceptNullSessionWindowsReducingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SessionWindows) null)); + assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SessionWindows) null)); } @Test public void shouldNotAcceptInvalidStoreNameWhenReducingSessionWindows() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(30))) .reduce(MockReducer.STRING_ADDER, Materialized.as(INVALID_STORE_NAME)) ); @@ -520,7 +520,7 @@ public void shouldNotAcceptInvalidStoreNameWhenReducingSessionWindows() { @Test public void shouldNotAcceptNullStateStoreSupplierWhenReducingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(30))) .reduce(null, Materialized.>as((String) null)) ); @@ -528,7 +528,7 @@ public void shouldNotAcceptNullStateStoreSupplierWhenReducingSessionWindows() { @Test public void shouldNotAcceptNullInitializerWhenAggregatingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(30))) .aggregate(null, MockAggregator.TOSTRING_ADDER, (aggKey, aggOne, aggTwo) -> null, Materialized.as("storeName")) ); @@ -544,7 +544,7 @@ public void shouldNotAcceptNullAggregatorWhenAggregatingSessionWindows() { @Test public void shouldNotAcceptNullSessionMergerWhenAggregatingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream + assertThrows(NullPointerException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(30))) .aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, null, Materialized.as("storeName")) ); @@ -552,7 +552,7 @@ public void shouldNotAcceptNullSessionMergerWhenAggregatingSessionWindows() { @Test public void shouldNotAcceptNullSessionWindowsWhenAggregatingSessionWindows() { - assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SessionWindows) null)); + assertThrows(NullPointerException.class, () -> groupedStream.windowedBy((SessionWindows) null)); } @Test @@ -568,7 +568,7 @@ public void shouldAcceptNullStoreNameWhenAggregatingSessionWindows() { @Test public void shouldNotAcceptInvalidStoreNameWhenAggregatingSessionWindows() { - assertThrows(TopologyException.class, () -> groupedStream + assertThrows(TopologyException.class, () -> groupedStream .windowedBy(SessionWindows.ofInactivityGapWithNoGrace(ofMillis(10))) .aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, (aggKey, aggOne, aggTwo) -> null, Materialized.as(INVALID_STORE_NAME)) ); @@ -576,17 +576,17 @@ public void shouldNotAcceptInvalidStoreNameWhenAggregatingSessionWindows() { @Test public void shouldThrowNullPointerOnReduceWhenMaterializedIsNull() { - assertThrows(NullPointerException.class, () -> groupedStream.reduce(MockReducer.STRING_ADDER, null)); + assertThrows(NullPointerException.class, () -> groupedStream.reduce(MockReducer.STRING_ADDER, null)); } @Test public void shouldThrowNullPointerOnAggregateWhenMaterializedIsNull() { - assertThrows(NullPointerException.class, () -> groupedStream.aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, null)); + assertThrows(NullPointerException.class, () -> groupedStream.aggregate(MockInitializer.STRING_INIT, MockAggregator.TOSTRING_ADDER, null)); } @Test public void shouldThrowNullPointerOnCountWhenMaterializedIsNull() { - assertThrows(NullPointerException.class, () -> groupedStream.count((Materialized>) null)); + assertThrows(NullPointerException.class, () -> groupedStream.count((Materialized>) null)); } @Test diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamImplTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamImplTest.java index 1794a98bd319f..03db73864ff51 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamImplTest.java @@ -1998,14 +1998,14 @@ public void process(final FixedKeyRecord record) { assertThat( topologyDescription, equalTo("Topologies:\n" + - " Sub-topology: 0\n" + - " Source: KSTREAM-SOURCE-0000000000 (topics: [input])\n" + - " --> fkp\n" + - " Processor: fkp (stores: [])\n" + - " --> KSTREAM-SINK-0000000001\n" + - " <-- KSTREAM-SOURCE-0000000000\n" + - " Sink: KSTREAM-SINK-0000000001 (topic: output)\n" + - " <-- fkp\n\n") + " Sub-topology: 0\n" + + " Source: KSTREAM-SOURCE-0000000000 (topics: [input])\n" + + " --> fkp\n" + + " Processor: fkp (stores: [])\n" + + " --> KSTREAM-SINK-0000000001\n" + + " <-- KSTREAM-SOURCE-0000000000\n" + + " Sink: KSTREAM-SINK-0000000001 (topic: output)\n" + + " <-- fkp\n\n") ); try (final TopologyTestDriver driver = new TopologyTestDriver(builder.build(), props)) { @@ -2360,7 +2360,7 @@ public void shouldSupportStreamTableJoinWithKStreamToKTable() { final String outputTopic = "output"; final KStream stream = builder.stream(streamTopic, consumed); - final KTable table = builder.stream(tableTopic, consumed).toTable(); + final KTable table = builder.stream(tableTopic, consumed).toTable(); stream.join(table, MockValueJoiner.TOSTRING_JOINER).to(outputTopic); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamJoinTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamJoinTest.java index 68091871137dd..52cd4fd82bfed 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamJoinTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamJoinTest.java @@ -163,7 +163,7 @@ public void shouldCreateRepartitionTopicsWithUserProvidedName(final boolean with final StreamJoined streamJoined = StreamJoined.with(Serdes.String(), Serdes.String(), Serdes.String()); newStream.join(stream2, (value1, value2) -> value1 + value2, JoinWindows.ofTimeDifferenceWithNoGrace(ofMillis(100)), streamJoined.withName("first-join")).to("out-one"); newStream.join(stream3, (value1, value2) -> value1 + value2, JoinWindows.ofTimeDifferenceWithNoGrace(ofMillis(100)), streamJoined.withName("second-join")).to("out-two"); - final Topology topology = builder.build(props); + final Topology topology = builder.build(props); System.out.println(topology.describe().toString()); assertEquals(expectedTopologyWithUserNamedRepartitionTopics, topology.describe().toString()); } @@ -1977,7 +1977,7 @@ private WindowBytesStoreSupplier buildWindowBytesStoreSupplier(final String name final long retentionPeriod, final long windowSize, final boolean retainDuplicates) { - return Stores.inMemoryWindowStore(name, + return Stores.inMemoryWindowStore(name, Duration.ofMillis(retentionPeriod), Duration.ofMillis(windowSize), retainDuplicates); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamLeftJoinTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamLeftJoinTest.java index ec9dc246170c7..dc0b7dfc403ea 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamLeftJoinTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamLeftJoinTest.java @@ -458,7 +458,7 @@ public void testLeftJoinedRecordsWithZeroAfterAreEmitted(final boolean withHeade final MockApiProcessorSupplier supplier = new MockApiProcessorSupplier<>(); stream1 = builder.stream(topic1, consumed); stream2 = builder.stream(topic2, consumed); - + joined = stream1.leftJoin( stream2, MockValueJoiner.TOSTRING_JOINER, @@ -483,7 +483,7 @@ public void testLeftJoinedRecordsWithZeroAfterAreEmitted(final boolean withHeade final MockApiProcessor processor = supplier.theCapturedProcessor(); processor.init(null); - + // push four items with increasing timestamps to the primary stream; the other window is empty; // this should emit the first three left-joined items; // A3 is not triggered yet @@ -500,7 +500,7 @@ public void testLeftJoinedRecordsWithZeroAfterAreEmitted(final boolean withHeade new KeyValueTimestamp<>(1, "A1+null", 1001L), new KeyValueTimestamp<>(2, "A2+null", 1002L) ); - + // push four items smaller timestamps (out of window) to the secondary stream; // this should produce four joined items // w1 = { 0:A0 (ts: 1000), 1:A1 (ts: 1001), 2:A2 (ts: 1002), 3:A3 (ts: 1003) } diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamOuterJoinTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamOuterJoinTest.java index a8eb3c6130280..1104228014a07 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamOuterJoinTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamOuterJoinTest.java @@ -628,7 +628,7 @@ public void testEmitAllNonJoinedResultsForAsymmetricWindow(final boolean withHea ); } } - + @ParameterizedTest @ValueSource(booleans = {false, true}) public void testOuterJoinWithInMemoryCustomSuppliers(final boolean withHeaders) { diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamSelfJoinTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamSelfJoinTest.java index f609dd514e88d..a8386d8e05198 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamSelfJoinTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamKStreamSelfJoinTest.java @@ -70,7 +70,7 @@ public void shouldMatchInnerJoinWithSelfJoinWithSingleStream(final boolean withH ); innerJoin.process(innerJoinSupplier); - final Topology innerJoinTopology = streamsBuilder.build(); + final Topology innerJoinTopology = streamsBuilder.build(); try (final TopologyTestDriver driver = new TopologyTestDriver(innerJoinTopology)) { final TestInputTopic inputTopic = driver.createInputTopic(topic2, new StringSerializer(), new StringSerializer()); @@ -97,7 +97,7 @@ public void shouldMatchInnerJoinWithSelfJoinWithSingleStream(final boolean withH ); selfJoin.process(selfJoinSupplier); - final Topology selfJoinTopology = streamsBuilder.build(props); + final Topology selfJoinTopology = streamsBuilder.build(props); try (final TopologyTestDriver driver = new TopologyTestDriver(selfJoinTopology, props)) { final TestInputTopic inputTopic = @@ -141,7 +141,7 @@ public void shouldMatchInnerJoinWithSelfJoinWithTwoStreams(final boolean withHea ); innerJoin.process(innerJoinSupplier); - final Topology innerJoinTopology = streamsBuilder.build(); + final Topology innerJoinTopology = streamsBuilder.build(); try (final TopologyTestDriver driver = new TopologyTestDriver(innerJoinTopology)) { final TestInputTopic inputTopic = driver.createInputTopic(topic2, new StringSerializer(), new StringSerializer()); @@ -170,7 +170,7 @@ public void shouldMatchInnerJoinWithSelfJoinWithTwoStreams(final boolean withHea ); selfJoin.process(selfJoinSupplier); - final Topology topology1 = streamsBuilder.build(props); + final Topology topology1 = streamsBuilder.build(props); try (final TopologyTestDriver driver = new TopologyTestDriver(topology1, props)) { final TestInputTopic inputTopic = @@ -213,7 +213,7 @@ public void shouldMatchInnerJoinWithSelfJoinDifferentBeforeAfterWindows(final bo ); innerJoin.process(innerJoinSupplier); - final Topology innerJoinTopology = streamsBuilder.build(); + final Topology innerJoinTopology = streamsBuilder.build(); try (final TopologyTestDriver driver = new TopologyTestDriver(innerJoinTopology)) { final TestInputTopic inputTopic = driver.createInputTopic(topic2, new StringSerializer(), new StringSerializer()); @@ -244,7 +244,7 @@ public void shouldMatchInnerJoinWithSelfJoinDifferentBeforeAfterWindows(final bo StreamJoined.with(Serdes.String(), Serdes.String(), Serdes.String()) ); selfJoin.process(selfJoinSupplier); - final Topology selfJoinTopology = streamsBuilder.build(props); + final Topology selfJoinTopology = streamsBuilder.build(props); try (final TopologyTestDriver driver = new TopologyTestDriver(selfJoinTopology, props)) { final TestInputTopic inputTopic = @@ -290,7 +290,7 @@ public void shouldMatchInnerJoinWithSelfJoinOutOfOrderMessages(final boolean wit ); innerJoin.process(innerJoinSupplier); - final Topology topology2 = streamsBuilder.build(); + final Topology topology2 = streamsBuilder.build(); try (final TopologyTestDriver driver = new TopologyTestDriver(topology2)) { final TestInputTopic inputTopic = driver.createInputTopic(topic2, new StringSerializer(), new StringSerializer()); @@ -324,7 +324,7 @@ public void shouldMatchInnerJoinWithSelfJoinOutOfOrderMessages(final boolean wit ); selfJoin.process(selfJoinSupplier); - final Topology selfJoinTopology = streamsBuilder.build(props); + final Topology selfJoinTopology = streamsBuilder.build(props); try (final TopologyTestDriver driver = new TopologyTestDriver(selfJoinTopology, props)) { final TestInputTopic inputTopic = diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamPrintTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamPrintTest.java index 24a70a505de1a..2ca0594136008 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamPrintTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamPrintTest.java @@ -74,7 +74,7 @@ public void testPrintStreamWithProvidedKeyValueMapper() { "[test-stream]: 2, two", "[test-stream]: 3, three"}; - for (final KeyValue record: inputRecords) { + for (final KeyValue record : inputRecords) { final Record r = new Record<>(record.key, record.value, 0L); printProcessor.process(r); } diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamProcessorApiTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamProcessorApiTest.java index 9bb61e7f6f866..d312cdc8b7b1c 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamProcessorApiTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamProcessorApiTest.java @@ -73,7 +73,7 @@ private void runTest(final boolean shouldAddStoreDirectly) { try (TopologyTestDriver testDriver = new TopologyTestDriver(builder.build())) { final TestInputTopic testDriverInputTopic = - testDriver.createInputTopic("input", Serdes.String().serializer(), Serdes.String().serializer()); + testDriver.createInputTopic("input", Serdes.String().serializer(), Serdes.String().serializer()); words.forEach(clk -> testDriverInputTopic.pipeInput(clk.key, clk.value)); @@ -91,9 +91,10 @@ private void runTest(final boolean shouldAddStoreDirectly) { Assertions.assertEquals("bazUpdated", stateStore.get("c")); } } - + private static class TransformerSupplier implements FixedKeyProcessorSupplier { private final StoreBuilder storeBuilder; + public TransformerSupplier(final StoreBuilder storeBuilder) { this.storeBuilder = storeBuilder; } @@ -121,6 +122,7 @@ public void process(final FixedKeyRecord record) { }; } + @Override public Set> stores() { if (storeBuilder != null) { diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSelectKeyTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSelectKeyTest.java index 5ae92a681cd1e..7e4d93eb62aa8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSelectKeyTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSelectKeyTest.java @@ -56,7 +56,7 @@ public void testSelectKey() { new KeyValueTimestamp<>("THREE", 3, 0)}; final int[] expectedValues = new int[]{1, 2, 3}; - final KStream stream = + final KStream stream = builder.stream(topicName, Consumed.with(Serdes.String(), Serdes.Integer())); final MockApiProcessorSupplier supplier = new MockApiProcessorSupplier<>(); stream.selectKey((key, value) -> keyMap.get(value)).process(supplier); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregateProcessorTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregateProcessorTest.java index 25d1774705c7f..53d6172063047 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregateProcessorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSessionWindowAggregateProcessorTest.java @@ -194,7 +194,7 @@ public void shouldCreateSingleSessionWhenWithinGap(final EmitStrategy.StrategyTy processor.process(new Record<>("john", "second", 500L)); try (final KeyValueIterator, AggregationWithHeaders> values = - sessionStore.findSessions("john", 0, 2000)) { + sessionStore.findSessions("john", 0, 2000)) { assertTrue(values.hasNext()); assertEquals(Long.valueOf(2), AggregationWithHeaders.getAggregationOrNull(values.next().value)); } @@ -223,7 +223,7 @@ public void shouldMergeSessions(final EmitStrategy.StrategyType inputType, final processor.process(new Record<>(sessionId, "third", GAP_MS / 2)); try (final KeyValueIterator, AggregationWithHeaders> iterator = - sessionStore.findSessions(sessionId, 0, GAP_MS + 1)) { + sessionStore.findSessions(sessionId, 0, GAP_MS + 1)) { final KeyValue, AggregationWithHeaders> kv = iterator.next(); assertEquals(Long.valueOf(3), AggregationWithHeaders.getAggregationOrNull(kv.value)); @@ -238,7 +238,7 @@ public void shouldUpdateSessionIfTheSameTime(final EmitStrategy.StrategyType inp processor.process(new Record<>("mel", "first", 0L)); processor.process(new Record<>("mel", "second", 0L)); try (final KeyValueIterator, AggregationWithHeaders> iterator = - sessionStore.findSessions("mel", 0, 0)) { + sessionStore.findSessions("mel", 0, 0)) { assertEquals(Long.valueOf(2L), AggregationWithHeaders.getAggregationOrNull(iterator.next().value)); assertFalse(iterator.hasNext()); } @@ -305,7 +305,7 @@ public void shouldRemoveMergedSessionsFromStateStore(final EmitStrategy.Strategy // first ensure it is in the store try (final KeyValueIterator, AggregationWithHeaders> a1 = - sessionStore.findSessions("a", 0, 0)) { + sessionStore.findSessions("a", 0, 0)) { final KeyValue, AggregationWithHeaders> next = a1.next(); assertEquals(new Windowed<>("a", new SessionWindow(0, 0)), next.key); assertEquals(1L, AggregationWithHeaders.getAggregationOrNull(next.value)); @@ -316,7 +316,7 @@ public void shouldRemoveMergedSessionsFromStateStore(final EmitStrategy.Strategy // a1 from above should have been removed // should have merged session in store try (final KeyValueIterator, AggregationWithHeaders> a2 = - sessionStore.findSessions("a", 0, 100)) { + sessionStore.findSessions("a", 0, 100)) { final KeyValue, AggregationWithHeaders> next = a2.next(); assertEquals(new Windowed<>("a", new SessionWindow(0, 100)), next.key); assertEquals(2L, AggregationWithHeaders.getAggregationOrNull(next.value)); @@ -486,7 +486,7 @@ public void shouldLogAndMeterWhenSkippingNullKeyWithBuiltInMetrics(final EmitStr ); try (final LogCaptureAppender appender = - LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { + LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { processor.process(new Record<>(null, "1", 0L)); @@ -532,7 +532,7 @@ public void shouldLogAndMeterWhenSkippingLateRecordWithZeroGrace(final EmitStrat processor.process(new Record<>("dummy", "dummy", 11L)); try (final LogCaptureAppender appender = - LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { + LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { // record is late mockContext.setRecordContext(new ProcessorRecordContext(0, -2, -3, "topic", new RecordHeaders())); @@ -587,7 +587,7 @@ public void shouldLogAndMeterWhenSkippingLateRecordWithNonzeroGrace(final EmitSt processor.init(mockContext); try (final LogCaptureAppender appender = - LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { + LogCaptureAppender.createAndRegister(KStreamSessionWindowAggregate.class)) { // dummy record to establish stream time = 0 mockContext.setRecordContext(new ProcessorRecordContext(0, -2, -3, "topic", new RecordHeaders())); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregateTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregateTest.java index 2c72add551d93..8ee2cfce1b7ac 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregateTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSlidingWindowAggregateTest.java @@ -89,7 +89,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class KStreamSlidingWindowAggregateTest { - + public static Stream testParameters() { return Stream.of( Arguments.of(StrategyType.ON_WINDOW_UPDATE, true, true, false), @@ -110,6 +110,7 @@ public static Stream testParameters() { Arguments.of(StrategyType.ON_WINDOW_CLOSE, false, false, true) ); } + public StrategyType type; public boolean inOrderIterator; public boolean withCache; @@ -119,7 +120,7 @@ public static Stream testParameters() { private final Properties props = StreamsTestUtils.getStreamsConfig(Serdes.String(), Serdes.String()); private final String threadId = Thread.currentThread().getName(); - + public void setup(final StrategyType inputType, final boolean inputInOrderIterator, final boolean inputWithCache, final boolean withHeaders) { type = inputType; inOrderIterator = inputInOrderIterator; @@ -339,7 +340,7 @@ public void testAggregateLargeInput(final StrategyType inputType, final boolean inputTopic1.pipeInput("C", "3", 16L); inputTopic1.pipeInput("C", "4", 21); inputTopic1.pipeInput("C", "5", 23L); - + inputTopic1.pipeInput("D", "4", 11L); // skip for emit final [1, 11], close time 15 inputTopic1.pipeInput("D", "2", 12L); // skip for emit final [2, 12], close time 15 inputTopic1.pipeInput("D", "3", 29L); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSplitTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSplitTest.java index f78012070cc6b..5940a2eec7d3b 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSplitTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KStreamSplitTest.java @@ -118,7 +118,7 @@ public void testResultingMap() { .defaultBranch(); assertEquals(4, branches.size()); // direct the branched streams into different topics named with branch name - for (final Map.Entry> branch: branches.entrySet()) { + for (final Map.Entry> branch : branches.entrySet()) { branch.getValue().to(branch.getKey()); } builder.build(); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableAggregateTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableAggregateTest.java index 653039db21ef2..78078fcfe43d8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableAggregateTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableAggregateTest.java @@ -114,7 +114,7 @@ public void testAggBasic(final boolean withHeaders) { driver.createInputTopic(topic1, new StringSerializer(), new StringSerializer(), Instant.ofEpochMilli(0L), Duration.ZERO); final Headers headers = new RecordHeaders(); - headers.add(new RecordHeader("header-key", "header-value".getBytes(StandardCharsets.UTF_8))); + headers.add(new RecordHeader("header-key", "header-value".getBytes(StandardCharsets.UTF_8))); inputTopic.pipeInput(new TestRecord<>("A", "1", headers, 10L)); inputTopic.pipeInput("B", "2", 15L); inputTopic.pipeInput("A", "3", 20L); diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java index 8825828ea0791..26cdfeb7eaaa2 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java @@ -427,8 +427,8 @@ public void shouldEnableSendingOldValuesIfNotMaterializedAlreadyButForcedToMater } private void assertTopologyContainsProcessor(final Topology topology, final String processorName) { - for (final Subtopology subtopology: topology.describe().subtopologies()) { - for (final TopologyDescription.Node node: subtopology.nodes()) { + for (final Subtopology subtopology : topology.describe().subtopologies()) { + for (final TopologyDescription.Node node : subtopology.nodes()) { if (node.name().equals(processorName)) { return; } diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/NamedInternalTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/NamedInternalTest.java index fef5aa7d6e18d..35e1f94e87653 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/NamedInternalTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/NamedInternalTest.java @@ -36,7 +36,7 @@ public String newProcessorName(final String prefix) { @Override public String newStoreName(final String prefix) { - return prefix + "STORE-" + index++; + return prefix + "STORE-" + index++; } } diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SlidingWindowedCogroupedKStreamImplTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SlidingWindowedCogroupedKStreamImplTest.java index 24072ba710709..acab36d899aeb 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SlidingWindowedCogroupedKStreamImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SlidingWindowedCogroupedKStreamImplTest.java @@ -94,56 +94,56 @@ public void setup(final boolean withHeaders) { @ValueSource(booleans = {false, true}) public void shouldNotHaveNullInitializerOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null)); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null)); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullMaterializedOnTwoOptionAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, (Materialized>) null)); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, (Materialized>) null)); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullNamedTwoOptionOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, (Named) null)); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, (Named) null)); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullInitializerTwoOptionNamedOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Named.as("test"))); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Named.as("test"))); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullInitializerTwoOptionMaterializedOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Materialized.as("test"))); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Materialized.as("test"))); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullInitializerThreeOptionOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Named.as("test"), Materialized.as("test"))); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(null, Named.as("test"), Materialized.as("test"))); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullMaterializedOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, Named.as("Test"), null)); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, Named.as("Test"), null)); } @ParameterizedTest @ValueSource(booleans = {false, true}) public void shouldNotHaveNullNamedOnAggregate(final boolean withHeaders) { setup(withHeaders); - assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, null, Materialized.as("test"))); + assertThrows(NullPointerException.class, () -> windowedCogroupedStream.aggregate(MockInitializer.STRING_INIT, null, Materialized.as("test"))); } @ParameterizedTest diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SuppressTopologyTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SuppressTopologyTest.java index 2254f8c10af2b..eae6d314c33c4 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SuppressTopologyTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/SuppressTopologyTest.java @@ -236,7 +236,7 @@ public void shouldThrowOnSuppressForNonMaterializedVersionedTable() { "input", Materialized.as(Stores.persistentVersionedKeyValueStore("store", Duration.ZERO)) ).filter((k, v) -> true) - .suppress(Suppressed.untilTimeLimit(Duration.ZERO, Suppressed.BufferConfig.unbounded())); + .suppress(Suppressed.untilTimeLimit(Duration.ZERO, Suppressed.BufferConfig.unbounded())); assertThrows( TopologyException.class, diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/TimestampedTupleForwarderTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/TimestampedTupleForwarderTest.java index 44b9b3192f3fd..ee298060ff0d7 100644 --- a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/TimestampedTupleForwarderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/TimestampedTupleForwarderTest.java @@ -72,8 +72,8 @@ private void shouldForwardRecordsIfWrappedStateStoreDoesNotCache(final boolean s when(store.setFlushListener(null, sendOldValues)).thenReturn(false); if (sendOldValues) { - doNothing().when(context).forward(new Record<>("key1", new Change<>("newValue1", "oldValue1", true), 0L)); - doNothing().when(context).forward(new Record<>("key2", new Change<>("newValue2", "oldValue2", false), 42L)); + doNothing().when(context).forward(new Record<>("key1", new Change<>("newValue1", "oldValue1", true), 0L)); + doNothing().when(context).forward(new Record<>("key2", new Change<>("newValue2", "oldValue2", false), 42L)); } else { doNothing().when(context).forward(new Record<>("key1", new Change<>("newValue1", null, true), 0L)); doNothing().when(context).forward(new Record<>("key2", new Change<>("newValue2", null, false), 42L)); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/ReadOnlyStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/ReadOnlyStoreTest.java index 3b6393399024b..c3c3d51c778e8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/ReadOnlyStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/ReadOnlyStoreTest.java @@ -64,6 +64,7 @@ public void shouldConnectProcessorAndWriteDataToReadOnlyStore() { public void init(final ProcessorContext context) { store = context.getStateStore("readOnlyStore"); } + @Override public void process(final Record record) { store.put(record.key(), record.value()); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContextTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContextTest.java index ce45c608a4662..c3060197eb5f1 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContextTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/AbstractProcessorContextTest.java @@ -176,6 +176,7 @@ public void appConfigsShouldReturnUnrecognizedValues() { equalTo("user-supplied-value") ); } + @Test public void shouldThrowErrorIfSerdeDefaultNotSet() { final Properties config = getStreamsConfig(); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ClientUtilsTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ClientUtilsTest.java index 5e5e1712d7067..e8149a8333d8e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ClientUtilsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ClientUtilsTest.java @@ -181,7 +181,7 @@ public void fetchEndOffsetsShouldRethrowExecutionExceptionAsStreamsException() t assertThrows(StreamsException.class, () -> fetchEndOffsets(PARTITIONS, adminClient)); } - + @Test public void shouldComputeSizeInBytesForConsumerRecord() { final ConsumerRecord record = new ConsumerRecord<>( diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStateUpdaterTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStateUpdaterTest.java index b6461669bd77b..266530af1ea52 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStateUpdaterTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStateUpdaterTest.java @@ -2026,7 +2026,7 @@ private void verifyFailedTasks(final Class clazz, fi }, VERIFICATION_TIMEOUT, () -> "Did not get all exceptions and failed tasks within the given timeout! Expected: " - + expectedFailedTasks + ", actual: " + failedTasks + + expectedFailedTasks + ", actual: " + failedTasks ); } diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListenerTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListenerTest.java index f94277fa3df59..00972e4223770 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListenerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/DefaultStreamsRebalanceListenerTest.java @@ -220,9 +220,9 @@ void testOnAllTasksLost() { final StreamsRebalanceData streamsRebalanceData = mock(StreamsRebalanceData.class); when(streamsRebalanceData.subtopologies()).thenReturn(Map.of()); createRebalanceListenerWithRebalanceData(streamsRebalanceData); - + assertDoesNotThrow(() -> defaultStreamsRebalanceListener.onAllTasksLost()); - + final InOrder inOrder = inOrder(taskManager, streamsRebalanceData); inOrder.verify(taskManager).handleLostAll(); inOrder.verify(streamsRebalanceData).setReconciledAssignment(StreamsRebalanceData.Assignment.EMPTY); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/GlobalStateTaskTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/GlobalStateTaskTest.java index fedb0da6b2f26..4d6fe0bee48da 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/GlobalStateTaskTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/GlobalStateTaskTest.java @@ -70,12 +70,13 @@ public class GlobalStateTaskTest { private final MockSourceNode sourceOne = new MockSourceNode<>( new StringDeserializer(), new StringDeserializer()); - private final MockSourceNode sourceTwo = new MockSourceNode<>( + private final MockSourceNode sourceTwo = new MockSourceNode<>( new IntegerDeserializer(), new IntegerDeserializer()); private final MockSourceNode sourceForward = new MockSourceNode<>(new StringDeserializer(), new StringDeserializer()) { private InternalProcessorContext ctx; + @Override public void init(final InternalProcessorContext context) { this.ctx = context; @@ -426,6 +427,7 @@ public void shouldInvokeProcessExceptionHandlerWhenEnabled() { public void configure(final Map configs) { } + @Override public Response handleError(final ErrorHandlerContext context, final Record record, final Exception exception) { handlerInvoked.set(true); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopicManagerTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopicManagerTest.java index 4cece3fd7c7c9..5984c8e3b4139 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopicManagerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopicManagerTest.java @@ -15,6 +15,7 @@ * limitations under the License. */ package org.apache.kafka.streams.processor.internals; + import org.apache.kafka.clients.admin.AdminClient; import org.apache.kafka.clients.admin.Config; import org.apache.kafka.clients.admin.ConfigEntry; @@ -869,6 +870,7 @@ public void shouldExhaustRetriesOnTimeoutExceptionForMakeReady() { "This can happen if the Kafka cluster is temporarily not available.")); } } + @Test public void shouldLogWhenTopicNotFoundAndNotThrowException() { mockAdminClient.addTopic( @@ -925,7 +927,7 @@ public void shouldCreateTopicWhenTopicLeaderNotAvailableAndThenTopicNotFound() { Collections.singletonMap(topic1, topicDescriptionUnknownTopicFuture))); when(admin.createTopics(Collections.singleton( new NewTopic(topic1, Optional.of(1), Optional.of((short) 1)) - .configs(mkMap(mkEntry(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_DELETE), + .configs(mkMap(mkEntry(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_DELETE), mkEntry(TopicConfig.MESSAGE_TIMESTAMP_TYPE_CONFIG, "CreateTime"), mkEntry(TopicConfig.SEGMENT_BYTES_CONFIG, "52428800"), mkEntry(TopicConfig.RETENTION_MS_CONFIG, "-1")))))) diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilderTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilderTest.java index 86264b59bf712..5ddce138659c0 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/InternalTopologyBuilderTest.java @@ -128,7 +128,7 @@ public void shouldAddSourcePatternWithOffsetReset() { builder.addSource(new AutoOffsetResetInternal(AutoOffsetReset.none()), "source0", null, null, null, Pattern.compile(noneTopicPattern)); builder.addSource(new AutoOffsetResetInternal(AutoOffsetReset.earliest()), "source1", null, null, null, Pattern.compile(earliestTopicPattern)); - builder.addSource(new AutoOffsetResetInternal(AutoOffsetReset.latest()), "source2", null, null, null, Pattern.compile(latestTopicPattern)); + builder.addSource(new AutoOffsetResetInternal(AutoOffsetReset.latest()), "source2", null, null, null, Pattern.compile(latestTopicPattern)); builder.addSource(new AutoOffsetResetInternal(AutoOffsetReset.byDuration(Duration.ofSeconds(42))), "source3", null, null, null, Pattern.compile(durationTopicPattern)); builder.initializeSubscription(); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/NamedTopologyTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/NamedTopologyTest.java index 43a59b7057c48..a057e40b1a55f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/NamedTopologyTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/NamedTopologyTest.java @@ -171,7 +171,7 @@ public void shouldThrowTopologyExceptionWhenAddingNamedTopologyReadingFromSameIn public void shouldThrowTopologyExceptionWhenAddingNamedTopologyReadingFromSameInputTopicBeforeStart() { builder1.stream("stream"); builder2.stream("stream"); - + streams.addNamedTopology(builder1.build()); final ExecutionException exception = assertThrows( diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGroupTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGroupTest.java index 9b8d0fe2f0627..15c7fee18f7f7 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGroupTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGroupTest.java @@ -911,7 +911,7 @@ private void hasZeroFetchedLag(final PartitionGroup group, final TopicPartition assertFalse(result.isReady()); assertTrue(result.getLogMessage().isPresent() && result.getLogMessage().get().contains(String.format("Partition %s has current lag 0 and current time is %d. " - + "Waiting for new data to be produced for configured idle time", partition, 0L))); + + "Waiting for new data to be produced for configured idle time", partition, 0L))); } @SuppressWarnings("SameParameterValue") @@ -920,7 +920,7 @@ private void hasNonZeroFetchedLag(final PartitionGroup group, final TopicPartiti assertFalse(result.isReady()); assertTrue(result.getLogMessage().isPresent() && result.getLogMessage().get().contains(String.format("Partition %s has current lag %d, but no data is buffered locally. " - + "Waiting to buffer some records.", partition, lag))); + + "Waiting to buffer some records.", partition, lag))); } diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGrouperTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGrouperTest.java index 5fcfbdd7daa0e..dd1c85dbfc87f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGrouperTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/PartitionGrouperTest.java @@ -83,10 +83,10 @@ public void shouldComputeGroupingForSingleGroupWithMultipleTopics() { new TaskId(SUBTOPOLOGY_0.nodeGroupId, 0, SUBTOPOLOGY_0.namedTopology), Set.of(new TopicPartition("topic1", 0), new TopicPartition("topic2", 0))); expectedPartitionsForTask.put( - new TaskId(SUBTOPOLOGY_0.nodeGroupId, 1, SUBTOPOLOGY_0.namedTopology), + new TaskId(SUBTOPOLOGY_0.nodeGroupId, 1, SUBTOPOLOGY_0.namedTopology), Set.of(new TopicPartition("topic1", 1), new TopicPartition("topic2", 1))); expectedPartitionsForTask.put( - new TaskId(SUBTOPOLOGY_0.nodeGroupId, 2, SUBTOPOLOGY_0.namedTopology), + new TaskId(SUBTOPOLOGY_0.nodeGroupId, 2, SUBTOPOLOGY_0.namedTopology), Set.of(new TopicPartition("topic1", 2))); assertEquals(expectedPartitionsForTask, grouper.partitionGroups(topicGroups, metadata)); @@ -96,7 +96,7 @@ public void shouldComputeGroupingForSingleGroupWithMultipleTopics() { public void shouldNotCreateAnyTasksBecauseOneTopicHasUnknownPartitions() { final PartitionGrouper grouper = new PartitionGrouper(); final Map> topicGroups = new HashMap<>(); - + topicGroups.put(SUBTOPOLOGY_0, Set.of("topic1", "unknownTopic", "topic2")); assertThrows(RuntimeException.class, () -> grouper.partitionGroups(topicGroups, metadata)); } diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorMetadataTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorMetadataTest.java index edd276e850b0d..b7d6a287b468e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorMetadataTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/ProcessorMetadataTest.java @@ -37,7 +37,7 @@ public void shouldAddAndGetKeyValueWithEmptyConstructor() { final long value = 100L; metadata.put(key, value); - final Long actualValue = metadata.get(key); + final Long actualValue = metadata.get(key); assertThat(actualValue, is(value)); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RackAwarenessStreamsPartitionAssignorTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RackAwarenessStreamsPartitionAssignorTest.java index 65786cf79b810..9f5ef7ed73891 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RackAwarenessStreamsPartitionAssignorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RackAwarenessStreamsPartitionAssignorTest.java @@ -412,7 +412,7 @@ private Map getClientTagDistributions(final Map taskClientTags, final List tagsToCheck) { - for (final Map.Entry entry: taskClientTags.entrySet()) { + for (final Map.Entry entry : taskClientTags.entrySet()) { if (!tagsAmongStandbysAreDifferent(entry.getValue(), tagsToCheck)) throw new AssertionError("task " + entry.getKey() + "'s tag-distribution for " + tagsToCheck + " among standbys is not ideal: " + entry.getValue()); @@ -425,7 +425,7 @@ private void verifyIdealTaskDistributionReached(final Map taskClientTags, final List tagsToCheck) { - for (final Map.Entry entry: taskClientTags.entrySet()) { + for (final Map.Entry entry : taskClientTags.entrySet()) { if (!tagsAmongActiveAndAtLeastOneStandbyIsDifferent(entry.getValue(), tagsToCheck)) throw new AssertionError("task " + entry.getKey() + "'s tag-distribution for " + tagsToCheck + "between active and standbys is not partially ideal: " + entry.getValue()); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RecordCollectorTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RecordCollectorTest.java index 4923700666f6f..f8a2422ef8863 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RecordCollectorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RecordCollectorTest.java @@ -735,7 +735,7 @@ public void shouldForwardFlushToStreamsProducer() { taskId, streamsProducer, productionExceptionHandler, - streamsMetrics, + streamsMetrics, topology ); @@ -748,7 +748,7 @@ public void shouldForwardFlushToStreamsProducerEosEnabled() { when(streamsProducer.sendException()).thenReturn(new AtomicReference<>(null)); doNothing().when(streamsProducer).flush(); final ProcessorTopology topology = mock(ProcessorTopology.class); - + final RecordCollector collector = new RecordCollectorImpl( logContext, taskId, @@ -826,7 +826,7 @@ public void shouldNotAbortTxOnCloseCleanIfEosEnabled() { final StreamsProducer streamsProducer = mock(StreamsProducer.class); when(streamsProducer.sendException()).thenReturn(new AtomicReference<>(null)); final ProcessorTopology topology = mock(ProcessorTopology.class); - + final RecordCollector collector = new RecordCollectorImpl( logContext, taskId, @@ -835,7 +835,7 @@ public void shouldNotAbortTxOnCloseCleanIfEosEnabled() { streamsMetrics, topology ); - + collector.closeClean(); } @@ -846,7 +846,7 @@ public void shouldAbortTxOnCloseDirtyIfEosEnabled() { when(streamsProducer.sendException()).thenReturn(new AtomicReference<>(null)); doNothing().when(streamsProducer).abortTransaction(); final ProcessorTopology topology = mock(ProcessorTopology.class); - + final RecordCollector collector = new RecordCollectorImpl( logContext, taskId, @@ -1167,8 +1167,8 @@ public void shouldThrowStreamsExceptionOnSubsequentFlushIfASendFailsWithDefaultE assertThat( thrown.getMessage(), equalTo("Error encountered sending record to topic topic for task 0_0 due to:" + - "\norg.apache.kafka.common.KafkaException: KABOOM!" + - "\nException handler choose to FAIL the processing, no more records would be sent.") + "\norg.apache.kafka.common.KafkaException: KABOOM!" + + "\nException handler choose to FAIL the processing, no more records would be sent.") ); } @@ -1191,8 +1191,8 @@ public void shouldThrowStreamsExceptionOnSubsequentCloseIfASendFailsWithDefaultE assertThat( thrown.getMessage(), equalTo("Error encountered sending record to topic topic for task 0_0 due to:" + - "\norg.apache.kafka.common.KafkaException: KABOOM!" + - "\nException handler choose to FAIL the processing, no more records would be sent.") + "\norg.apache.kafka.common.KafkaException: KABOOM!" + + "\nException handler choose to FAIL the processing, no more records would be sent.") ); } @@ -1218,8 +1218,8 @@ public void shouldThrowStreamsExceptionOnSubsequentSendIfFatalEvenWithContinueEx assertThat( thrown.getMessage(), equalTo("Error encountered sending record to topic topic for task 0_0 due to:" + - "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + - "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") + "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + + "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") ); } @@ -1242,8 +1242,8 @@ public void shouldThrowStreamsExceptionOnSubsequentFlushIfFatalEvenWithContinueE assertThat( thrown.getMessage(), equalTo("Error encountered sending record to topic topic for task 0_0 due to:" + - "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + - "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") + "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + + "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") ); } @@ -1266,8 +1266,8 @@ public void shouldThrowStreamsExceptionOnSubsequentCloseIfFatalEvenWithContinueE assertThat( thrown.getMessage(), equalTo("Error encountered sending record to topic topic for task 0_0 due to:" + - "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + - "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") + "\norg.apache.kafka.common.errors.AuthenticationException: KABOOM!" + + "\nWritten offsets would not be recorded and no more records would be sent since this is a fatal error.") ); } @@ -1288,7 +1288,7 @@ public void shouldNotThrowStreamsExceptionOnSubsequentCallIfASendFailsWithContin ); try (final LogCaptureAppender logCaptureAppender = - LogCaptureAppender.createAndRegister(RecordCollectorImpl.class)) { + LogCaptureAppender.createAndRegister(RecordCollectorImpl.class)) { logCaptureAppender.addFilter(ThresholdFilter.createFilter(Level.INFO, null, null)); collector.send(topic, "3", "0", null, null, stringSerializer, stringSerializer, sinkNodeName, context, streamPartitioner); @@ -1633,7 +1633,7 @@ public void shouldNotFailIfContextIsNotAvailableOnSerializationError() { ); } } - + @Test public void shouldNotFailIfRecordContextIsNotAvailableOnSerializationError() { try (final ErrorStringSerializer errorSerializer = new ErrorStringSerializer()) { diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionOptimizingTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionOptimizingTest.java index 57753df91e83f..e11100185cc53 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionOptimizingTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionOptimizingTest.java @@ -376,7 +376,6 @@ public void process(final Record record) { - private static final String EXPECTED_UNOPTIMIZED_TOPOLOGY = "Topologies:\n" + " Sub-topology: 0\n" + " Source: sourceStream (topics: [input])\n" + diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionTopicsTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionTopicsTest.java index 96b23deeb65e6..2c3466efd38b8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionTopicsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/RepartitionTopicsTest.java @@ -96,7 +96,7 @@ public class RepartitionTopicsTest { mkMap(mkEntry(REPARTITION_TOPIC_NAME1, REPARTITION_TOPIC_CONFIG1)), Collections.emptyMap() ); - final StreamsConfig config = new DummyStreamsConfig(); + final StreamsConfig config = new DummyStreamsConfig(); @Mock InternalTopologyBuilder internalTopologyBuilder; diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateDirectoryTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateDirectoryTest.java index 6e2250ead51f1..e76b91eea13ec 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateDirectoryTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateDirectoryTest.java @@ -671,8 +671,8 @@ public void shouldLogTempDirMessage() { assertThat( appender.getMessages(), hasItem("Using an OS temp directory in the state.dir property can cause failures with writing the" + - " checkpoint file due to the fact that this directory can be cleared by the OS." + - " Resolved state.dir: [" + System.getProperty("java.io.tmpdir") + "/kafka-streams]") + " checkpoint file due to the fact that this directory can be cleared by the OS." + + " Resolved state.dir: [" + System.getProperty("java.io.tmpdir") + "/kafka-streams]") ); } } diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateManagerUtilTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateManagerUtilTest.java index 98ec0f1a64b4a..4e64084512f4d 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateManagerUtilTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StateManagerUtilTest.java @@ -177,7 +177,7 @@ public void testCloseStateManagerWithStateStoreWipeOut() { } @Test - public void shouldStillWipeStateStoresIfCloseThrowsException() { + public void shouldStillWipeStateStoresIfCloseThrowsException() { final File randomFile = new File("/random/path"); when(stateManager.taskId()).thenReturn(taskId); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamTaskTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamTaskTest.java index a79d178e2a94c..7a478746a7f88 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamTaskTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamTaskTest.java @@ -449,15 +449,15 @@ public void shouldAutoOffsetResetIfNoCommittedOffsetFound() { final AtomicReference shouldNotSeek = new AtomicReference<>(); try (final MockConsumer consumer = new MockConsumer<>(AutoOffsetResetStrategy.EARLIEST.name()) { - @Override - public void seek(final TopicPartition partition, final long offset) { - final AssertionError error = shouldNotSeek.get(); - if (error != null) { - throw error; - } - super.seek(partition, offset); + @Override + public void seek(final TopicPartition partition, final long offset) { + final AssertionError error = shouldNotSeek.get(); + if (error != null) { + throw error; } - }) { + super.seek(partition, offset); + } + }) { consumer.assign(asList(partition1, partition2)); consumer.updateBeginningOffsets(mkMap(mkEntry(partition1, 0L), mkEntry(partition2, 0L))); @@ -1575,7 +1575,7 @@ public void shouldCommitOldProcessorMetadataWhenNotDirty() { assertThat(task.prepareCommit(true), equalTo( mkMap( - mkEntry(partition1, new OffsetAndMetadata(1L, Optional.of(1), expectedMetadata1.encode())), + mkEntry(partition1, new OffsetAndMetadata(1L, Optional.of(1), expectedMetadata1.encode())), mkEntry(partition2, new OffsetAndMetadata(2L, Optional.of(1), expectedMetadata2.encode())) ))); task.postCommit(false); @@ -1674,7 +1674,7 @@ public void shouldBeRecordIdlingTimeIfSuspended() { public void shouldLogNotReadyWhenStaleAfterThreshold() throws Exception { when(stateManager.taskId()).thenReturn(taskId); when(stateManager.taskType()).thenReturn(TaskType.ACTIVE); - + task = createStatelessTask(createConfig("100")); task.initializeIfNeeded(); task.completeRestoration(noOpResetter -> { }); @@ -1683,17 +1683,17 @@ public void shouldLogNotReadyWhenStaleAfterThreshold() throws Exception { try (final LogCaptureAppender streamTaskAppender = LogCaptureAppender.createAndRegister(StreamTask.class); final LogCaptureAppender partitionGroupAppender = LogCaptureAppender.createAndRegister(PartitionGroup.class)) { - + // Enable TRACE logging for PartitionGroup to capture the "ready for processing" message partitionGroupAppender.setClassLogger(PartitionGroup.class, Level.TRACE); - + // Set lastNotReadyLogTime to 100 seconds ago final long initialTime = time.milliseconds(); task.setLastNotReadyLogTime(initialTime - 100_000L); - + // Advance time by 19.999 seconds long newTime = time.milliseconds() + 19_999L; - + // Should not trigger logging after being stale for 119 seconds assertFalse(task.isProcessable(newTime)); List messages = streamTaskAppender.getMessages(); @@ -1704,7 +1704,7 @@ public void shouldLogNotReadyWhenStaleAfterThreshold() throws Exception { // Should trigger logging after being stale for 120 seconds assertFalse(task.isProcessable(newTime)); - + // Validate INFO log from StreamTask about partition2 not being ready messages = streamTaskAppender.getMessages(); final String expectedNotReadyMessage = "stream-thread [Test worker] task [0_0] Partition topic2-0 has fetched lag of -1\n\tWaiting to fetch data for topic2-0"; @@ -1718,7 +1718,7 @@ public void shouldLogNotReadyWhenStaleAfterThreshold() throws Exception { )) ); assertThat(messages.get(0), equalTo(expectedNotReadyMessage)); - + // Validate TRACE log from PartitionGroup about partition1 being ready assertThat( partitionGroupAppender.getEvents(), @@ -1838,7 +1838,7 @@ public void shouldPunctuateUsingAnchoredSystemStartTimeWithStartTimeBeforeNow() time.sleep(10); assertTrue(task.canPunctuateSystemTime()); assertTrue(task.maybePunctuateSystemTime()); - anchoredProcessorSystemTime.mockProcessor.checkAndClearPunctuateResult(PunctuationType.WALL_CLOCK_TIME, testStartTime + 10, testStartTime + 20); + anchoredProcessorSystemTime.mockProcessor.checkAndClearPunctuateResult(PunctuationType.WALL_CLOCK_TIME, testStartTime + 10, testStartTime + 20); } @Test @@ -2045,7 +2045,7 @@ public void shouldNotThrowExceptionOnAnchoredSchedule() { when(stateManager.taskType()).thenReturn(TaskType.ACTIVE); task = createStatelessTask(createConfig("100")); task.processorContext().setCurrentNode(processorStreamTime); - task.schedule(Instant.ofEpochMilli(1000), 1, PunctuationType.STREAM_TIME, timestamp -> { }); + task.schedule(Instant.ofEpochMilli(1000), 1, PunctuationType.STREAM_TIME, timestamp -> { }); } @Test @@ -3111,7 +3111,7 @@ private StreamTask createOptimizedStatefulTask(final StreamsConfig config, final Set.of(partition1), topology, consumer, - new TopologyConfig(null, config, new Properties()).getTaskConfig(), + new TopologyConfig(null, config, new Properties()).getTaskConfig(), streamsMetrics, stateDirectory, cache, @@ -3153,7 +3153,7 @@ public Map committed(final Set anchoredProcessorSystemTime + final MockProcessorNode anchoredProcessorSystemTime ) { final ProcessorTopology topology = withSources( asList(source1, source2, anchoredProcessorStreamTime, anchoredProcessorSystemTime), @@ -3338,7 +3338,7 @@ private StreamTask createStatelessTaskWithAnchoredPunctuation( partitions, topology, consumer, - new TopologyConfig(null, config, new Properties()).getTaskConfig(), + new TopologyConfig(null, config, new Properties()).getTaskConfig(), new StreamsMetricsImpl(metrics, "test", time), stateDirectory, cache, @@ -3374,7 +3374,7 @@ private StreamTask createStatelessTaskWithForwardingTopology(final SourceNode Optional.of(Collections.singleton(2))); assertEquals(expected, actual); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignorTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignorTest.java index 3c5e4fe2733fe..f4ec3441f32e9 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignorTest.java @@ -900,7 +900,7 @@ public void testAssignWithNewTasks(final Map parameterizedConfig final Set prevTasks10 = Set.of(TASK_0_0); final Set prevTasks11 = Set.of(TASK_0_1); final Set prevTasks20 = Set.of(TASK_0_2); - + createMockTaskManager(prevTasks10, EMPTY_TASKS); configureDefaultPartitionAssignor(parameterizedConfig); @@ -1690,7 +1690,7 @@ public void shouldThrowTimeoutExceptionWhenCreatingChangelogTopicsTimesOut(final createDefaultMockTaskManager(); partitionAssignor.configure(configProps(parameterizedConfig)); - final MockInternalTopicManager mockInternalTopicManager = new MockInternalTopicManager( + final MockInternalTopicManager mockInternalTopicManager = new MockInternalTopicManager( time, config, mockClientSupplier.restoreConsumer, @@ -2217,7 +2217,7 @@ public void shouldNotFailOnBranchedMultiLevelRepartitionConnectedTopology(final // especially whether it could build the repartition topic counts (step zero) with a complex topology. // The traversal path 0 -> 1 -> 2 -> 3 hits the case where sub-topology 2 will be initialized while its // parent 3 hasn't been initialized yet. - builder.addSource(null, "KSTREAM-SOURCE-0000000000", null, null, null, "input-stream"); + builder.addSource(null, "KSTREAM-SOURCE-0000000000", null, null, null, "input-stream"); builder.addProcessor("KSTREAM-FLATMAPVALUES-0000000001", new MockApiProcessorSupplier<>(), "KSTREAM-SOURCE-0000000000"); builder.addProcessor("KSTREAM-BRANCH-0000000002", new MockApiProcessorSupplier<>(), "KSTREAM-FLATMAPVALUES-0000000001"); builder.addProcessor("KSTREAM-BRANCHCHILD-0000000003", new MockApiProcessorSupplier<>(), "KSTREAM-BRANCH-0000000002"); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsProducerTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsProducerTest.java index 9998e94e808dd..d9462bb88a6ec 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsProducerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/StreamsProducerTest.java @@ -319,7 +319,7 @@ public void shouldFailOnInitTxIfEosDisabled() { @Test public void shouldThrowStreamsExceptionOnSendError() { - nonEosMockProducer.sendException = new KafkaException("KABOOM!"); + nonEosMockProducer.sendException = new KafkaException("KABOOM!"); final StreamsException thrown = assertThrows( StreamsException.class, @@ -574,7 +574,7 @@ public void shouldThrowTaskMigrateExceptionOnEosBeginTxnFenced() { assertThat( thrown.getMessage(), is("Producer got fenced trying to begin a new transaction [test];" + - " it means all tasks belonging to this thread should be migrated.") + " it means all tasks belonging to this thread should be migrated.") ); } @@ -635,7 +635,7 @@ private void testThrowTaskMigratedExceptionOnEosSend(final RuntimeException exce assertThat( thrown.getMessage(), is("Producer got fenced trying to send a record [test];" + - " it means all tasks belonging to this thread should be migrated.") + " it means all tasks belonging to this thread should be migrated.") ); } @@ -654,7 +654,7 @@ public void shouldThrowTaskMigratedExceptionOnEosSendUnknownPid() { assertThat( thrown.getMessage(), is("Producer got fenced trying to send a record [test];" + - " it means all tasks belonging to this thread should be migrated.") + " it means all tasks belonging to this thread should be migrated.") ); } @@ -692,7 +692,7 @@ private void testThrowTaskMigrateExceptionOnEosSendOffset(final RuntimeException assertThat( thrown.getMessage(), is("Producer got fenced trying to add offsets to a transaction [test];" + - " it means all tasks belonging to this thread should be migrated.") + " it means all tasks belonging to this thread should be migrated.") ); } @@ -760,7 +760,7 @@ private void testThrowTaskMigratedExceptionOnEos(final RuntimeException exceptio assertThat( thrown.getMessage(), is("Producer got fenced trying to commit a transaction [test];" + - " it means all tasks belonging to this thread should be migrated.") + " it means all tasks belonging to this thread should be migrated.") ); } @@ -909,7 +909,7 @@ public void shouldComputeTotalBlockedTime() { ); final double expectedTotalBlocked = BUFFER_POOL_WAIT_TIME + FLUSH_TME + TXN_INIT_TIME + - TXN_BEGIN_TIME + TXN_SEND_OFFSETS_TIME + TXN_COMMIT_TIME + TXN_ABORT_TIME + + TXN_BEGIN_TIME + TXN_SEND_OFFSETS_TIME + TXN_COMMIT_TIME + TXN_ABORT_TIME + METADATA_WAIT_TIME; assertThat(nonEosStreamsProducer.totalBlockedTime(), closeTo(expectedTotalBlocked, 0.01)); } @@ -928,7 +928,7 @@ public void shouldComputeTotalBlockedTimeAfterReset() { METADATA_WAIT_TIME ); final double expectedTotalBlocked = BUFFER_POOL_WAIT_TIME + FLUSH_TME + TXN_INIT_TIME + - TXN_BEGIN_TIME + TXN_SEND_OFFSETS_TIME + TXN_COMMIT_TIME + TXN_ABORT_TIME + + TXN_BEGIN_TIME + TXN_SEND_OFFSETS_TIME + TXN_COMMIT_TIME + TXN_ABORT_TIME + METADATA_WAIT_TIME; assertThat(eosStreamsProducer.totalBlockedTime(), equalTo(expectedTotalBlocked)); final long closeStart = 1L; diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/TaskManagerTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/TaskManagerTest.java index cc3cd12b91810..ff0c3742c11e2 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/TaskManagerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/TaskManagerTest.java @@ -2038,7 +2038,7 @@ public void shouldComputeOffsetSumFromCheckpointFileForCreatedAndClosedTasks(fin when(stateDirectory.taskOffsetSums(Collections.singleton(taskId00))).thenReturn(expectedOffsetSums); assertThat(taskManager.taskOffsetSums(), is(expectedOffsetSums)); } - + @Test public void shouldNotReportOffsetSumsForTaskWeCantLock() throws Exception { expectLockFailedFor(taskId00); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/CustomStickyTaskAssignorTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/CustomStickyTaskAssignorTest.java index fa92a55dcae4c..74817d97eb8e6 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/CustomStickyTaskAssignorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/CustomStickyTaskAssignorTest.java @@ -681,8 +681,8 @@ public void shouldNotHaveSameAssignmentOnAnyTwoHosts(final String rackAwareStrat final Map assignments = assign(streamStates, tasks, 1, rackAwareStrategy); - for (final KafkaStreamsState client1: streamStates.values()) { - for (final KafkaStreamsState client2: streamStates.values()) { + for (final KafkaStreamsState client1 : streamStates.values()) { + for (final KafkaStreamsState client2 : streamStates.values()) { if (!client1.processId().equals(client2.processId())) { final Set assignedTasks1 = assignments.get(client1.processId()).tasks().keySet(); final Set assignedTasks2 = assignments.get(client2.processId()).tasks().keySet(); @@ -717,8 +717,8 @@ public void shouldNotHaveSameAssignmentOnAnyTwoHostsWhenThereArePreviousActiveTa final Map assignments = assign(streamStates, tasks, 1, rackAwareStrategy); - for (final KafkaStreamsState client1: streamStates.values()) { - for (final KafkaStreamsState client2: streamStates.values()) { + for (final KafkaStreamsState client1 : streamStates.values()) { + for (final KafkaStreamsState client2 : streamStates.values()) { if (!client1.processId().equals(client2.processId())) { final Set assignedTasks1 = assignments.get(client1.processId()).tasks().keySet(); final Set assignedTasks2 = assignments.get(client2.processId()).tasks().keySet(); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignorTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignorTest.java index 64830546f0f14..2f98209f74e65 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacyStickyTaskAssignorTest.java @@ -1322,19 +1322,19 @@ public void shouldReassignTasksWhenNewNodeJoinsWithExistingActiveAndStandbyAssig }) public void shouldRangeAssignTasksWhenStartingEmpty(final String rackAwareStrategy) { setUp(rackAwareStrategy); - + // Two clients with capacity 1 each, starting empty (no previous tasks) createClient(PID_1, 1); createClient(PID_2, 1); - + // Two subtopologies with 2 tasks each (4 tasks total) final boolean probingRebalanceNeeded = assign(1, rackAwareStrategy, TASK_0_0, TASK_0_1, TASK_1_0, TASK_1_1); assertThat(probingRebalanceNeeded, is(false)); - + // Each client should get one active task from each subtopology final ClientState client1 = clients.get(PID_1); final ClientState client2 = clients.get(PID_2); - + // Check that each client has one active task from subtopology 0 final long client1Subtopology0ActiveCount = client1.activeTasks().stream() .filter(task -> task.subtopology() == 0) @@ -1344,7 +1344,7 @@ public void shouldRangeAssignTasksWhenStartingEmpty(final String rackAwareStrate .count(); assertThat(client1Subtopology0ActiveCount, equalTo(1L)); assertThat(client2Subtopology0ActiveCount, equalTo(1L)); - + // Check that each client has one active task from subtopology 1 final long client1Subtopology1ActiveCount = client1.activeTasks().stream() .filter(task -> task.subtopology() == 1) @@ -1354,7 +1354,7 @@ public void shouldRangeAssignTasksWhenStartingEmpty(final String rackAwareStrate .count(); assertThat(client1Subtopology1ActiveCount, equalTo(1L)); assertThat(client2Subtopology1ActiveCount, equalTo(1L)); - + // Check that each client has one standby task from subtopology 0 final long client1Subtopology0StandbyCount = client1.standbyTasks().stream() .filter(task -> task.subtopology() == 0) @@ -1364,7 +1364,7 @@ public void shouldRangeAssignTasksWhenStartingEmpty(final String rackAwareStrate .count(); assertThat(client1Subtopology0StandbyCount, equalTo(1L)); assertThat(client2Subtopology0StandbyCount, equalTo(1L)); - + // Check that each client has one standby task from subtopology 1 final long client1Subtopology1StandbyCount = client1.standbyTasks().stream() .filter(task -> task.subtopology() == 1) diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/SubscriptionInfoTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/SubscriptionInfoTest.java index 618fd093c76e2..f7068c3f0e9cc 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/SubscriptionInfoTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/SubscriptionInfoTest.java @@ -394,7 +394,7 @@ public void shouldConvertTaskSetsToTaskOffsetSumMapWithOlderSubscription() { ACTIVE_TASKS, STANDBY_TASKS, "localhost:80") - .encode()); + .encode()); assertThat(info.taskOffsetSums(), is(expectedOffsetSumsMap)); } diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImplTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImplTest.java index c0dac77f867d0..9f9900865397b 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImplTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/StreamsMetricsImplTest.java @@ -136,7 +136,7 @@ public class StreamsMetricsImplTest { private final MetricName metricName2 = new MetricName(METRIC_NAME1, CLIENT_LEVEL_GROUP, DESCRIPTION2, clientLevelTags); private final MockTime time = new MockTime(0); - private final StreamsMetricsImpl streamsMetrics = new StreamsMetricsImpl(metrics, CLIENT_ID, time); + private final StreamsMetricsImpl streamsMetrics = new StreamsMetricsImpl(metrics, CLIENT_ID, time); private static MetricConfig eqMetricConfig(final MetricConfig metricConfig) { final StringBuffer message = new StringBuffer(); diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetricsTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetricsTest.java index 63a3512049f12..6fdbc89940a3e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetricsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/metrics/ThreadMetricsTest.java @@ -452,7 +452,7 @@ public void shouldAddThreadStateJmxMetric() { threadStateProvider ); } - + @Test public void shouldAddTotalBlockedTimeMetric() { diff --git a/streams/src/test/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManagerTest.java b/streams/src/test/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManagerTest.java index 2f6a2fe30d763..a2b5ae57f29c0 100644 --- a/streams/src/test/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManagerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/processor/internals/tasks/DefaultTaskManagerTest.java @@ -111,6 +111,7 @@ public void shouldAssignTaskThatCanBeProcessed() { private class AwaitingRunnable implements Runnable { private final CountDownLatch awaitDone = new CountDownLatch(1); private final AtomicBoolean shutdownRequested = new AtomicBoolean(false); + @Override public void run() { while (!shutdownRequested.get()) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/HostInfoTest.java b/streams/src/test/java/org/apache/kafka/streams/state/HostInfoTest.java index 10f7749f6a6ae..bf7de4fb7a4f7 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/HostInfoTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/HostInfoTest.java @@ -26,7 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; public class HostInfoTest { - + @Test public void shouldCreateHostInfo() { final String endPoint = "host:9090"; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/NoOpWindowStore.java b/streams/src/test/java/org/apache/kafka/streams/state/NoOpWindowStore.java index c022da839f3f4..b506620ec0b7d 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/NoOpWindowStore.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/NoOpWindowStore.java @@ -96,7 +96,7 @@ public WindowStoreIterator fetch(final Object key, final Instant timeFrom, final } @Override - public WindowStoreIterator backwardFetch(final Object key, + public WindowStoreIterator backwardFetch(final Object key, final Instant timeFrom, final Instant timeTo) throws IllegalArgumentException { return EMPTY_WINDOW_STORE_ITERATOR; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/QueryableStoreTypesWithHeadersTest.java b/streams/src/test/java/org/apache/kafka/streams/state/QueryableStoreTypesWithHeadersTest.java index e59050d912fca..cdf50aaed5a56 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/QueryableStoreTypesWithHeadersTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/QueryableStoreTypesWithHeadersTest.java @@ -34,7 +34,7 @@ public void shouldAcceptTimestampedKeyValueStoreWithHeadersForTimestampedKeyValu Stores.inMemoryKeyValueStore("test-store"), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType>> storeType = QueryableStoreTypes.timestampedKeyValueStore(); @@ -49,7 +49,7 @@ public void shouldAcceptTimestampedKeyValueStoreWithHeadersForKeyValueStoreType( Stores.inMemoryKeyValueStore("test-store"), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType> storeType = QueryableStoreTypes.keyValueStore(); @@ -64,7 +64,7 @@ public void shouldNotAcceptTimestampedKeyValueStoreWithHeadersForWindowStoreType Stores.inMemoryKeyValueStore("test-store"), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType> storeType = QueryableStoreTypes.windowStore(); @@ -83,7 +83,7 @@ public void shouldAcceptTimestampedWindowStoreWithHeadersForTimestampedWindowSto false), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType>> storeType = QueryableStoreTypes.timestampedWindowStore(); @@ -102,7 +102,7 @@ public void shouldAcceptTimestampedWindowStoreWithHeadersForWindowStoreType() { false), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType> storeType = QueryableStoreTypes.windowStore(); @@ -121,7 +121,7 @@ public void shouldNotAcceptTimestampedWindowStoreWithHeadersForKeyValueStoreType false), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType> storeType = QueryableStoreTypes.keyValueStore(); @@ -136,7 +136,7 @@ public void shouldAcceptRegularTimestampedKeyValueStoreForTimestampedKeyValueSto Stores.inMemoryKeyValueStore("test-ts-store"), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType>> storeType = QueryableStoreTypes.timestampedKeyValueStore(); @@ -170,7 +170,7 @@ public void shouldAcceptRegularTimestampedWindowStoreForTimestampedWindowStoreTy false), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType>> storeType = QueryableStoreTypes.timestampedWindowStore(); @@ -206,7 +206,7 @@ public void shouldAcceptSessionStoreWithHeadersForSessionStoreType() { Duration.ofMillis(100)), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType>> storeType = QueryableStoreTypes.sessionStore(); @@ -223,7 +223,7 @@ public void shouldAcceptRegularSessionStoreForSessionStoreType() { Duration.ofMillis(100)), Serdes.String(), Serdes.String()) - .build(); + .build(); final QueryableStoreType> storeType = QueryableStoreTypes.sessionStore(); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractColumnFamilyAccessorTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractColumnFamilyAccessorTest.java index b06ee50874661..b493c4cb521c8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractColumnFamilyAccessorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractColumnFamilyAccessorTest.java @@ -57,6 +57,7 @@ abstract class AbstractColumnFamilyAccessorTest { protected AbstractColumnFamilyAccessor accessor; abstract AbstractColumnFamilyAccessor createColumnFamilyAccessor(); + private final LongSerializer offsetSerializer = new LongSerializer(); private final StringSerializer keySerializer = new StringSerializer(); private final byte[] openValue = toBytes(1L); @@ -145,7 +146,7 @@ public void shouldWipeCommittedOffsetsOnEmptyCommit() throws RocksDBException { private byte[] toBytes(final String s) { return keySerializer.serialize("", s); } - + private byte[] toBytes(final long l) { return offsetSerializer.serialize("", l); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractDualSchemaRocksDBSegmentedBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractDualSchemaRocksDBSegmentedBytesStoreTest.java index 34405f2705c14..5bf53d6aec973 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractDualSchemaRocksDBSegmentedBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractDualSchemaRocksDBSegmentedBytesStoreTest.java @@ -94,7 +94,7 @@ public abstract class AbstractDualSchemaRocksDBSegmentedBytesStoreTest { private static final String METRICS_SCOPE = "metrics-scope"; - + private long windowSizeForTimeWindow = 500; private InternalMockProcessorContext context; private AbstractDualSchemaRocksDBSegmentedBytesStore bytesStore; @@ -116,7 +116,7 @@ enum SchemaType { SessionSchemaWithIndex, SessionSchemaWithoutIndex } - + @BeforeEach public void before() { if (getBaseSchema() instanceof TimeFirstSessionKeySchema) { @@ -1485,7 +1485,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0]), true).get(), serializeValue(50L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -1494,7 +1494,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2]), true).get(), serializeValue(100L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -1503,7 +1503,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[3]), true).get(), serializeValue(200L), headers, Optional.empty())); return records; @@ -1520,7 +1520,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0]), true).get(), serializeValue(50L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -1529,7 +1529,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2]), true).get(), serializeValue(100L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -1538,7 +1538,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[3]), true).get(), serializeValue(200L), headers, Optional.empty())); return records; @@ -1554,7 +1554,7 @@ private List> getChangelogRecordsWithTombstones() headers.add(new RecordHeader( ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position).array())); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0]), true).get(), serializeValue(50L), headers, Optional.empty())); position = position.withComponent("A", 0, 2); @@ -1562,7 +1562,7 @@ private List> getChangelogRecordsWithTombstones() headers.add(new RecordHeader( ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position).array())); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2]), true).get(), null, headers, Optional.empty())); return records; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractKeyValueStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractKeyValueStoreTest.java index 3727add492d13..63e493dc729a6 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractKeyValueStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractKeyValueStoreTest.java @@ -56,6 +56,7 @@ public abstract class AbstractKeyValueStoreTest { protected abstract KeyValueStore createKeyValueStore(final StateStoreContext context); + protected InternalMockProcessorContext context; protected KeyValueStore store; protected KeyValueStoreTestDriver driver; @@ -660,5 +661,5 @@ public void prefixScanShouldNotThrowConcurrentModificationException() { iter.next(); } } - } + } } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractRocksDBSegmentedBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractRocksDBSegmentedBytesStoreTest.java index c4ab91aac1182..33f911d209e6f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractRocksDBSegmentedBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractRocksDBSegmentedBytesStoreTest.java @@ -860,7 +860,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0])).get(), serializeValue(50L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -869,7 +869,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2])).get(), serializeValue(100L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -878,7 +878,7 @@ private List> getChangelogRecords() { ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[3])).get(), serializeValue(200L), headers, Optional.empty())); return records; @@ -895,7 +895,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0])).get(), serializeValue(50L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -904,7 +904,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2])).get(), serializeValue(100L), headers, Optional.empty())); headers.remove(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY); @@ -913,7 +913,7 @@ private List> getChangelogRecordsMultipleTopics() ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position1).array()) ); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[3])).get(), serializeValue(200L), headers, Optional.empty())); return records; @@ -929,7 +929,7 @@ private List> getChangelogRecordsWithTombstones() headers.add(new RecordHeader( ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position).array())); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[0])).get(), serializeValue(50L), headers, Optional.empty())); position = position.withComponent("A", 0, 2); @@ -937,7 +937,7 @@ private List> getChangelogRecordsWithTombstones() headers.add(new RecordHeader( ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position).array())); - records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + records.add(new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, serializeKey(new Windowed<>("a", windows[2])).get(), null, headers, Optional.empty())); return records; @@ -948,7 +948,7 @@ private List> getChangelogRecordsWithoutHeaders() records.add(new ConsumerRecord<>("", 0, 0L, serializeKey(new Windowed<>("a", windows[2])).get(), serializeValue(50L))); return records; } - + @ParameterizedTest @MethodSource("getKeySchemas") public void shouldMeasureExpiredRecords(final SegmentedBytesStore.KeySchema schema) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractSessionBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractSessionBytesStoreTest.java index 7c6c71af575b3..5f5b4fb9a89f4 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractSessionBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractSessionBytesStoreTest.java @@ -82,7 +82,7 @@ public abstract class AbstractSessionBytesStoreTest { static final long RETENTION_PERIOD = 10_000L; private static final String IN_MEMORY_STORE_NAME = "in-memory session store"; private static final String ROCK_DB_STORE_NAME = "rocksDB session store"; - + enum StoreType { RocksDBSessionStore, RocksDBSessionStoreWithHeaders, @@ -598,43 +598,43 @@ public void shouldFetchExactKeys() { new SessionWindow(0x7a00000000000000L - 2, 0x7a00000000000000L - 1)), 5L); try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("a", 0, Long.MAX_VALUE) + sessionStore.findSessions("a", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 3L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("aa", 0, Long.MAX_VALUE) + sessionStore.findSessions("aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(2L, 4L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("a", "aa", 0, Long.MAX_VALUE) + sessionStore.findSessions("a", "aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("a", "aa", 10, 0) + sessionStore.findSessions("a", "aa", 10, 0) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(2L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions(null, "aa", 0, Long.MAX_VALUE) + sessionStore.findSessions(null, "aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("a", null, 0, Long.MAX_VALUE) + sessionStore.findSessions("a", null, 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions(null, null, 0, Long.MAX_VALUE) + sessionStore.findSessions(null, null, 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } @@ -654,43 +654,43 @@ public void shouldBackwardFetchExactKeys() { new SessionWindow(0x7a00000000000000L - 2, 0x7a00000000000000L - 1)), 5L); try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("a", 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions("a", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 3L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("aa", 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions("aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(2L, 4L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("a", "aa", 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions("a", "aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("a", "aa", 10, 0) + sessionStore.backwardFindSessions("a", "aa", 10, 0) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(2L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions(null, "aa", 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions(null, "aa", 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("a", null, 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions("a", null, 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions(null, null, 0, Long.MAX_VALUE) + sessionStore.backwardFindSessions(null, null, 0, Long.MAX_VALUE) ) { assertThat(valuesToSet(iterator), equalTo(Set.of(1L, 2L, 3L, 4L, 5L))); } @@ -1026,32 +1026,32 @@ public void shouldNotFetchExpiredSessions() { sessionStore.put(new Windowed<>("r", new SessionWindow(systemTime - RETENTION_PERIOD, systemTime - RETENTION_PERIOD / 2)), 3L); sessionStore.put(new Windowed<>("p", new SessionWindow(systemTime - RETENTION_PERIOD, systemTime - RETENTION_PERIOD / 2)), 2L); try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("p", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) + sessionStore.findSessions("p", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) ) { assertEquals(Set.of(2L), valuesToSet(iterator)); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("p", systemTime - 5 * RETENTION_PERIOD, systemTime - 4 * RETENTION_PERIOD) + sessionStore.backwardFindSessions("p", systemTime - 5 * RETENTION_PERIOD, systemTime - 4 * RETENTION_PERIOD) ) { assertFalse(iterator.hasNext()); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("p", "r", systemTime - 5 * RETENTION_PERIOD, systemTime - 4 * RETENTION_PERIOD) + sessionStore.findSessions("p", "r", systemTime - 5 * RETENTION_PERIOD, systemTime - 4 * RETENTION_PERIOD) ) { assertFalse(iterator.hasNext()); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("p", "r", systemTime - RETENTION_PERIOD, systemTime - RETENTION_PERIOD / 2) + sessionStore.findSessions("p", "r", systemTime - RETENTION_PERIOD, systemTime - RETENTION_PERIOD / 2) ) { assertEquals(valuesToSet(iterator), Set.of(2L, 3L, 4L)); } try (final KeyValueIterator, Long> iterator = - sessionStore.findSessions("p", "r", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) + sessionStore.findSessions("p", "r", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) ) { assertEquals(valuesToSet(iterator), Set.of(2L, 3L, 4L)); } try (final KeyValueIterator, Long> iterator = - sessionStore.backwardFindSessions("p", "r", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) + sessionStore.backwardFindSessions("p", "r", systemTime - 2 * RETENTION_PERIOD, systemTime - RETENTION_PERIOD) ) { assertEquals(valuesToSet(iterator), Set.of(2L, 3L, 4L)); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractWindowBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractWindowBytesStoreTest.java index 56cf10aea7b0e..947c38013b622 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractWindowBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/AbstractWindowBytesStoreTest.java @@ -99,9 +99,10 @@ abstract WindowStore buildWindowStore(final long retentionPeriod, final boolean retainDuplicates, final Serde keySerde, final Serde valueSerde); + @BeforeEach protected void setup() { - + windowStore = buildWindowStore(RETENTION_PERIOD, WINDOW_SIZE, false, Serdes.Integer(), Serdes.String()); recordCollector = new MockRecordCollector(); @@ -258,7 +259,7 @@ public void testRangeAndSinglePointFetch() { @Test public void shouldGetAll() { - + putFirstBatch(windowStore, defaultStartTime, context); assertEquals( @@ -463,7 +464,7 @@ public void testFetchRange() { @Test public void testBackwardFetchRange() { - + putFirstBatch(windowStore, defaultStartTime, context); assertEquals( @@ -821,7 +822,7 @@ public void testPutSameKeyTimestamp() { @Test public void shouldCloseOpenIteratorsWhenStoreIsClosedAndNotThrowInvalidStateStoreExceptionOnHasNext() { - + windowStore.put(1, "one", 1L); windowStore.put(1, "two", 2L); windowStore.put(1, "three", 3L); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemoryKeyValueStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemoryKeyValueStoreTest.java index 7af5b68e46216..a5fc34ec1a7d2 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemoryKeyValueStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemoryKeyValueStoreTest.java @@ -363,7 +363,7 @@ public void shouldIterateOverRange() { final List results = new ArrayList<>(); try (final KeyValueIterator range = - store.range(bytesKey(String.valueOf(0)), bytesKey(String.valueOf(items)))) { + store.range(bytesKey(String.valueOf(0)), bytesKey(String.valueOf(items)))) { while (range.hasNext()) { results.add(range.next().key); } @@ -383,7 +383,7 @@ public void shouldReverseIterateOverRange() { final List results = new ArrayList<>(); try (final KeyValueIterator range = - store.reverseRange(bytesKey(String.valueOf(0)), bytesKey(String.valueOf(items)))) { + store.reverseRange(bytesKey(String.valueOf(0)), bytesKey(String.valueOf(items)))) { while (range.hasNext()) { results.add(range.next().key); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemorySessionStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemorySessionStoreTest.java index b68374f878631..808234d5c4be0 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemorySessionStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingInMemorySessionStoreTest.java @@ -312,7 +312,7 @@ public void shouldPutFetchRangeFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(keyAA, keyB, 0, 0)) { + cachingStore.findSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -320,7 +320,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyFrom case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(null, keyAA, 0, 0)) { + cachingStore.findSessions(null, keyAA, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -328,7 +328,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(keyAA, keyB, 0, 0)) { + cachingStore.findSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -336,7 +336,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyFrom and keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(null, null, 0, 0)) { + cachingStore.findSessions(null, null, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -353,7 +353,7 @@ public void shouldPutBackwardFetchRangeFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { + cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -361,7 +361,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyFrom case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(null, keyAA, 0, 0)) { + cachingStore.backwardFindSessions(null, keyAA, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -369,7 +369,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { + cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -377,7 +377,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyFrom and keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(null, null, 0, 0)) { + cachingStore.backwardFindSessions(null, null, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -454,7 +454,7 @@ public void shouldRemove() { cachingStore.remove(a); try (final KeyValueIterator, byte[]> rangeIter = - cachingStore.findSessions(keyA, 0, 0)) { + cachingStore.findSessions(keyA, 0, 0)) { assertFalse(rangeIter.hasNext()); assertNull(cachingStore.fetchSession(keyA, 0, 0)); @@ -478,7 +478,7 @@ public void shouldFetchCorrectlyAcrossSegments() { cachingStore.put(a5, "5".getBytes()); cachingStore.put(a6, "6".getBytes()); try (final KeyValueIterator, byte[]> results = - cachingStore.findSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { + cachingStore.findSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { assertEquals(a1, results.next().key); assertEquals(a2, results.next().key); assertEquals(a3, results.next().key); @@ -491,7 +491,7 @@ public void shouldFetchCorrectlyAcrossSegments() { @Test public void shouldBackwardFetchCorrectlyAcrossSegments() { - final Windowed a1 = new Windowed<>(keyA, new SessionWindow(0, 0)); + final Windowed a1 = new Windowed<>(keyA, new SessionWindow(0, 0)); final Windowed a2 = new Windowed<>(keyA, new SessionWindow(SEGMENT_INTERVAL, SEGMENT_INTERVAL)); final Windowed a3 = new Windowed<>(keyA, new SessionWindow(SEGMENT_INTERVAL * 2, SEGMENT_INTERVAL * 2)); final Windowed a4 = new Windowed<>(keyA, new SessionWindow(SEGMENT_INTERVAL * 3, SEGMENT_INTERVAL * 3)); @@ -505,7 +505,7 @@ public void shouldBackwardFetchCorrectlyAcrossSegments() { cachingStore.put(a5, "5".getBytes()); cachingStore.put(a6, "6".getBytes()); try (final KeyValueIterator, byte[]> results = - cachingStore.backwardFindSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { + cachingStore.backwardFindSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { assertEquals(a6, results.next().key); assertEquals(a5, results.next().key); assertEquals(a4, results.next().key); @@ -717,7 +717,7 @@ public void shouldReturnSameResultsForSingleKeyFindSessionsBackwardsAndEqualKeyR cachingStore.put(new Windowed<>(keyB, new SessionWindow(6, 7)), "4".getBytes()); try (final KeyValueIterator, byte[]> singleKeyIterator = - cachingStore.backwardFindSessions(keyAA, 0L, 10L); + cachingStore.backwardFindSessions(keyAA, 0L, 10L); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.backwardFindSessions(keyAA, keyAA, 0L, 10L)) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentSessionStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentSessionStoreTest.java index cbbd7ca383e6a..cae1bb22fffe7 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentSessionStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentSessionStoreTest.java @@ -128,7 +128,7 @@ public void shouldPutFetchFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> a = - cachingStore.findSessions(keyA, 0, 0); + cachingStore.findSessions(keyA, 0, 0); final KeyValueIterator, byte[]> b = cachingStore.findSessions(keyB, 0, 0)) { @@ -138,6 +138,7 @@ public void shouldPutFetchFromCache() { assertFalse(b.hasNext()); } } + @Test public void shouldMatchPositionAfterPutWithFlushListener() { cachingStore.setFlushListener(record -> { }, false); @@ -187,7 +188,7 @@ public void shouldPutFetchAllKeysFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> all = - cachingStore.fetch(keyA, keyB)) { + cachingStore.fetch(keyA, keyB)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -196,7 +197,7 @@ public void shouldPutFetchAllKeysFromCache() { // infinite keyFrom fetch try (final KeyValueIterator, byte[]> all = - cachingStore.fetch(null, keyB)) { + cachingStore.fetch(null, keyB)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -205,7 +206,7 @@ public void shouldPutFetchAllKeysFromCache() { // infinite keyTo fetch try (final KeyValueIterator, byte[]> all = - cachingStore.fetch(keyA, null)) { + cachingStore.fetch(keyA, null)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -214,7 +215,7 @@ public void shouldPutFetchAllKeysFromCache() { // infinite keyFrom and keyTo fetch try (final KeyValueIterator, byte[]> all = - cachingStore.fetch(null, null)) { + cachingStore.fetch(null, null)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -231,7 +232,7 @@ public void shouldPutBackwardFetchAllKeysFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> all = - cachingStore.backwardFetch(keyA, keyB)) { + cachingStore.backwardFetch(keyA, keyB)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -240,7 +241,7 @@ public void shouldPutBackwardFetchAllKeysFromCache() { // infinite keyFrom fetch try (final KeyValueIterator, byte[]> all = - cachingStore.backwardFetch(null, keyB)) { + cachingStore.backwardFetch(null, keyB)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -249,7 +250,7 @@ public void shouldPutBackwardFetchAllKeysFromCache() { // infinite keyTo fetch try (final KeyValueIterator, byte[]> all = - cachingStore.backwardFetch(keyA, null)) { + cachingStore.backwardFetch(keyA, null)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -258,7 +259,7 @@ public void shouldPutBackwardFetchAllKeysFromCache() { // infinite keyFrom and keyTo fetch try (final KeyValueIterator, byte[]> all = - cachingStore.backwardFetch(null, null)) { + cachingStore.backwardFetch(null, null)) { verifyWindowedKeyValue(all.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(all.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -321,7 +322,7 @@ public void shouldPutFetchRangeFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(keyAA, keyB, 0, 0)) { + cachingStore.findSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -329,7 +330,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyFrom case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(null, keyAA, 0, 0)) { + cachingStore.findSessions(null, keyAA, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -337,7 +338,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(keyAA, keyB, 0, 0)) { + cachingStore.findSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -345,7 +346,7 @@ public void shouldPutFetchRangeFromCache() { // infinite keyFrom and keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.findSessions(null, null, 0, 0)) { + cachingStore.findSessions(null, null, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); @@ -362,7 +363,7 @@ public void shouldPutBackwardFetchRangeFromCache() { assertEquals(3, cache.size()); try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { + cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -370,7 +371,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyFrom case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(null, keyAA, 0, 0)) { + cachingStore.backwardFindSessions(null, keyAA, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -378,7 +379,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { + cachingStore.backwardFindSessions(keyAA, keyB, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); assertFalse(some.hasNext()); @@ -386,7 +387,7 @@ public void shouldPutBackwardFetchRangeFromCache() { // infinite keyFrom and keyTo case try (final KeyValueIterator, byte[]> some = - cachingStore.backwardFindSessions(null, null, 0, 0)) { + cachingStore.backwardFindSessions(null, null, 0, 0)) { verifyWindowedKeyValue(some.next(), new Windowed<>(keyB, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyAA, new SessionWindow(0, 0)), "1"); verifyWindowedKeyValue(some.next(), new Windowed<>(keyA, new SessionWindow(0, 0)), "1"); @@ -438,7 +439,7 @@ public void shouldFlushItemsToStoreOnEviction() { final List, byte[]>> added = addSessionsUntilOverflow("a", "b", "c", "d"); assertEquals(added.size() - 1, cache.size()); try (final KeyValueIterator, byte[]> iterator = - cachingStore.findSessions(added.get(0).key.key(), 0, 0)) { + cachingStore.findSessions(added.get(0).key.key(), 0, 0)) { final KeyValue, byte[]> next = iterator.next(); assertEquals(added.get(0).key, next.key); assertArrayEquals(added.get(0).value, next.value); @@ -465,7 +466,7 @@ public void shouldRemove() { cachingStore.remove(a); try (final KeyValueIterator, byte[]> rangeIter = - cachingStore.findSessions(keyA, 0, 0)) { + cachingStore.findSessions(keyA, 0, 0)) { assertFalse(rangeIter.hasNext()); } @@ -490,7 +491,7 @@ public void shouldFetchCorrectlyAcrossSegments() { cachingStore.put(a5, "5".getBytes()); cachingStore.put(a6, "6".getBytes()); try (final KeyValueIterator, byte[]> results = - cachingStore.findSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { + cachingStore.findSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { assertEquals(a1, results.next().key); assertEquals(a2, results.next().key); assertEquals(a3, results.next().key); @@ -517,7 +518,7 @@ public void shouldBackwardFetchCorrectlyAcrossSegments() { cachingStore.put(a5, "5".getBytes()); cachingStore.put(a6, "6".getBytes()); try (final KeyValueIterator, byte[]> results = - cachingStore.backwardFindSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { + cachingStore.backwardFindSessions(keyA, 0, SEGMENT_INTERVAL * 5)) { assertEquals(a6, results.next().key); assertEquals(a5, results.next().key); assertEquals(a4, results.next().key); @@ -726,7 +727,7 @@ public void shouldReturnSameResultsForSingleKeyFindSessionsAndEqualKeyRangeFindS cachingStore.put(new Windowed<>(keyB, new SessionWindow(6, 7)), "4".getBytes()); try (final KeyValueIterator, byte[]> singleKeyIterator = - cachingStore.findSessions(keyAA, 0L, 10L); + cachingStore.findSessions(keyAA, 0L, 10L); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.findSessions(keyAA, keyAA, 0L, 10L)) { @@ -745,7 +746,7 @@ public void shouldReturnSameResultsForSingleKeyFindSessionsBackwardsAndEqualKeyR cachingStore.put(new Windowed<>(keyB, new SessionWindow(6, 7)), "4".getBytes()); try (final KeyValueIterator, byte[]> singleKeyIterator = - cachingStore.backwardFindSessions(keyAA, 0L, 10L); + cachingStore.backwardFindSessions(keyAA, 0L, 10L); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.backwardFindSessions(keyAA, keyAA, 0L, 10L)) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentWindowStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentWindowStoreTest.java index 29435b12f20b8..b7ae98dd912ea 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentWindowStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/CachingPersistentWindowStoreTest.java @@ -325,7 +325,7 @@ public void shouldPutFetchRangeFromCache() { cachingStore.put(bytesKey("b"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)) @@ -347,7 +347,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFrom() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -370,7 +370,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyTo() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), @@ -393,7 +393,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFromKeyTo() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -417,7 +417,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFrom() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -439,7 +439,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyTo() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -461,7 +461,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFromKeyTo() { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -530,7 +530,7 @@ public void shouldFetchAllWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = 0; i < array.length; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -542,7 +542,7 @@ public void shouldFetchAllWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 2; i <= 4; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -554,7 +554,7 @@ public void shouldFetchAllWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 5; i <= 7; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -574,7 +574,7 @@ public void shouldFetchAllBackwardWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = array.length - 1; i >= 0; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -586,7 +586,7 @@ public void shouldFetchAllBackwardWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 4; i >= 2; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -598,7 +598,7 @@ public void shouldFetchAllBackwardWithinTimestampRange() { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 7; i >= 5; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -709,7 +709,7 @@ public void shouldTakeValueFromCacheIfSameTimestampFlushedToRocks() { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "b"); assertFalse(fetch.hasNext()); } @@ -721,7 +721,7 @@ public void shouldIterateAcrossWindows() { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -734,7 +734,7 @@ public void shouldIterateBackwardAcrossWindows() { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -747,7 +747,7 @@ public void shouldIterateCacheAndStore() { bytesStore.put(WindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -760,7 +760,7 @@ public void shouldIterateBackwardCacheAndStore() { bytesStore.put(WindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -774,7 +774,7 @@ public void shouldIterateCacheAndStoreKeyRange() { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -794,7 +794,7 @@ public void shouldIterateBackwardCacheAndStoreKeyRange() { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP + WINDOW_SIZE, DEFAULT_TIMESTAMP + WINDOW_SIZE + WINDOW_SIZE)), @@ -968,7 +968,7 @@ public void shouldReturnSameResultsForSingleKeyFetchAndEqualKeyRangeBackwardFetc cachingStore.put(bytesKey("aaa"), bytesValue("0004"), 3); try (final WindowStoreIterator singleKeyIterator = - cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); + cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.backwardFetch(bytesKey("aa"), bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L))) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingWindowBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingWindowBytesStoreTest.java index fabca5e3bdb3c..7957711831e4d 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingWindowBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingWindowBytesStoreTest.java @@ -119,7 +119,7 @@ public void shouldDelegateToUnderlyingStoreWhenFetchingRange() { @SuppressWarnings({"resource", "unused"}) @Test public void shouldDelegateToUnderlyingStoreWhenBackwardFetchingRange() { - try (final KeyValueIterator, byte[]> unused = store.backwardFetch(bytesKey, bytesKey, ofEpochMilli(0), ofEpochMilli(1))) { + try (final KeyValueIterator, byte[]> unused = store.backwardFetch(bytesKey, bytesKey, ofEpochMilli(0), ofEpochMilli(1))) { verify(inner).backwardFetch(bytesKey, bytesKey, 0, 1); } } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/CompositeReadOnlyWindowStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/CompositeReadOnlyWindowStoreTest.java index 2d22e6e15a745..edd92e814cfb5 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/CompositeReadOnlyWindowStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/CompositeReadOnlyWindowStoreTest.java @@ -109,7 +109,7 @@ public void shouldBackwardFetchValuesFromWindowStore() { @Test public void shouldReturnEmptyIteratorIfNoData() { try (final WindowStoreIterator iterator = - windowStore.fetch("my-key", ofEpochMilli(0L), ofEpochMilli(25L))) { + windowStore.fetch("my-key", ofEpochMilli(0L), ofEpochMilli(25L))) { assertFalse(iterator.hasNext()); } } @@ -117,7 +117,7 @@ public void shouldReturnEmptyIteratorIfNoData() { @Test public void shouldReturnBackwardEmptyIteratorIfNoData() { try (final WindowStoreIterator iterator = - windowStore.backwardFetch("my-key", ofEpochMilli(0L), ofEpochMilli(25L))) { + windowStore.backwardFetch("my-key", ofEpochMilli(0L), ofEpochMilli(25L))) { assertFalse(iterator.hasNext()); } } @@ -254,7 +254,7 @@ public void emptyBackwardIteratorAlwaysReturnsFalse() { "foo" ); try (final WindowStoreIterator windowStoreIterator = - store.backwardFetch("key", ofEpochMilli(1), ofEpochMilli(10))) { + store.backwardFetch("key", ofEpochMilli(1), ofEpochMilli(10))) { assertFalse(windowStoreIterator.hasNext()); } @@ -271,7 +271,7 @@ public void emptyIteratorAlwaysReturnsFalse() { "foo" ); try (final WindowStoreIterator windowStoreIterator = - store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { + store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { assertFalse(windowStoreIterator.hasNext()); } @@ -304,7 +304,7 @@ public void emptyIteratorPeekNextKeyShouldThrowNoSuchElementException() { "foo" ); try (final WindowStoreIterator windowStoreIterator = - store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { + store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { assertThrows(NoSuchElementException.class, windowStoreIterator::peekNextKey); } } @@ -320,7 +320,7 @@ public void emptyIteratorNextShouldThrowNoSuchElementException() { "foo" ); try (final WindowStoreIterator windowStoreIterator = - store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { + store.fetch("key", ofEpochMilli(1), ofEpochMilli(10))) { assertThrows(NoSuchElementException.class, windowStoreIterator::next); } } @@ -336,7 +336,7 @@ public void emptyBackwardIteratorNextShouldThrowNoSuchElementException() { "foo" ); try (final WindowStoreIterator windowStoreIterator = - store.backwardFetch("key", ofEpochMilli(1), ofEpochMilli(10))) { + store.backwardFetch("key", ofEpochMilli(1), ofEpochMilli(10))) { assertThrows(NoSuchElementException.class, windowStoreIterator::next); } } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/GlobalStateStoreProviderTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/GlobalStateStoreProviderTest.java index 7d8ef6dacee33..819c60d763e3f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/GlobalStateStoreProviderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/GlobalStateStoreProviderTest.java @@ -68,7 +68,7 @@ @MockitoSettings(strictness = Strictness.STRICT_STUBS) public class GlobalStateStoreProviderTest { private final Map stores = new HashMap<>(); - private static final Map CONFIGS = mkMap(mkEntry(StreamsConfig.InternalConfig.TOPIC_PREFIX_ALTERNATIVE, "appId")); + private static final Map CONFIGS = mkMap(mkEntry(StreamsConfig.InternalConfig.TOPIC_PREFIX_ALTERNATIVE, "appId")); @BeforeEach public void before() { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemoryLRUCacheStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemoryLRUCacheStoreTest.java index 2e866bde22c65..f8a22521f3907 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemoryLRUCacheStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemoryLRUCacheStoreTest.java @@ -72,7 +72,7 @@ public void shouldUpdateValuesForExistingKeysOnPutAll() { KeyValue.pair(3, "3")); store.putAll(kvPairs); - + final List> updatedKvPairs = Arrays.asList(KeyValue.pair(1, "ONE"), KeyValue.pair(2, "TWO"), @@ -81,7 +81,7 @@ public void shouldUpdateValuesForExistingKeysOnPutAll() { store.putAll(updatedKvPairs); assertThat(store.approximateNumEntries(), equalTo(3L)); - + for (final KeyValue kvPair : updatedKvPairs) { assertThat(store.get(kvPair.key), equalTo(kvPair.value)); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemorySessionStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemorySessionStoreTest.java index eca2fa4502fe9..6486eebf813b8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemorySessionStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/InMemorySessionStoreTest.java @@ -115,7 +115,7 @@ public void shouldNotExpireFromOpenIterator() { iterator.close(); try (final KeyValueIterator, Long> it = - sessionStore.findSessions("a", "b", 0L, 20L)) { + sessionStore.findSessions("a", "b", 0L, 20L)) { assertFalse(it.hasNext()); } } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentTest.java index fa0757ac62f6d..4b1a63d10ed77 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentTest.java @@ -61,7 +61,7 @@ public void setUp() { @Test public void shouldDeleteStateDirectoryOnDestroy() throws Exception { - final KeyValueSegment segment = new KeyValueSegment("segment", "window", 0L, Position.emptyPosition(), metricsRecorder); + final KeyValueSegment segment = new KeyValueSegment("segment", "window", 0L, Position.emptyPosition(), metricsRecorder); final String directoryPath = TestUtils.tempDirectory().getAbsolutePath(); final File directory = new File(directoryPath); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentsTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentsTest.java index 4bc468d978527..5d2e33067c9cb 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/KeyValueSegmentsTest.java @@ -130,7 +130,7 @@ public void shouldCloseAllOpenSegments() { @Test public void shouldOpenExistingSegments() { - segments = new KeyValueSegments("test", METRICS_SCOPE, 4, 1); + segments = new KeyValueSegments("test", METRICS_SCOPE, 4, 1); segments.openExisting(context, -1L); segments.getOrCreateSegmentIfLive(0, context, -1L); segments.getOrCreateSegmentIfLive(1, context, -1L); @@ -140,7 +140,7 @@ public void shouldOpenExistingSegments() { // close existing. segments.close(); - segments = new KeyValueSegments("test", METRICS_SCOPE, 4, 1); + segments = new KeyValueSegments("test", METRICS_SCOPE, 4, 1); segments.openExisting(context, -1L); assertTrue(segments.segmentForTimestamp(0).isOpen()); @@ -266,7 +266,7 @@ private long updateStreamTimeAndCreateSegment(final int segment) { public void shouldUpdateSegmentFileNameFromOldDateFormatToNewFormat() throws Exception { final long segmentInterval = 60_000L; // the old segment file's naming system maxes out at 1 minute granularity. - segments = new KeyValueSegments(storeName, METRICS_SCOPE, NUM_SEGMENTS * segmentInterval, segmentInterval); + segments = new KeyValueSegments(storeName, METRICS_SCOPE, NUM_SEGMENTS * segmentInterval, segmentInterval); final String storeDirectoryPath = context.stateDir().getAbsolutePath() + File.separator + storeName; final File storeDirectory = new File(storeDirectoryPath); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/LegacyCheckpointingStateStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/LegacyCheckpointingStateStoreTest.java index 16bc126de10a5..10166c6466e6e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/LegacyCheckpointingStateStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/LegacyCheckpointingStateStoreTest.java @@ -491,7 +491,7 @@ public void shouldLogWarningInsteadOfThrowingWhenCheckpointWriteFails() throws I Utils.delete(stateDirectory.getOrCreateDirectoryForTask(taskId)); try (final LogCaptureAppender appender = - LogCaptureAppender.createAndRegister(LegacyCheckpointingStateStore.class)) { + LogCaptureAppender.createAndRegister(LegacyCheckpointingStateStore.class)) { store.checkpoint(); // should log a warning, not throw assertThat(appender.getMessages(), @@ -626,7 +626,7 @@ public void shouldLogWarningWhenMigratingToStoreThatDoesNotManageOffsets() throw // Use a raw MockKeyValueStore (managesOffsets() == false, not wrapped in LCSS) try (final LogCaptureAppender appender = - LogCaptureAppender.createAndRegister(LegacyCheckpointingStateStore.class)) { + LogCaptureAppender.createAndRegister(LegacyCheckpointingStateStore.class)) { LegacyCheckpointingStateStore.migrateLegacyOffsets( LOG_PREFIX, stateDirectory, taskId, Collections.singletonMap(partition, persistentStore)); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheKeyValueBytesStoreIteratorTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheKeyValueBytesStoreIteratorTest.java index 1a63f835639d9..ea3b31a57685a 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheKeyValueBytesStoreIteratorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheKeyValueBytesStoreIteratorTest.java @@ -41,6 +41,7 @@ public void setUp() { store = new InMemoryKeyValueStore(namespace); cache = new ThreadCache(new LogContext("testCache "), 10000L, new MockStreamsMetrics(new Metrics())); } + @Test public void shouldIterateOverRange() { final byte[][] bytes = {{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}}; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheWrappedWindowStoreIteratorTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheWrappedWindowStoreIteratorTest.java index 0675aaea48dde..3c08cf25891c6 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheWrappedWindowStoreIteratorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MergedSortedCacheWrappedWindowStoreIteratorTest.java @@ -58,7 +58,7 @@ private interface StoreKeySerializer { } private final List> windowStoreKvPairs = new ArrayList<>(); - private final ThreadCache cache = new ThreadCache(new LogContext("testCache "), 1000000L, new MockStreamsMetrics(new Metrics())); + private final ThreadCache cache = new ThreadCache(new LogContext("testCache "), 1000000L, new MockStreamsMetrics(new Metrics())); private final String namespace = "0.0-one"; private final StateSerdes stateSerdes = new StateSerdes<>("foo", Serdes.String(), Serdes.String()); private final Headers headers = new RecordHeaders(); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredSessionStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredSessionStoreTest.java index 21ae08edd8985..2d9f6220a41d7 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredSessionStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredSessionStoreTest.java @@ -119,7 +119,7 @@ public class MeteredSessionStoreTest { private InternalProcessorContext context; private Map tags; - + public void setUpWithoutContext() { mockTime = new MockTime(); store = new MeteredSessionStore<>( diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreTest.java index 6e05513ec9c7c..054c82790ecc9 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreTest.java @@ -95,7 +95,7 @@ public class MeteredTimestampedKeyValueStoreTest { private InternalProcessorContext context; private MockTime mockTime; - private static final Map CONFIGS = mkMap(mkEntry(StreamsConfig.InternalConfig.TOPIC_PREFIX_ALTERNATIVE, APPLICATION_ID)); + private static final Map CONFIGS = mkMap(mkEntry(StreamsConfig.InternalConfig.TOPIC_PREFIX_ALTERNATIVE, APPLICATION_ID)); private MeteredTimestampedKeyValueStore metered; private final KeyValue byteKeyValueTimestampPair = KeyValue.pair(KEY_BYTES, @@ -131,7 +131,7 @@ private void setUp() { when(inner.name()).thenReturn(STORE_NAME); when(context.appConfigs()).thenReturn(CONFIGS); } - + @SuppressWarnings({"unchecked", "rawtypes"}) private void setUpWithExpectSerdes() { setUp(); @@ -218,6 +218,7 @@ public void testMetrics() { STORE_NAME ))); } + @Test public void shouldWriteBytesToInnerStoreAndRecordPutMetric() { setUp(); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreWithHeadersTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreWithHeadersTest.java index f6355e7bd6af5..2d0a592e968a0 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreWithHeadersTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredTimestampedKeyValueStoreWithHeadersTest.java @@ -15,6 +15,7 @@ * limitations under the License. */ package org.apache.kafka.streams.state.internals; + import org.apache.kafka.common.MetricName; import org.apache.kafka.common.header.internals.RecordHeaders; import org.apache.kafka.common.metrics.JmxReporter; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredWindowStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredWindowStoreTest.java index 35685a9627670..8be49bf1aa0e1 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredWindowStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/MeteredWindowStoreTest.java @@ -424,7 +424,7 @@ public void shouldPassRecordHeadersToValueDeserializerWhenFlushListenerIsSet() { final RecordHeaders headers = new RecordHeaders(); headers.add(headerKey, "new".getBytes(StandardCharsets.UTF_8)); - + context.setRecordContext(new ProcessorRecordContext(TIMESTAMP, 0L, 0, "topic", headers)); metered.put(KEY, "value", TIMESTAMP); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/OffsetCheckpointTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/OffsetCheckpointTest.java index 903050c568b15..13cb48bd019d9 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/OffsetCheckpointTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/OffsetCheckpointTest.java @@ -162,7 +162,7 @@ public void shouldThrowIOExceptionWhenWritingToNotExistedFile() { final File notExistedFile = new File("/not_existed_dir/not_existed_file"); final OffsetCheckpoint checkpoint = new OffsetCheckpoint(notExistedFile); - + final IOException e = assertThrows(IOException.class, () -> checkpoint.write(offsetsToWrite)); assertThat(e.getMessage(), containsString("No such file or directory")); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java index 66e374989b5ad..f309f0dc69d34 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java @@ -256,7 +256,7 @@ private void verifyColumnFamilyOptionsMethodCall(final Method method) throws Exc } catch (final InvocationTargetException undeclaredMockMethodCall) { assertThat(undeclaredMockMethodCall.getCause(), instanceOf(AssertionError.class)); assertThat(undeclaredMockMethodCall.getCause().getMessage().trim(), - matchesPattern("Unexpected method call ColumnFamilyOptions\\." + method.getName() + "(.*)")); + matchesPattern("Unexpected method call ColumnFamilyOptions\\." + method.getName() + "(.*)")); } finally { optionsFacadeColumnFamilyOptions.close(); } @@ -340,7 +340,7 @@ public void shouldLogWarningWhenSettingWalOptions() throws Exception { try (final LogCaptureAppender appender = LogCaptureAppender.createAndRegister(RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.class)) { try (RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter adapter = - new RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter(new DBOptions(), new ColumnFamilyOptions())) { + new RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter(new DBOptions(), new ColumnFamilyOptions())) { for (final Method method : RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.class.getDeclaredMethods()) { if (walRelatedMethods.contains(method.getName())) { method.invoke(adapter, getDBOptionsParameters(method.getParameterTypes())); @@ -365,7 +365,7 @@ public void shouldLogWarningWhenSettingAtomicFlushOption() { try (final LogCaptureAppender appender = LogCaptureAppender.createAndRegister(RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter.class)) { try (RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter adapter = - new RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter(new DBOptions(), new ColumnFamilyOptions())) { + new RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter(new DBOptions(), new ColumnFamilyOptions())) { adapter.setAtomicFlush(false); final Set logMessages = appender.getEvents().stream() .filter(e -> e.getLevel().equals("WARN")) diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBRangeIteratorTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBRangeIteratorTest.java index 0ed49a3c75c27..cfcb4b9df6959 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBRangeIteratorTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBRangeIteratorTest.java @@ -49,10 +49,10 @@ public class RocksDBRangeIteratorTest { private final String key4 = "d"; private final String value = "value"; - private final Bytes key1Bytes = Bytes.wrap(key1.getBytes()); - private final Bytes key2Bytes = Bytes.wrap(key2.getBytes()); - private final Bytes key3Bytes = Bytes.wrap(key3.getBytes()); - private final Bytes key4Bytes = Bytes.wrap(key4.getBytes()); + private final Bytes key1Bytes = Bytes.wrap(key1.getBytes()); + private final Bytes key2Bytes = Bytes.wrap(key2.getBytes()); + private final Bytes key3Bytes = Bytes.wrap(key3.getBytes()); + private final Bytes key4Bytes = Bytes.wrap(key4.getBytes()); private final byte[] valueBytes = value.getBytes(); @Test @@ -224,8 +224,8 @@ public void shouldReturnNoKeysWhenLastKeyIsLargerThanLargestKeyInStateStoreRever // key range in state store: [c-f] final String from = "g"; final String to = "h"; - final Bytes fromBytes = Bytes.wrap(from.getBytes()); - final Bytes toBytes = Bytes.wrap(to.getBytes()); + final Bytes fromBytes = Bytes.wrap(from.getBytes()); + final Bytes toBytes = Bytes.wrap(to.getBytes()); final RocksIterator rocksIterator = mock(RocksIterator.class); doNothing().when(rocksIterator).seekForPrev(toBytes.get()); when(rocksIterator.isValid()) diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java index 7734646a5c29e..00286edfb3e21 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTest.java @@ -387,9 +387,9 @@ public void shouldThrowWhenUserProvidesNewBlockBasedTableFormatConfig() { ProcessorStateException.class, () -> rocksDBStore.openDB(context.appConfigs(), context.stateDir()), "The used block-based table format configuration does not expose the " + - "block cache. Use the BlockBasedTableConfig instance provided by Options#tableFormatConfig() to configure " + - "the block-based table format of RocksDB. Do not provide a new instance of BlockBasedTableConfig to " + - "the RocksDB options." + "block cache. Use the BlockBasedTableConfig instance provided by Options#tableFormatConfig() to configure " + + "the block-based table format of RocksDB. Do not provide a new instance of BlockBasedTableConfig to " + + "the RocksDB options." ); } @@ -1295,7 +1295,7 @@ private ConsumerRecord createChangelogRecord( headers.add(new RecordHeader( ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY, PositionSerde.serialize(position).array())); - return new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, + return new ConsumerRecord<>("", 0, 0L, RecordBatch.NO_TIMESTAMP, TimestampType.NO_TIMESTAMP_TYPE, -1, -1, key, value, headers, Optional.empty()); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedWindowSchemaWithIndexSegmentedBytesStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedWindowSchemaWithIndexSegmentedBytesStoreTest.java index daa17407ba3ba..96ea20f758d97 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedWindowSchemaWithIndexSegmentedBytesStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedWindowSchemaWithIndexSegmentedBytesStoreTest.java @@ -17,7 +17,7 @@ package org.apache.kafka.streams.state.internals; public class RocksDBTimeOrderedWindowSchemaWithIndexSegmentedBytesStoreTest extends AbstractDualSchemaRocksDBSegmentedBytesStoreTest { - + @Override SchemaType schemaType() { return SchemaType.WindowSchemaWithIndex; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreTest.java index 20cc89d45afaa..d10cd4a30b720 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBTimestampedStoreTest.java @@ -330,7 +330,7 @@ private void iteratorsShouldNotMigrateData() { } try (final KeyValueIterator it = - rocksDBStore.reverseRange(new Bytes("key2".getBytes()), new Bytes("key5".getBytes()))) { + rocksDBStore.reverseRange(new Bytes("key2".getBytes()), new Bytes("key5".getBytes()))) { { final KeyValue keyValue = it.next(); assertArrayEquals("key5".getBytes(), keyValue.key.get()); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBVersionedStoreSegmentValueFormatterTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBVersionedStoreSegmentValueFormatterTest.java index 7a4f0937ee547..52929606f64da 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBVersionedStoreSegmentValueFormatterTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBVersionedStoreSegmentValueFormatterTest.java @@ -39,6 +39,7 @@ public class RocksDBVersionedStoreSegmentValueFormatterTest { private static final long INSERT_VALID_FROM_TIMESTAMP = 10L; private static final long INSERT_VALID_TO_TIMESTAMP = 13L; private static final byte[] INSERT_VALUE = "new".getBytes(); + /** * Non-exceptional scenarios which are expected to occur during regular store operation. */ @@ -59,7 +60,7 @@ private static Stream nonExceptionalData() { Arguments.of(new TestCase("records with empty bytes (e, e, r)", 10, new TestRecord(new byte[0], 8), new TestRecord(new byte[0], 2), new TestRecord("foo".getBytes(), 1))) ); } - + /** * These scenarios may only be hit in the event of an earlier exception, such as failure to * write to a particular segment store of {@link RocksDBVersionedStore} resulting in an diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/SegmentedCacheFunctionTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/SegmentedCacheFunctionTest.java index 09bf80b72d09d..48fe6b767728f 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/SegmentedCacheFunctionTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/SegmentedCacheFunctionTest.java @@ -50,7 +50,7 @@ class SegmentedCacheFunctionTest { .putLong(END_TIMESTAMP / SEGMENT_INTERVAL) .put(THE_SESSION_KEY.get()).array() ); - + private SegmentedCacheFunction createCacheFunction(final SegmentedBytesStore.KeySchema keySchema) { return new SegmentedCacheFunction(keySchema, SEGMENT_INTERVAL); } @@ -75,7 +75,7 @@ private static Stream provideKeysForBoundaryChecks() { final Bytes lowerKeyInSameSegmentWindow = WindowKeySchema.toStoreKeyBinary(new byte[]{0xA, 0xB, 0xB}, START_TIMESTAMP - 1, 0); final Bytes lowerKeyInSameSegmentSession = toStoreKeyBinary(new byte[]{0xA, 0xB, 0xB}, END_TIMESTAMP - 1, START_TIMESTAMP + 1); - + return Stream.of( Arguments.of(THE_WINDOW_KEY, new WindowKeySchema(), sameKeyInPriorSegmentWindow, lowerKeyInSameSegmentWindow), Arguments.of(THE_SESSION_KEY, new SessionKeySchema(), sameKeyInPriorSegmentSession, lowerKeyInSameSegmentSession) diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/SessionKeySchemaTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/SessionKeySchemaTest.java index 47e6436dde1b6..224cba73f9e6e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/SessionKeySchemaTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/SessionKeySchemaTest.java @@ -194,7 +194,7 @@ public void shouldFetchAllKeysUsingNullKeys(final SchemaType type) { final List results = getValues(hasNextCondition); assertThat(results, equalTo(asList(1, 2, 3, 4, 5, 6))); } - + @ParameterizedTest @EnumSource(SchemaType.class) public void testUpperBoundWithLargeTimestamps(final SchemaType type) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQueryUtilsTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQueryUtilsTest.java index f2c9ea42c10be..8e9a14d387b16 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQueryUtilsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQueryUtilsTest.java @@ -54,7 +54,7 @@ public void shouldReturnErrorOnNullContext() { assertThat( queryResult.getFailureMessage(), is("The store is not initialized yet, so it is not yet up to the bound" - + " PositionBound{position=Position{position={topic={0=1}}}}") + + " PositionBound{position=Position{position={topic={0=1}}}}") ); } @@ -80,8 +80,8 @@ public void shouldReturnErrorOnBoundViolation() { assertThat( queryResult.getFailureMessage(), is("For store partition 0, the current position Position{position={topic={0=0}}}" - + " is not yet up to the bound" - + " PositionBound{position=Position{position={topic={0=1}}}}") + + " is not yet up to the bound" + + " PositionBound{position=Position{position={topic={0=1}}}}") ); } } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProviderTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProviderTest.java index 59cd8ff8ef1c7..f1f3aea53955e 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProviderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProviderTest.java @@ -236,7 +236,7 @@ public void shouldFindKeyValueStores() { final List> kvStores = provider.stores(StoreQueryParameters.fromNameAndType("kv-store", QueryableStoreTypes.keyValueStore())); assertEquals(2, kvStores.size()); - for (final ReadOnlyKeyValueStore store: kvStores) { + for (final ReadOnlyKeyValueStore store : kvStores) { assertThat(store, instanceOf(ReadOnlyKeyValueStore.class)); assertThat(store, not(instanceOf(TimestampedKeyValueStore.class))); assertThat(store, not(instanceOf(TimestampedKeyValueStoreWithHeaders.class))); @@ -249,7 +249,7 @@ public void shouldFindTimestampedKeyValueStores() { final List>> tkvStores = provider.stores(StoreQueryParameters.fromNameAndType("timestamped-kv-store", QueryableStoreTypes.timestampedKeyValueStore())); assertEquals(2, tkvStores.size()); - for (final ReadOnlyKeyValueStore> store: tkvStores) { + for (final ReadOnlyKeyValueStore> store : tkvStores) { assertThat(store, instanceOf(ReadOnlyKeyValueStore.class)); assertThat(store, instanceOf(TimestampedKeyValueStore.class)); assertThat(store, not(instanceOf(TimestampedKeyValueStoreWithHeaders.class))); @@ -280,7 +280,7 @@ public void shouldFindTimestampedKeyValueStoresAsKeyValueStores() { final List> tkvStores = provider.stores(StoreQueryParameters.fromNameAndType("timestamped-kv-store", QueryableStoreTypes.keyValueStore())); assertEquals(2, tkvStores.size()); - for (final ReadOnlyKeyValueStore store: tkvStores) { + for (final ReadOnlyKeyValueStore store : tkvStores) { assertThat(store, instanceOf(ReadOnlyKeyValueStore.class)); assertThat(store, not(instanceOf(TimestampedKeyValueStore.class))); assertThat(store, not(instanceOf(TimestampedKeyValueStoreWithHeaders.class))); @@ -293,7 +293,7 @@ public void shouldFindWindowStores() { final List> windowStores = provider.stores(StoreQueryParameters.fromNameAndType("window-store", QueryableStoreTypes.windowStore())); assertEquals(2, windowStores.size()); - for (final ReadOnlyWindowStore store: windowStores) { + for (final ReadOnlyWindowStore store : windowStores) { assertThat(store, instanceOf(ReadOnlyWindowStore.class)); assertThat(store, not(instanceOf(TimestampedWindowStore.class))); assertThat(store, not(instanceOf(TimestampedWindowStoreWithHeaders.class))); @@ -306,7 +306,7 @@ public void shouldFindTimestampedWindowStores() { final List>> windowStores = provider.stores(StoreQueryParameters.fromNameAndType("timestamped-window-store", QueryableStoreTypes.timestampedWindowStore())); assertEquals(2, windowStores.size()); - for (final ReadOnlyWindowStore> store: windowStores) { + for (final ReadOnlyWindowStore> store : windowStores) { assertThat(store, instanceOf(ReadOnlyWindowStore.class)); assertThat(store, instanceOf(TimestampedWindowStore.class)); assertThat(store, not(instanceOf(TimestampedWindowStoreWithHeaders.class))); @@ -337,7 +337,7 @@ public void shouldFindTimestampedWindowStoresAsWindowStore() { final List> windowStores = provider.stores(StoreQueryParameters.fromNameAndType("timestamped-window-store", QueryableStoreTypes.windowStore())); assertEquals(2, windowStores.size()); - for (final ReadOnlyWindowStore store: windowStores) { + for (final ReadOnlyWindowStore store : windowStores) { assertThat(store, instanceOf(ReadOnlyWindowStore.class)); assertThat(store, not(instanceOf(TimestampedWindowStore.class))); assertThat(store, not(instanceOf(TimestampedWindowStoreWithHeaders.class))); @@ -350,7 +350,7 @@ public void shouldFindSessionStores() { final List> sessionStores = provider.stores(StoreQueryParameters.fromNameAndType("session-store", QueryableStoreTypes.sessionStore())); assertEquals(2, sessionStores.size()); - for (final ReadOnlySessionStore store: sessionStores) { + for (final ReadOnlySessionStore store : sessionStores) { assertThat(store, instanceOf(ReadOnlySessionStore.class)); assertThat(store, not(instanceOf(SessionStoreWithHeaders.class))); } @@ -607,7 +607,7 @@ public void shouldFindSessionStoresWithHeaders() { final List>> sessionStores = provider.stores(StoreQueryParameters.fromNameAndType("session-store-with-headers", QueryableStoreTypes.sessionStoreWithHeaders())); assertEquals(2, sessionStores.size()); - for (final ReadOnlySessionStore> store: sessionStores) { + for (final ReadOnlySessionStore> store : sessionStores) { assertThat(store, instanceOf(ReadOnlySessionStore.class)); assertThat(store, instanceOf(SessionStoreWithHeaders.class)); } @@ -619,7 +619,7 @@ public void shouldFindSessionStoresWithHeadersAsSessionStore() { final List> sessionStores = provider.stores(StoreQueryParameters.fromNameAndType("session-store-with-headers", QueryableStoreTypes.sessionStore())); assertEquals(2, sessionStores.size()); - for (final ReadOnlySessionStore store: sessionStores) { + for (final ReadOnlySessionStore store : sessionStores) { assertThat(store, instanceOf(ReadOnlySessionStoreFacade.class)); assertThat(store, not(instanceOf(SessionStoreWithHeaders.class))); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/ThreadCacheTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/ThreadCacheTest.java index 93272fbaa0964..fa32122825618 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/ThreadCacheTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/ThreadCacheTest.java @@ -467,7 +467,7 @@ public void shouldNotFlushCleanEntriesForNamespace() { received.add(dirtyEntry.key().get()); } }); - final List toInsert = Arrays.asList(new byte[]{0}, new byte[]{1}, new byte[]{2}); + final List toInsert = Arrays.asList(new byte[]{0}, new byte[]{1}, new byte[]{2}); for (final byte[] bytes : toInsert) { cache.put(namespace1, Bytes.wrap(bytes), cleanEntry(bytes)); } @@ -534,6 +534,7 @@ public void shouldNotForwardCleanEntryOnEviction() { cache.put(namespace, Bytes.wrap(new byte[]{1}), cleanEntry(new byte[]{0})); assertEquals(0, received.size()); } + @Test public void shouldPutIfAbsent() { final ThreadCache cache = new ThreadCache(logContext, 100000, new MockStreamsMetrics(new Metrics())); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingPersistentWindowStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingPersistentWindowStoreTest.java index 8a0c95279b5ee..d4d1c81316761 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingPersistentWindowStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedCachingPersistentWindowStoreTest.java @@ -351,7 +351,7 @@ public void shouldPutFetchRangeFromCache(final boolean hasIndex) { cachingStore.put(bytesKey("b"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)) @@ -376,7 +376,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFrom(final boolean hasIndex) { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -401,7 +401,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyTo(final boolean hasIndex) { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), @@ -426,7 +426,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFromKeyTo(final boolean hasInd cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -452,7 +452,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFrom(final boolean has cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -476,7 +476,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyTo(final boolean hasIn cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -500,7 +500,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFromKeyTo(final boolea cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -575,7 +575,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = 0; i < array.length; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -587,7 +587,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 2; i <= 4; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -599,7 +599,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 5; i <= 7; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -621,7 +621,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = array.length - 1; i >= 0; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -633,7 +633,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 4; i >= 2; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -645,7 +645,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 7; i >= 5; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -770,7 +770,7 @@ public void shouldTakeValueFromCacheIfSameTimestampFlushedToRocks(final boolean cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "b"); assertFalse(fetch.hasNext()); } @@ -784,7 +784,7 @@ public void shouldIterateAcrossWindows(final boolean hasIndex) { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -799,7 +799,7 @@ public void shouldIterateBackwardAcrossWindows(final boolean hasIndex) { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -814,7 +814,7 @@ public void shouldIterateCacheAndStore(final boolean hasIndex) { bytesStore.put(TimeFirstWindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -829,7 +829,7 @@ public void shouldIterateBackwardCacheAndStore(final boolean hasIndex) { bytesStore.put(TimeFirstWindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -845,7 +845,7 @@ public void shouldIterateCacheAndStoreKeyRange(final boolean hasIndex) { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -867,7 +867,7 @@ public void shouldIterateBackwardCacheAndStoreKeyRange(final boolean hasIndex) { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP + WINDOW_SIZE, DEFAULT_TIMESTAMP + WINDOW_SIZE + WINDOW_SIZE)), @@ -1146,7 +1146,7 @@ public void shouldReturnSameResultsForSingleKeyFetchAndEqualKeyRangeBackwardFetc cachingStore.put(bytesKey("aaa"), bytesValue("0004"), 3); try (final WindowStoreIterator singleKeyIterator = - cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); + cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.backwardFetch(bytesKey("aa"), bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L))) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedWindowStoreTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedWindowStoreTest.java index 472e55105cfea..d8c19ba49ddf1 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedWindowStoreTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimeOrderedWindowStoreTest.java @@ -357,7 +357,7 @@ public void shouldPutFetchRangeFromCache(final boolean hasIndex) { cachingStore.put(bytesKey("b"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("a"), bytesKey("b"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)) @@ -382,7 +382,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFrom(final boolean hasIndex) { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, bytesKey("d"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -407,7 +407,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyTo(final boolean hasIndex) { cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(bytesKey("b"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), @@ -432,7 +432,7 @@ public void shouldPutFetchRangeFromCacheForNullKeyFromKeyTo(final boolean hasInd cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.fetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("a"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -458,7 +458,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFrom(final boolean has cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, bytesKey("c"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("c"), new TimeWindow(DEFAULT_TIMESTAMP + 10L, DEFAULT_TIMESTAMP + 10L + WINDOW_SIZE)), new Windowed<>(bytesKey("b"), new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -482,7 +482,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyTo(final boolean hasIn cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(bytesKey("c"), null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -506,7 +506,7 @@ public void shouldPutBackwardFetchRangeFromCacheForNullKeyFromKeyTo(final boolea cachingStore.put(bytesKey("e"), bytesValue("e"), DEFAULT_TIMESTAMP + 20L); try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { + cachingStore.backwardFetch(null, null, ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + 20L))) { final List> expectedKeys = Arrays.asList( new Windowed<>(bytesKey("e"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), new Windowed<>(bytesKey("d"), new TimeWindow(DEFAULT_TIMESTAMP + 20L, DEFAULT_TIMESTAMP + 20L + WINDOW_SIZE)), @@ -581,7 +581,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = 0; i < array.length; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -593,7 +593,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.fetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 2; i <= 4; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -605,7 +605,7 @@ public void shouldFetchAllWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.fetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 5; i <= 7; i++) { final String str = array[i]; verifyWindowedKeyValue( @@ -627,7 +627,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator = - cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(0), ofEpochMilli(7))) { for (int i = array.length - 1; i >= 0; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -639,7 +639,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator1 = - cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { + cachingStore.backwardFetchAll(ofEpochMilli(2), ofEpochMilli(4))) { for (int i = 4; i >= 2; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -651,7 +651,7 @@ public void shouldFetchAllBackwardWithinTimestampRange(final boolean hasIndex) { } try (final KeyValueIterator, byte[]> iterator2 = - cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { + cachingStore.backwardFetchAll(ofEpochMilli(5), ofEpochMilli(7))) { for (int i = 7; i >= 5; i--) { final String str = array[i]; verifyWindowedKeyValue( @@ -776,7 +776,7 @@ public void shouldTakeValueFromCacheIfSameTimestampFlushedToRocks(final boolean cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "b"); assertFalse(fetch.hasNext()); } @@ -790,7 +790,7 @@ public void shouldIterateAcrossWindows(final boolean hasIndex) { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -805,7 +805,7 @@ public void shouldIterateBackwardAcrossWindows(final boolean hasIndex) { cachingStore.put(bytesKey("1"), bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -820,7 +820,7 @@ public void shouldIterateCacheAndStore(final boolean hasIndex) { bytesStore.put(TimeFirstWindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); assertFalse(fetch.hasNext()); @@ -835,7 +835,7 @@ public void shouldIterateBackwardCacheAndStore(final boolean hasIndex) { bytesStore.put(TimeFirstWindowKeySchema.toStoreKeyBinary(key, DEFAULT_TIMESTAMP, 0), "a".getBytes()); cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final WindowStoreIterator fetch = - cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(bytesKey("1"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP + WINDOW_SIZE, "b"); verifyKeyValue(fetch.next(), DEFAULT_TIMESTAMP, "a"); assertFalse(fetch.hasNext()); @@ -851,7 +851,7 @@ public void shouldIterateCacheAndStoreKeyRange(final boolean hasIndex) { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.fetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP, DEFAULT_TIMESTAMP + WINDOW_SIZE)), @@ -873,7 +873,7 @@ public void shouldIterateBackwardCacheAndStoreKeyRange(final boolean hasIndex) { cachingStore.put(key, bytesValue("b"), DEFAULT_TIMESTAMP + WINDOW_SIZE); try (final KeyValueIterator, byte[]> fetchRange = - cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { + cachingStore.backwardFetch(key, bytesKey("2"), ofEpochMilli(DEFAULT_TIMESTAMP), ofEpochMilli(DEFAULT_TIMESTAMP + WINDOW_SIZE))) { verifyWindowedKeyValue( fetchRange.next(), new Windowed<>(key, new TimeWindow(DEFAULT_TIMESTAMP + WINDOW_SIZE, DEFAULT_TIMESTAMP + WINDOW_SIZE + WINDOW_SIZE)), @@ -1152,7 +1152,7 @@ public void shouldReturnSameResultsForSingleKeyFetchAndEqualKeyRangeBackwardFetc cachingStore.put(bytesKey("aaa"), bytesValue("0004"), 3); try (final WindowStoreIterator singleKeyIterator = - cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); + cachingStore.backwardFetch(bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L)); final KeyValueIterator, byte[]> keyRangeIterator = cachingStore.backwardFetch(bytesKey("aa"), bytesKey("aa"), Instant.ofEpochMilli(0L), Instant.ofEpochMilli(5L))) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedKeyValueStoreBuilderWithHeadersTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedKeyValueStoreBuilderWithHeadersTest.java index 3c150da4f3d36..c06ed0af8e3d9 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedKeyValueStoreBuilderWithHeadersTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedKeyValueStoreBuilderWithHeadersTest.java @@ -542,7 +542,7 @@ private TimestampedKeyValueStoreWithHeaders headersStoreMaybeWit Serdes.String(), new MockTime() ); - + final TimestampedKeyValueStoreWithHeaders store; if (cachingEnabled) { store = builder.withLoggingDisabled() diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedWindowStoreBuilderTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedWindowStoreBuilderTest.java index c403614e2b7af..1c900a9c89ffa 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedWindowStoreBuilderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/TimestampedWindowStoreBuilderTest.java @@ -82,7 +82,7 @@ public void setUp(final String storeName) { when(supplier.get()).thenReturn(inner); setUpWithoutInner(storeName); } - + @ValueSource(strings = {TIMESTAMP_STORE_NAME, TIMEORDERED_STORE_NAME}) @ParameterizedTest public void shouldHaveMeteredStoreAsOuterStore(final String storeName) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/UtilsTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/UtilsTest.java index 1d08e89899659..6f33d12129fba 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/UtilsTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/UtilsTest.java @@ -91,7 +91,7 @@ public void shouldExtractRawValueWithEmptyHeaders() { } @ParameterizedTest - @ValueSource(strings = { VALUE_STR, "" }) + @ValueSource(strings = {VALUE_STR, ""}) public void testRawTimestampedValue(final String valueStr) { final byte[] value = valueStr.getBytes(StandardCharsets.UTF_8); final byte[] headers = headersOf(HEADERS); @@ -157,7 +157,7 @@ public void testEmptyHeadersAndTimestamp() { } @ParameterizedTest - @ValueSource(bytes = { 0x10, 0x11 }) + @ValueSource(bytes = {0x10, 0x11}) public void testEmptyHeadersAndTimestampWithInvalidHeaderSizes(final byte invalidSize) { final byte[] invalid = new byte[MIN_SIZE]; invalid[0] = invalidSize; // header size @@ -170,7 +170,7 @@ public void testReadBytes() { assertThrows(SerializationException.class, () -> readBytes(buf, -1)); assertThrows(SerializationException.class, () -> readBytes(buf, VALUE.length + 1)); - + assertEquals('t', readBytes(buf, 1)[0]); assertEquals('e', readBytes(buf, 1)[0]); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowKeySchemaTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowKeySchemaTest.java index 54b6b0f710da4..d923a58dfc39a 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowKeySchemaTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowKeySchemaTest.java @@ -204,7 +204,7 @@ public void testHasNextConditionUsingNullKeys(final SchemaType type) { assertThat(results, equalTo(asList(1, 2, 3, 4, 5, 6))); } } - + @EnumSource(SchemaType.class) @ParameterizedTest public void testUpperBoundWithLargeTimestamps(final SchemaType type) { @@ -549,7 +549,7 @@ public void shouldExtractBytesKeyFromBinary(final SchemaType type) { final BiFunction> fromStoreBytesKey = getFromStorageKey(); assertEquals(windowedBytesKey, fromStoreBytesKey.apply(serialized.get(), endTime - startTime)); } - + @EnumSource(SchemaType.class) @ParameterizedTest public void shouldConvertFromNonPrefixWindowKey(final SchemaType type) { diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreBuilderTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreBuilderTest.java index 29105d42b8e9a..8695b2ce19eee 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreBuilderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreBuilderTest.java @@ -140,7 +140,7 @@ public void shouldDisableCachingWithRetainDuplicates() { Serdes.String(), new MockTime() ).withCachingEnabled(); - + builder.build(); assertFalse(((AbstractStoreBuilder>) builder).enableCaching); diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreFetchTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreFetchTest.java index 08391465a5f0c..6390942bd9523 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreFetchTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/WindowStoreFetchTest.java @@ -87,9 +87,9 @@ private enum StoreType { InMemory, RocksDB, Timed } private String innerLowBetween; private String innerHighBetween; - public void setup(final StoreType storeType, - final boolean enableLogging, - final boolean enableCaching, + public void setup(final StoreType storeType, + final boolean enableLogging, + final boolean enableCaching, final boolean forward) { this.storeType = storeType; this.enableLogging = enableLogging; diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/WrappingStoreProviderTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/WrappingStoreProviderTest.java index ab868b672d8a6..f68f3b83191d0 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/WrappingStoreProviderTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/WrappingStoreProviderTest.java @@ -74,7 +74,7 @@ public void shouldFindWindowStores() { wrappingStoreProvider.setStoreQueryParameters(StoreQueryParameters.fromNameAndType("window", windowStore())); final List> windowStores = - wrappingStoreProvider.stores("window", windowStore()); + wrappingStoreProvider.stores("window", windowStore()); assertEquals(2, windowStores.size()); } diff --git a/streams/src/test/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTriggerTest.java b/streams/src/test/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTriggerTest.java index bc436254dfa33..f735643b4d66a 100644 --- a/streams/src/test/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTriggerTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTriggerTest.java @@ -71,7 +71,7 @@ public void shouldTriggerAddedMetricsRecorders() { public void shouldThrowIfRecorderToAddHasBeenAlreadyAdded() { when(recorder1.storeName()).thenReturn(STORE_NAME1); when(recorder1.taskId()).thenReturn(TASK_ID1); - + recordingTrigger.addMetricsRecorder(recorder1); assertThrows( IllegalStateException.class, diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTest.java index ecd2068f5fd09..ad3dfb9d033b8 100644 --- a/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTest.java @@ -610,7 +610,7 @@ public static Topology getTopology() { (key, value) -> new KeyValue<>(value.getArticleId(), (short) 1), Grouped.with(Serdes.Integer(), Serdes.Short()) ) - .count(); + .count(); articles .leftJoin( @@ -706,7 +706,7 @@ public static boolean verifySync(final String broker, final Instant deadline) th Stream.concat( articlePartitions.stream().map(p -> new TopicPartition(p.topic(), p.partition())), augmentedArticlePartitions.stream().map(p -> new TopicPartition(p.topic(), p.partition())) - ), + ), Stream.concat( commentPartitions.stream().map(p -> new TopicPartition(p.topic(), p.partition())), augmentedCommentPartitions.stream().map(p -> new TopicPartition(p.topic(), p.partition())) @@ -856,7 +856,7 @@ static boolean verifySync(final boolean logResults, "Mismatched comments size between augmented comments (size " + consumedAugmentedComments.size() + ") and consumed comments (size " + - consumedComments.size() + ")", + consumedComments.size() + ")", consumedAugmentedComments.size() == consumedComments.size() ); diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTestTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTestTest.java index bbe7d2dad0fdf..13477cf40e687 100644 --- a/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTestTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/tests/RelationalSmokeTestTest.java @@ -39,7 +39,7 @@ public class RelationalSmokeTestTest extends SmokeTestUtil { @Test public void verifySmokeTestLogic() { try (final TopologyTestDriver driver = - new TopologyTestDriver(RelationalSmokeTest.App.getTopology(), + new TopologyTestDriver(RelationalSmokeTest.App.getTopology(), RelationalSmokeTest.App.getConfig( "nothing:0", "test", diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java b/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java index 0ebfc0f1cfb4c..4ff6755fcdc97 100644 --- a/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java +++ b/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java @@ -54,7 +54,7 @@ public static void main(final String[] args) throws Exception { final String inputTopic = (String) (Objects.requireNonNull(streamsProperties.remove("input.topic"))); final KStream dataStream = builder.stream(inputTopic); - dataStream.peek((k, v) -> System.out.printf("PROCESSED key=%s value=%s%n", k, v)); + dataStream.peek((k, v) -> System.out.printf("PROCESSED key=%s value=%s%n", k, v)); final Properties config = new Properties(); config.setProperty(StreamsConfig.APPLICATION_ID_CONFIG, TEST_NAME); diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java index ccdddf815e0ed..dec61c3217bfe 100644 --- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java @@ -95,6 +95,7 @@ public static void main(final String[] args) throws IOException { builder.stream(Collections.singletonList(SOURCE_TOPIC_1), Consumed.with(stringSerde, stringSerde)) .peek(new ForeachAction<>() { int messagesProcessed = 0; + @Override public void apply(final String key, final String value) { System.out.println("received key " + key + " and value " + value); diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java index df14bb9a0d629..99d96d14dd91b 100644 --- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java +++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java @@ -63,7 +63,7 @@ public static void main(final String[] args) throws IOException { System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG); Exit.exit(1); } - + streamsProperties.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 100L); streamsProperties.put(StreamsConfig.NUM_STANDBY_REPLICAS_CONFIG, 1); streamsProperties.put(StreamsConfig.STATESTORE_CACHE_MAX_BYTES_CONFIG, 0); diff --git a/streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java b/streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java index 5f19662c0f0e1..93bc8ff2d2bfb 100644 --- a/streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java +++ b/streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java @@ -68,7 +68,7 @@ protected Map getNumPartitions(final Set topics, final Set tempUnknownTopics) { final Map partitions = new HashMap<>(); for (final String topic : topics) { - partitions.put(topic, restoreConsumer.partitionsFor(topic) == null ? null : restoreConsumer.partitionsFor(topic).size()); + partitions.put(topic, restoreConsumer.partitionsFor(topic) == null ? null : restoreConsumer.partitionsFor(topic).size()); } return partitions; diff --git a/streams/test-utils/src/main/java/org/apache/kafka/streams/TopologyTestDriver.java b/streams/test-utils/src/main/java/org/apache/kafka/streams/TopologyTestDriver.java index f9a85d83b0386..414d55c8a4818 100644 --- a/streams/test-utils/src/main/java/org/apache/kafka/streams/TopologyTestDriver.java +++ b/streams/test-utils/src/main/java/org/apache/kafka/streams/TopologyTestDriver.java @@ -372,10 +372,10 @@ private static void logIfTaskIdleEnabled(final StreamsConfig streamsConfig) { final Long taskIdleTime = streamsConfig.getLong(StreamsConfig.MAX_TASK_IDLE_MS_CONFIG); if (taskIdleTime > 0) { log.info("Detected {} config in use with TopologyTestDriver (set to {}ms)." + - " This means you might need to use TopologyTestDriver#advanceWallClockTime()" + - " or enqueue records on all partitions to allow Steams to make progress." + - " TopologyTestDriver will log a message each time it cannot process enqueued" + - " records due to {}.", + " This means you might need to use TopologyTestDriver#advanceWallClockTime()" + + " or enqueue records on all partitions to allow Steams to make progress." + + " TopologyTestDriver will log a message each time it cannot process enqueued" + + " records due to {}.", StreamsConfig.MAX_TASK_IDLE_MS_CONFIG, taskIdleTime, StreamsConfig.MAX_TASK_IDLE_MS_CONFIG); @@ -450,7 +450,7 @@ private void setupGlobalTask(final Time mockWallClockTime, @SuppressWarnings("deprecation") final boolean globalEnabled = streamsConfig.getBoolean(StreamsConfig.PROCESSING_EXCEPTION_HANDLER_GLOBAL_ENABLED_CONFIG); - final ProcessingExceptionHandler processingExceptionHandler = + final ProcessingExceptionHandler processingExceptionHandler = globalEnabled ? streamsConfig.processingExceptionHandler() : null; globalStateTask = new GlobalStateUpdateTask( @@ -525,7 +525,7 @@ private void setupTask(final StreamsConfig streamsConfig, ); task.initializeIfNeeded(); task.completeRestoration(noOpResetter -> { }); - for (final TopicPartition tp: task.inputPartitions()) { + for (final TopicPartition tp : task.inputPartitions()) { task.updateNextOffsets(tp, new OffsetAndMetadata(0, Optional.empty(), "")); } } else { @@ -609,9 +609,9 @@ private void completeAllProcessableWork() { } if (task.hasRecordsQueued()) { log.info("Due to the {} configuration, there are currently some records" + - " that cannot be processed. Advancing wall-clock time or" + - " enqueuing records on the empty topics will allow" + - " Streams to process more.", + " that cannot be processed. Advancing wall-clock time or" + + " enqueuing records on the empty topics will allow" + + " Streams to process more.", StreamsConfig.MAX_TASK_IDLE_MS_CONFIG); } } @@ -732,8 +732,8 @@ private Queue> getRecordsQueue(final String topic final Queue> outputRecords = outputRecordsByTopic.get(topicName); if (outputRecords == null && !processorTopology.sinkTopics().contains(topicName)) { log.warn("Unrecognized topic: {}, this can occur if dynamic routing is used and no output has been " - + "sent to this topic yet. If not using a TopicNameExtractor, check that the output topic " - + "is correct.", topicName); + + "sent to this topic yet. If not using a TopicNameExtractor, check that the output topic " + + "is correct.", topicName); } return outputRecords; } @@ -1300,7 +1300,7 @@ public void close() { completeAllProcessableWork(); if (task != null && task.hasRecordsQueued()) { log.warn("Found some records that cannot be processed due to the" + - " {} configuration during TopologyTestDriver#close().", + " {} configuration during TopologyTestDriver#close().", StreamsConfig.MAX_TASK_IDLE_MS_CONFIG); } producer.close(); diff --git a/streams/test-utils/src/main/java/org/apache/kafka/streams/processor/api/MockProcessorContext.java b/streams/test-utils/src/main/java/org/apache/kafka/streams/processor/api/MockProcessorContext.java index d44647526a839..7fa86b163259d 100644 --- a/streams/test-utils/src/main/java/org/apache/kafka/streams/processor/api/MockProcessorContext.java +++ b/streams/test-utils/src/main/java/org/apache/kafka/streams/processor/api/MockProcessorContext.java @@ -514,6 +514,7 @@ public MockContext() { (StreamsMetricsImpl) MockProcessorContext.this.metrics(), new ThreadCache(new LogContext(), 0, (StreamsMetricsImpl) MockProcessorContext.this.metrics())); } + @Override public String applicationId() { return MockProcessorContext.this.applicationId(); @@ -577,49 +578,65 @@ public Map appConfigsWithPrefix(final String prefix) { @SuppressWarnings("rawtypes") @Override public void forward(final Record record, final String childName) { } + @SuppressWarnings("rawtypes") @Override public void forward(final Record record) { } + @SuppressWarnings("rawtypes") @Override public void forward(final FixedKeyRecord record, final String childName) { } + @SuppressWarnings("rawtypes") @Override public void forward(final FixedKeyRecord record) { } + @Override public Cancellable schedule(final Duration interval, final PunctuationType type, final Punctuator callback) { return null; } + @Override public Cancellable schedule(final Instant startTime, final Duration interval, final PunctuationType type, final Punctuator callback) { return null; } + @Override public void commit() { } + @Override public long currentStreamTimeMs() { return 0; } + @Override public void forward(final Object key, final Object value, final To to) { } + @Override public void forward(final Object key, final Object value) { } + @Override public StateStore getStateStore(final String name) { return null; } + @Override public void transitionToActive(final StreamTask streamTask, final RecordCollector recordCollector, final ThreadCache newCache) { } + @Override public void transitionToStandby(final ThreadCache newCache) { } + @Override public void registerCacheFlushListener(final String namespace, final ThreadCache.DirtyEntryFlushListener listener) { } + @Override public void logChange(final String storeName, final Bytes key, final byte[] value, final long timestamp, final Headers headers, final Position position) { } + @Override public String changelogFor(final String storeName) { return "changelog"; } + @Override protected StateManager stateManager() { return null; diff --git a/streams/test-utils/src/main/java/org/apache/kafka/streams/test/TestRecord.java b/streams/test-utils/src/main/java/org/apache/kafka/streams/test/TestRecord.java index 63f692106ee01..c853f1b1edb58 100644 --- a/streams/test-utils/src/main/java/org/apache/kafka/streams/test/TestRecord.java +++ b/streams/test-utils/src/main/java/org/apache/kafka/streams/test/TestRecord.java @@ -100,7 +100,7 @@ public TestRecord(final K key, final V value, final Headers headers) { this.headers = new RecordHeaders(headers); this.recordTime = null; } - + /** * Creates a record. * diff --git a/streams/test-utils/src/test/java/org/apache/kafka/streams/TopologyTestDriverTest.java b/streams/test-utils/src/test/java/org/apache/kafka/streams/TopologyTestDriverTest.java index c8651c50ec6cb..9c2f4d11ed28d 100644 --- a/streams/test-utils/src/test/java/org/apache/kafka/streams/TopologyTestDriverTest.java +++ b/streams/test-utils/src/test/java/org/apache/kafka/streams/TopologyTestDriverTest.java @@ -166,11 +166,11 @@ private static final class TTDTestRecord { @Override public String toString() { return "key: " + key + - ", value: " + value + - ", timestamp: " + timestamp + - ", offset: " + offset + - ", topic: " + topic + - ", num.headers: " + (headers == null ? "null" : headers.toArray().length); + ", value: " + value + + ", timestamp: " + timestamp + + ", offset: " + offset + + ", topic: " + topic + + ", num.headers: " + (headers == null ? "null" : headers.toArray().length); } @Override @@ -1644,9 +1644,9 @@ private Topology setupMultipleSourcesPatternTopology(final Pattern... sourceTopi @Test public void shouldProcessFromSourcesThatMatchMultiplePattern() { - final Pattern pattern2Source1 = Pattern.compile("source-topic-\\d"); - final Pattern pattern2Source2 = Pattern.compile("source-topic-[A-Z]"); - final String consumerTopic2 = "source-topic-Z"; + final Pattern pattern2Source1 = Pattern.compile("source-topic-\\d"); + final Pattern pattern2Source2 = Pattern.compile("source-topic-[A-Z]"); + final String consumerTopic2 = "source-topic-Z"; final TestRecord consumerRecord2 = new TestRecord<>(key2, value2, null, timestamp2); diff --git a/streams/test-utils/src/test/java/org/apache/kafka/streams/test/MockProcessorContextAPITest.java b/streams/test-utils/src/test/java/org/apache/kafka/streams/test/MockProcessorContextAPITest.java index 1fb6ca9312360..28c9ea8222b00 100644 --- a/streams/test-utils/src/test/java/org/apache/kafka/streams/test/MockProcessorContextAPITest.java +++ b/streams/test-utils/src/test/java/org/apache/kafka/streams/test/MockProcessorContextAPITest.java @@ -245,54 +245,71 @@ public void process(final Record record) { @SuppressWarnings("rawtypes") @Override public void forward(final Record record, final String childName) { } + @SuppressWarnings("rawtypes") @Override public void forward(final Record record) { } + @SuppressWarnings("rawtypes") @Override public void forward(final FixedKeyRecord record, final String childName) { } + @SuppressWarnings("rawtypes") @Override public void forward(final FixedKeyRecord record) { } + @Override public Cancellable schedule(final Duration interval, final PunctuationType type, final Punctuator callback) { return null; } + @Override public Cancellable schedule(final Instant startTime, final Duration interval, final PunctuationType type, final Punctuator callback) { return null; } + @Override public void commit() { } + @Override public long currentStreamTimeMs() { return 0; } + @Override public void forward(final Object key, final Object value, final To to) { } + @Override public void forward(final Object key, final Object value) { } + @SuppressWarnings("unchecked") @Override public StateStore getStateStore(final String name) { return null; } + @Override public void transitionToActive(final StreamTask streamTask, final RecordCollector recordCollector, final ThreadCache newCache) { } + @Override public void transitionToStandby(final ThreadCache newCache) { } + @Override public void registerCacheFlushListener(final String namespace, final ThreadCache.DirtyEntryFlushListener listener) { } + @Override public void logChange(final String storeName, final Bytes key, final byte[] value, final long timestamp, final Headers headers, final Position position) { } + @Override protected StateManager stateManager() { return null; } + @Override public String changelogFor(final String storeName) { return "changelog"; } + @Override public void register(final StateStore store, final StateRestoreCallback stateRestoreCallback) { context.getStateStoreContext().register(store, stateRestoreCallback); diff --git a/streams/test-utils/src/test/java/org/apache/kafka/streams/test/TestRecordTest.java b/streams/test-utils/src/test/java/org/apache/kafka/streams/test/TestRecordTest.java index ad3b1a2a20a43..d1c595dd6e284 100644 --- a/streams/test-utils/src/test/java/org/apache/kafka/streams/test/TestRecordTest.java +++ b/streams/test-utils/src/test/java/org/apache/kafka/streams/test/TestRecordTest.java @@ -138,7 +138,7 @@ public void testPartialConstructorEquals() { @Test public void testInvalidRecords() { assertThrows(IllegalArgumentException.class, - () -> new TestRecord<>(key, value, headers, -1L)); + () -> new TestRecord<>(key, value, headers, -1L)); } @Test diff --git a/streams/upgrade-system-tests-0110/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-0110/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index 25685bb42ea20..d7d98e38b0e7f 100644 --- a/streams/upgrade-system-tests-0110/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-0110/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -50,7 +50,7 @@ public static void main(final String[] args) throws Exception { final String sourceTopic = config.getProperty("source.topic", "source"); final String sinkTopic = config.getProperty("sink.topic", "sink"); final int reportInterval = Integer.parseInt(config.getProperty("report.interval", "100")); - final String upgradePhase = config.getProperty("upgrade.phase", ""); + final String upgradePhase = config.getProperty("upgrade.phase", ""); final KStreamBuilder builder = new KStreamBuilder(); @@ -65,8 +65,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ); + }); upgradeStream.to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder, config); diff --git a/streams/upgrade-system-tests-10/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-10/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index c66aae3b61414..55efa8b111db3 100644 --- a/streams/upgrade-system-tests-10/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-10/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -59,7 +59,7 @@ public static void main(final String[] args) throws Exception { final String sinkTopic = streamsProperties.getProperty("sink.topic", "sink"); final String taskDelimiter = streamsProperties.getProperty("task.delimiter", "#"); final int reportInterval = Integer.parseInt(streamsProperties.getProperty("report.interval", "100")); - final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); + final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); final StreamsBuilder builder = new StreamsBuilder(); @@ -74,8 +74,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); @@ -123,6 +122,7 @@ private static void addTasksToBuilder(final List tasks, final StringBuil builder.setLength(builder.length() - 1); } } + private static void getTasks(final Set taskMetadata, final List taskList) { for (final TaskMetadata task : taskMetadata) { diff --git a/streams/upgrade-system-tests-11/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-11/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index 55e07f1e39473..0f961d8971d88 100644 --- a/streams/upgrade-system-tests-11/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-11/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -59,7 +59,7 @@ public static void main(final String[] args) throws Exception { final String sinkTopic = streamsProperties.getProperty("sink.topic", "sink"); final String taskDelimiter = streamsProperties.getProperty("task.delimiter", "#"); final int reportInterval = Integer.parseInt(streamsProperties.getProperty("report.interval", "100")); - final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); + final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); final StreamsBuilder builder = new StreamsBuilder(); @@ -74,8 +74,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); @@ -123,6 +122,7 @@ private static void addTasksToBuilder(final List tasks, final StringBuil builder.setLength(builder.length() - 1); } } + private static void getTasks(final Set taskMetadata, final List taskList) { for (final TaskMetadata task : taskMetadata) { diff --git a/streams/upgrade-system-tests-20/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-20/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index 0b7fcc4820733..f9d93651e6d1b 100644 --- a/streams/upgrade-system-tests-20/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-20/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -59,7 +59,7 @@ public static void main(final String[] args) throws Exception { final String sinkTopic = streamsProperties.getProperty("sink.topic", "sink"); final String taskDelimiter = streamsProperties.getProperty("task.delimiter", "#"); final int reportInterval = Integer.parseInt(streamsProperties.getProperty("report.interval", "100")); - final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); + final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); final StreamsBuilder builder = new StreamsBuilder(); @@ -74,8 +74,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); @@ -123,6 +122,7 @@ private static void addTasksToBuilder(final List tasks, final StringBuil builder.setLength(builder.length() - 1); } } + private static void getTasks(final Set taskMetadata, final List taskList) { for (final TaskMetadata task : taskMetadata) { diff --git a/streams/upgrade-system-tests-21/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-21/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index b430607a096d4..60d8d3884ed7b 100644 --- a/streams/upgrade-system-tests-21/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-21/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -59,7 +59,7 @@ public static void main(final String[] args) throws Exception { final String sinkTopic = streamsProperties.getProperty("sink.topic", "sink"); final String taskDelimiter = streamsProperties.getProperty("task.delimiter", "#"); final int reportInterval = Integer.parseInt(streamsProperties.getProperty("report.interval", "100")); - final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); + final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); final StreamsBuilder builder = new StreamsBuilder(); @@ -74,8 +74,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); @@ -123,6 +122,7 @@ private static void addTasksToBuilder(final List tasks, final StringBuil builder.setLength(builder.length() - 1); } } + private static void getTasks(final Set taskMetadata, final List taskList) { for (final TaskMetadata task : taskMetadata) { diff --git a/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index b430607a096d4..60d8d3884ed7b 100644 --- a/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -59,7 +59,7 @@ public static void main(final String[] args) throws Exception { final String sinkTopic = streamsProperties.getProperty("sink.topic", "sink"); final String taskDelimiter = streamsProperties.getProperty("task.delimiter", "#"); final int reportInterval = Integer.parseInt(streamsProperties.getProperty("report.interval", "100")); - final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); + final String upgradePhase = streamsProperties.getProperty("upgrade.phase", ""); final StreamsBuilder builder = new StreamsBuilder(); @@ -74,8 +74,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); @@ -123,6 +122,7 @@ private static void addTasksToBuilder(final List tasks, final StringBuil builder.setLength(builder.length() - 1); } } + private static void getTasks(final Set taskMetadata, final List taskList) { for (final TaskMetadata task : taskMetadata) { diff --git a/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java b/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java index 8dfdd954d48a3..5f135d2f60b8e 100644 --- a/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java +++ b/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeToCooperativeRebalanceTest.java @@ -72,8 +72,7 @@ public void apply(final String key, final String value) { System.out.flush(); } } - } - ).to(sinkTopic); + }).to(sinkTopic); final KafkaStreams streams = new KafkaStreams(builder.build(), config); diff --git a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterConfigProperty.java b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterConfigProperty.java index 5c1de212b8ed8..1db4f80cc6025 100644 --- a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterConfigProperty.java +++ b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterConfigProperty.java @@ -44,7 +44,9 @@ * If the id doesn't correspond to any broker/controller server, throw IllegalArgumentException * @return the controller/broker id */ - int id() default -1; + int id()default -1; + String key(); + String value(); } diff --git a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterFeature.java b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterFeature.java index ab1893ab05b4d..201a71f60c7c8 100644 --- a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterFeature.java +++ b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterFeature.java @@ -29,5 +29,6 @@ @Retention(RetentionPolicy.RUNTIME) public @interface ClusterFeature { Feature feature(); + short version(); } diff --git a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTest.java b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTest.java index af11eaaeea2e2..16a1f37110f04 100644 --- a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTest.java +++ b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTest.java @@ -40,22 +40,35 @@ @Timeout(60) @Tag("integration") public @interface ClusterTest { - Type[] types() default {}; - int brokers() default 0; - int controllers() default 0; - int disksPerBroker() default 0; - AutoStart autoStart() default AutoStart.DEFAULT; + Type[] types()default {}; + + int brokers()default 0; + + int controllers()default 0; + + int disksPerBroker()default 0; + + AutoStart autoStart()default AutoStart.DEFAULT; + // The broker/controller listener name and SecurityProtocol configurations must // be kept in sync with the default values in TestKitNodes, as many tests // directly use TestKitNodes without relying on the ClusterTest annotation. - SecurityProtocol brokerSecurityProtocol() default SecurityProtocol.PLAINTEXT; - String brokerListener() default DEFAULT_BROKER_LISTENER_NAME; - SecurityProtocol controllerSecurityProtocol() default SecurityProtocol.PLAINTEXT; - String controllerListener() default DEFAULT_CONTROLLER_LISTENER_NAME; - MetadataVersion metadataVersion() default MetadataVersion.IBP_4_4_IV0; - ClusterConfigProperty[] serverProperties() default {}; + SecurityProtocol brokerSecurityProtocol()default SecurityProtocol.PLAINTEXT; + + String brokerListener()default DEFAULT_BROKER_LISTENER_NAME; + + SecurityProtocol controllerSecurityProtocol()default SecurityProtocol.PLAINTEXT; + + String controllerListener()default DEFAULT_CONTROLLER_LISTENER_NAME; + + MetadataVersion metadataVersion()default MetadataVersion.IBP_4_4_IV0; + + ClusterConfigProperty[] serverProperties()default {}; + // users can add tags that they want to display in test - String[] tags() default {}; - ClusterFeature[] features() default {}; - boolean standalone() default false; + String[] tags()default {}; + + ClusterFeature[] features()default {}; + + boolean standalone()default false; } diff --git a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTestDefaults.java b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTestDefaults.java index 5712189ff0f27..02de4ac50633e 100644 --- a/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTestDefaults.java +++ b/test-common/test-common-internal-api/src/main/java/org/apache/kafka/common/test/api/ClusterTestDefaults.java @@ -34,11 +34,16 @@ @Target({TYPE}) @Retention(RUNTIME) public @interface ClusterTestDefaults { - Type[] types() default {Type.KRAFT, Type.CO_KRAFT}; - int brokers() default 1; - int controllers() default 1; - int disksPerBroker() default 1; - boolean autoStart() default true; + Type[] types()default {Type.KRAFT, Type.CO_KRAFT}; + + int brokers()default 1; + + int controllers()default 1; + + int disksPerBroker()default 1; + + boolean autoStart()default true; + // Set default server properties for all @ClusterTest(s) - ClusterConfigProperty[] serverProperties() default {}; + ClusterConfigProperty[] serverProperties()default {}; } diff --git a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/ClusterInstance.java b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/ClusterInstance.java index 0fda41dfc9dce..27112477beca6 100644 --- a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/ClusterInstance.java +++ b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/ClusterInstance.java @@ -362,11 +362,11 @@ default void waitTopicCreation(String topic, int partitions) throws InterruptedE ensureConsistentMetadata(brokers, controllers().values()); } - default void ensureConsistentMetadata() throws InterruptedException { + default void ensureConsistentMetadata() throws InterruptedException { ensureConsistentMetadata(aliveBrokers().values(), controllers().values()); } - default void ensureConsistentMetadata(Collection brokers, Collection controllers) throws InterruptedException { + default void ensureConsistentMetadata(Collection brokers, Collection controllers) throws InterruptedException { for (ControllerServer controller : controllers) { long controllerOffset = controller.raftManager().raftLog().endOffset().offset() - 1; TestUtils.waitForCondition( diff --git a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java index b152a3b1dbef3..f4e1db8ed01cd 100644 --- a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java +++ b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java @@ -245,7 +245,7 @@ private Optional maybeSetupJaasFile() throws Exception { new JaasUtils.JaasSection(JaasUtils.KAFKA_SERVER_CONTEXT_NAME, List.of( JaasModule.plainLoginModule( - JaasUtils.KAFKA_PLAIN_ADMIN, + JaasUtils.KAFKA_PLAIN_ADMIN, JaasUtils.KAFKA_PLAIN_ADMIN_PASSWORD, true, Map.of( @@ -449,11 +449,11 @@ public void format() throws Exception { futures.add(executorService.submit(() -> formatNode(broker.sharedServer().metaPropsEnsemble()))); } } - for (Future future: futures) { + for (Future future : futures) { future.get(); } } catch (Exception e) { - for (Future future: futures) { + for (Future future : futures) { future.cancel(true); } throw e; @@ -532,11 +532,11 @@ public void startup() throws ExecutionException, InterruptedException { for (BrokerServer broker : brokers.values()) { futures.add(executorService.submit(broker::startup)); } - for (Future future: futures) { + for (Future future : futures) { future.get(); } } catch (Exception e) { - for (Future future: futures) { + for (Future future : futures) { future.cancel(true); } throw e; @@ -748,7 +748,7 @@ private void waitForAllFutures(List>> futureEntries) private void waitForAllThreads() throws InterruptedException { TestUtils.waitForCondition(() -> Thread.getAllStackTraces().keySet() - .stream().noneMatch(t -> threadFactory.getThreadIds().contains(t.getId())), + .stream().noneMatch(t -> threadFactory.getThreadIds().contains(t.getId())), "Failed to wait for all threads to shut down."); } } diff --git a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockController.java b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockController.java index 371228ca8c94a..3b533acd1b40b 100644 --- a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockController.java +++ b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockController.java @@ -359,7 +359,7 @@ public CompletableFuture> incrementalAlterConfigs( ) { Map results = new HashMap<>(); for (Entry>> entry : - configChanges.entrySet()) { + configChanges.entrySet()) { ConfigResource resource = entry.getKey(); results.put(resource, incrementalAlterResource(resource, entry.getValue(), validateOnly)); } diff --git a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestKitNodes.java b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestKitNodes.java index 30c597915c15e..3500c39d80d80 100644 --- a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestKitNodes.java +++ b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestKitNodes.java @@ -70,6 +70,7 @@ public Builder() { public Builder(BootstrapMetadata bootstrapMetadata) { this.bootstrapMetadata = bootstrapMetadata; } + // The broker and controller listener name and SecurityProtocol configurations must // be kept in sync with the default values in ClusterTest. private ListenerName brokerListenerName = ListenerName.normalised(TestKitDefaults.DEFAULT_BROKER_LISTENER_NAME); diff --git a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java index 4449145c0b50a..9cf397f199909 100644 --- a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java +++ b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java @@ -42,7 +42,7 @@ class TestUtils { /* A consistent random number generator to make tests repeatable */ public static final Random SEEDED_RANDOM = new Random(192348092834L); - + public static final String LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static final String DIGITS = "0123456789"; public static final String LETTERS_AND_DIGITS = LETTERS + DIGITS; diff --git a/test-common/test-common-util/src/main/java/org/apache/kafka/common/test/api/Flaky.java b/test-common/test-common-util/src/main/java/org/apache/kafka/common/test/api/Flaky.java index e2ab15176fa8b..e6189d354a675 100644 --- a/test-common/test-common-util/src/main/java/org/apache/kafka/common/test/api/Flaky.java +++ b/test-common/test-common-util/src/main/java/org/apache/kafka/common/test/api/Flaky.java @@ -36,5 +36,5 @@ /** * Optional comment describing the reason. */ - String comment() default ""; + String comment()default ""; } diff --git a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java index 71e180331aeb6..2053adf269f8b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java +++ b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java @@ -297,7 +297,7 @@ void testAdminClient() throws Throwable { throw e.getCause(); } }, - () -> createTopicsResultTest(client, Set.of("newtopic")) + () -> createTopicsResultTest(client, Set.of("newtopic")) ); while (true) { diff --git a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java index 0554258783765..035023d7c4e40 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java @@ -223,7 +223,7 @@ public static final class ClientMetricsCommandOptions extends CommandDefaultOpti private final ArgumentAcceptingOptionSpec matchOpt; private final ArgumentAcceptingOptionSpec metricsOpt; - + public ClientMetricsCommandOptions(String[] args) { super(args); bootstrapServerOpt = parser.accepts("bootstrap-server", "REQUIRED: The Kafka server to connect to.") @@ -369,7 +369,7 @@ public void checkArgs() { CommandLineUtils.checkInvalidArgs(parser, options, deleteOpt, generateNameOpt, intervalOpt, matchOpt, metricsOpt); CommandLineUtils.checkInvalidArgs(parser, options, describeOpt, generateNameOpt, intervalOpt, matchOpt, metricsOpt); CommandLineUtils.checkInvalidArgs(parser, options, listOpt, nameOpt, generateNameOpt, intervalOpt, matchOpt, metricsOpt); - + boolean isNamePresent = has(nameOpt); if (has(alterOpt)) { diff --git a/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java b/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java index 3706b90380bf2..c1cf1639f516b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java @@ -637,7 +637,7 @@ private static List getResourceConfig(Admin adminClient, String ent ConfigResource configResource = new ConfigResource(configResourceType, entityName); DescribeConfigsOptions describeOptions = new DescribeConfigsOptions().includeSynonyms(includeSynonyms); Map configs = adminClient.describeConfigs(Collections.singleton(configResource), describeOptions) - .all().get(30, TimeUnit.SECONDS); + .all().get(30, TimeUnit.SECONDS); return configs.get(configResource).entries().stream() .filter(entry -> configSourceFilter.isEmpty() || entry.source() == configSourceFilter.get()) diff --git a/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java b/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java index aa0d8c77982e6..8f12c3f39c26e 100644 --- a/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java @@ -265,11 +265,11 @@ public boolean hasDescribeOpt() { } public long maxLifeTime() { - return options.valueOf(maxLifeTimeOpt); + return options.valueOf(maxLifeTimeOpt); } public long renewTimePeriod() { - return options.valueOf(renewTimePeriodOpt); + return options.valueOf(renewTimePeriodOpt); } public long expiryTimePeriod() { @@ -279,7 +279,7 @@ public long expiryTimePeriod() { public String hmac() { return options.valueOf(hmacOpt); } - + public void checkArgs() { // check required args CommandLineUtils.checkRequiredArgs(parser, options, bootstrapServerOpt, commandConfigOpt); diff --git a/tools/src/main/java/org/apache/kafka/tools/DumpLogSegments.java b/tools/src/main/java/org/apache/kafka/tools/DumpLogSegments.java index df4077060f6a1..1fdf61d618b27 100644 --- a/tools/src/main/java/org/apache/kafka/tools/DumpLogSegments.java +++ b/tools/src/main/java/org/apache/kafka/tools/DumpLogSegments.java @@ -631,6 +631,7 @@ private String prepareValue(ApiMessage message, short version) { } protected abstract JsonNode keyAsJson(ApiMessage message); + protected abstract JsonNode valueAsJson(ApiMessage message, short version); } diff --git a/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java b/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java index f35ab1936ff9e..5138e67bb2fd2 100644 --- a/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java +++ b/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java @@ -186,10 +186,10 @@ private static void validateHeaders(KafkaConsumer consumer, Iter if (!record.headers().iterator().hasNext()) { commitAndThrow(consumer, "Expected message headers but received none"); } - + Iterator
sentIterator = sentHeaders.iterator(); Iterator
receivedIterator = record.headers().iterator(); - + while (sentIterator.hasNext() && receivedIterator.hasNext()) { Header sentHeader = sentIterator.next(); Header receivedHeader = receivedIterator.next(); @@ -200,7 +200,7 @@ private static void validateHeaders(KafkaConsumer consumer, Iter "] did not match the message header sent [" + sentHeader.key() + ":" + sentValueStr + "]"); } } - + if (sentIterator.hasNext() || receivedIterator.hasNext()) { commitAndThrow(consumer, "Header count mismatch between sent and received messages"); } @@ -314,11 +314,11 @@ static String[] convertLegacyArgsIfNeeded(String[] args) throws Exception { return args; } - boolean hasRequiredNamedArgs = Arrays.stream(args).anyMatch(arg -> - arg.equals("--bootstrap-server") || - arg.equals("--topic") || - arg.equals("--num-records") || - arg.equals("--producer-acks") || + boolean hasRequiredNamedArgs = Arrays.stream(args).anyMatch(arg -> + arg.equals("--bootstrap-server") || + arg.equals("--topic") || + arg.equals("--num-records") || + arg.equals("--producer-acks") || arg.equals("--record-size")); if (hasRequiredNamedArgs) { return args; diff --git a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java index a9883b78b273a..6c5f7e9ec1fdd 100644 --- a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java @@ -450,7 +450,7 @@ private static void update(String op, Admin admin, Map up }); int numFailures = 0; - for (Map.Entry> feature: errors.entrySet()) { + for (Map.Entry> feature : errors.entrySet()) { short level = updates.get(feature.getKey()).maxVersionLevel(); Optional maybeThrowable = feature.getValue(); if (maybeThrowable != null && maybeThrowable.isPresent()) { diff --git a/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java b/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java index b76b1cc0e542d..2db1841e69a23 100644 --- a/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java @@ -233,7 +233,7 @@ private static Set toTopicPartition(JsonValue partitionsList) th partitions.add(new TopicPartition(topic, partition)); } - Set duplicatePartitions = partitions.stream() + Set duplicatePartitions = partitions.stream() .filter(i -> Collections.frequency(partitions, i) > 1) .collect(Collectors.toSet()); @@ -255,6 +255,7 @@ static class LeaderElectionCommandOptions extends CommandDefaultOptions { private final ArgumentAcceptingOptionSpec partition; private final OptionSpecBuilder allTopicPartitions; private final ArgumentAcceptingOptionSpec electionType; + public LeaderElectionCommandOptions(String[] args) { super(args); bootstrapServer = parser diff --git a/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java b/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java index 78aea46357c14..e859ed1a42927 100644 --- a/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java +++ b/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java @@ -87,14 +87,14 @@ public class LogCompactionTester { public static class Options { public final OptionSpec numMessagesOpt; - public final OptionSpec messageCompressionOpt; + public final OptionSpec messageCompressionOpt; public final OptionSpec compressionLevelOpt; public final OptionSpec numDupsOpt; - public final OptionSpec brokerOpt; + public final OptionSpec brokerOpt; public final OptionSpec topicsOpt; public final OptionSpec percentDeletesOpt; public final OptionSpec sleepSecsOpt; - public final OptionSpec helpOpt; + public final OptionSpec helpOpt; public Options(OptionParser parser) { numMessagesOpt = parser @@ -372,7 +372,7 @@ private static BufferedReader externalSort(File file) throws IOException { "sort", "--key=1,2", "--stable", "--buffer-size=20%", "--temporary-directory=" + tempDir.toString(), file.getAbsolutePath()); builder.redirectError(ProcessBuilder.Redirect.INHERIT); - + Process process; try { process = builder.start(); @@ -412,7 +412,7 @@ private static Path produceMessages(String brokerUrl, Set topics, long m producerProps.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, String.valueOf(Long.MAX_VALUE)); producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerUrl); producerProps.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, compressionType.name); - + if (compressionLevel != null) { switch (compressionType) { case GZIP -> producerProps.put(ProducerConfig.COMPRESSION_GZIP_LEVEL_CONFIG, compressionLevel); diff --git a/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java b/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java index d6cb07222c44c..592bdef8c3094 100644 --- a/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java @@ -107,11 +107,11 @@ private static List> fromReplicasInfoToPrintableRepresentati return replicasInfo.entrySet().stream().map(entry -> { TopicPartition topicPartition = entry.getKey(); return new HashMap() {{ - put("partition", topicPartition.toString()); - put("size", entry.getValue().size()); - put("offsetLag", entry.getValue().offsetLag()); - put("isFuture", entry.getValue().isFuture()); - }}; + put("partition", topicPartition.toString()); + put("size", entry.getValue().size()); + put("offsetLag", entry.getValue().offsetLag()); + put("isFuture", entry.getValue().isFuture()); + }}; }).collect(Collectors.toList()); } @@ -119,30 +119,30 @@ private static List> fromLogDirInfosToPrintableRepresentatio return logDirInfos.entrySet().stream().map(entry -> { String logDir = entry.getKey(); return new HashMap() {{ - put("logDir", logDir); - put("error", entry.getValue().error() != null ? entry.getValue().error().getClass().getName() : null); - put("partitions", fromReplicasInfoToPrintableRepresentation( + put("logDir", logDir); + put("error", entry.getValue().error() != null ? entry.getValue().error().getClass().getName() : null); + put("partitions", fromReplicasInfoToPrintableRepresentation( entry.getValue().replicaInfos().entrySet().stream().filter(entry -> { TopicPartition topicPartition = entry.getKey(); return topicSet.isEmpty() || topicSet.contains(topicPartition.topic()); }).collect(Collectors.toMap(Entry::getKey, Entry::getValue)) )); - }}; + }}; }).collect(Collectors.toList()); } private static String formatAsJson(Map> logDirInfosByBroker, Set topicSet) throws JsonProcessingException { return new ObjectMapper().writeValueAsString(new HashMap() {{ - put("version", 1); - put("brokers", logDirInfosByBroker.entrySet().stream().map(entry -> { + put("version", 1); + put("brokers", logDirInfosByBroker.entrySet().stream().map(entry -> { int broker = entry.getKey(); Map logDirInfos = entry.getValue(); return new HashMap() {{ - put("broker", broker); - put("logDirs", fromLogDirInfosToPrintableRepresentation(logDirInfos, topicSet)); - }}; + put("broker", broker); + put("logDirs", fromLogDirInfosToPrintableRepresentation(logDirInfos, topicSet)); + }}; }).collect(Collectors.toList())); - }}); + }}); } private static Admin createAdminClient(LogDirsCommandOptions options) throws IOException { diff --git a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java index 2b36e960d7fd5..2231c89408b0d 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java +++ b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java @@ -208,7 +208,7 @@ static List readPayloadFile(String payloadFilePath, String payloadDelimi if (payloadFilePath != null) { Path path = Paths.get(payloadFilePath); System.out.println("Reading payloads from: " + path.toAbsolutePath()); - if (Files.notExists(path) || Files.size(path) == 0) { + if (Files.notExists(path) || Files.size(path) == 0) { throw new IllegalArgumentException("File does not exist or empty file provided."); } diff --git a/tools/src/main/java/org/apache/kafka/tools/PushHttpMetricsReporter.java b/tools/src/main/java/org/apache/kafka/tools/PushHttpMetricsReporter.java index 9b423b7894777..3692f6c665d62 100644 --- a/tools/src/main/java/org/apache/kafka/tools/PushHttpMetricsReporter.java +++ b/tools/src/main/java/org/apache/kafka/tools/PushHttpMetricsReporter.java @@ -240,18 +240,18 @@ static String readResponse(InputStream is) { } } - private record MetricsReport(@JsonProperty("client") MetricClientInfo client, + private record MetricsReport(@JsonProperty("client") MetricClientInfo client, @JsonProperty("metrics") Collection metrics) { } - private record MetricClientInfo(@JsonProperty("host") String host, - @JsonProperty("client_id") String clientId, + private record MetricClientInfo(@JsonProperty("host") String host, + @JsonProperty("client_id") String clientId, @JsonProperty("time") long time) { } - private record MetricValue(@JsonProperty("name") String name, - @JsonProperty("group") String group, - @JsonProperty("tags") Map tags, + private record MetricValue(@JsonProperty("name") String name, + @JsonProperty("group") String group, + @JsonProperty("tags") Map tags, @JsonProperty("value") Object value) { } diff --git a/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java b/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java index 54bf8e928742a..3badf48678f1d 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java +++ b/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java @@ -665,9 +665,9 @@ private static class ReplicaFetcherBlockingSend { time, "replica-fetcher", new HashMap() {{ - put("broker-id", sourceNode.idString()); - put("fetcher-id", String.valueOf(fetcherId)); - }}, + put("broker-id", sourceNode.idString()); + put("fetcher-id", String.valueOf(fetcherId)); + }}, false, channelBuilder, logContext diff --git a/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java b/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java index 85cab770a96ee..d59923687b287 100644 --- a/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java +++ b/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java @@ -289,7 +289,7 @@ private int maybeResetInputAndSeekToEndIntermediateTopicOffsets(final Map client = - new KafkaConsumer<>(config, new ByteArrayDeserializer(), new ByteArrayDeserializer())) { + new KafkaConsumer<>(config, new ByteArrayDeserializer(), new ByteArrayDeserializer())) { final Collection partitions = topicsToSubscribe.stream().map(client::partitionsFor) .flatMap(Collection::stream) diff --git a/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java b/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java index 81ceecf2401ef..4ae66885fea02 100644 --- a/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java @@ -285,7 +285,7 @@ void printDescription() { .filter(config -> !config.isDefault()) .map(ce -> ce.name() + "=" + ce.value()) .collect(Collectors.joining(",")); - System.out.print("Topic: " + topic); + System.out.print("Topic: " + topic); if (!topicId.equals(Uuid.ZERO_UUID)) System.out.print("\tTopicId: " + topicId); System.out.print("\tPartitionCount: " + numPartitions); @@ -744,7 +744,7 @@ static final class TopicCommandOptions extends CommandDefaultOptions { String nl = System.lineSeparator(); String logConfigNames = LogConfig.nonInternalConfigNames().stream().map(config -> "\t" + config).collect(Collectors.joining(nl)); - configOpt = parser.accepts("config", "A topic configuration override for the topic being created." + + configOpt = parser.accepts("config", "A topic configuration override for the topic being created." + " The following is a list of valid configurations: " + nl + logConfigNames + nl + "See the Kafka documentation for full details on the topic configs." + " It is supported only in combination with --create." + diff --git a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java index 35a9a32fc47c6..ee9968fe20a68 100644 --- a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java +++ b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java @@ -166,7 +166,7 @@ private static ArgumentParser argParser() { .metavar("GROUP-MODE") .dest("groupMode") .help("Whether to let consumer subscribe to the input topic or do manual assign. If we do" + - " subscription based consumption, the input partition shall be ignored"); + " subscription based consumption, the input partition shall be ignored"); parser.addArgument("--use-group-metadata") .action(storeTrue()) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 98b1ac00e2a6a..1265a65cf9851 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -277,7 +277,7 @@ public void close() { } } - @JsonPropertyOrder({ "timestamp", "name" }) + @JsonPropertyOrder({"timestamp", "name"}) private abstract static class ConsumerEvent { private final long timestamp = System.currentTimeMillis(); @@ -375,7 +375,7 @@ public List partitions() { } } - @JsonPropertyOrder({ "timestamp", "name", "key", "value", "topic", "partition", "offset" }) + @JsonPropertyOrder({"timestamp", "name", "key", "value", "topic", "partition", "offset"}) public static class RecordData extends ConsumerEvent { private final ConsumerRecord record; diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index db2d8817f50ce..aae200593c2f7 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -200,7 +200,7 @@ private static ArgumentParser argParser() { return parser; } - + /** * Read a properties file from the given path * @param filename The path of the file to read @@ -325,7 +325,7 @@ public void close() { printJson(new ShutdownComplete()); } - @JsonPropertyOrder({ "timestamp", "name" }) + @JsonPropertyOrder({"timestamp", "name"}) private abstract static class ProducerEvent { private final long timestamp = System.currentTimeMillis(); diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java index 5b897cfb643a6..4acb7e781cfd0 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java @@ -178,7 +178,7 @@ public Set offsets() { } } - @JsonPropertyOrder({ "timestamp", "name" }) + @JsonPropertyOrder({"timestamp", "name"}) private abstract static class ShareConsumerEvent { private final long timestamp = System.currentTimeMillis(); @@ -199,7 +199,7 @@ public String name() { } } - @JsonPropertyOrder({ "timestamp", "name", "offsetResetStrategy" }) + @JsonPropertyOrder({"timestamp", "name", "offsetResetStrategy"}) protected static class OffsetResetStrategySet extends ShareConsumerEvent { private final String offsetResetStrategy; @@ -235,7 +235,7 @@ public String name() { } } - @JsonPropertyOrder({ "timestamp", "name", "count", "partitions" }) + @JsonPropertyOrder({"timestamp", "name", "count", "partitions"}) public static class RecordsConsumed extends ShareConsumerEvent { private final long count; private final List partitionSummaries; @@ -261,7 +261,7 @@ public List partitions() { } } - @JsonPropertyOrder({ "timestamp", "name", "count", "partitions", "success", "error" }) + @JsonPropertyOrder({"timestamp", "name", "count", "partitions", "success", "error"}) protected static class OffsetsAcknowledged extends ShareConsumerEvent { private final long count; @@ -304,7 +304,7 @@ public boolean success() { } - @JsonPropertyOrder({ "timestamp", "name", "key", "value", "topic", "partition", "offset" }) + @JsonPropertyOrder({"timestamp", "name", "key", "value", "topic", "partition", "offset"}) public static class RecordData extends ShareConsumerEvent { private final ConsumerRecord record; diff --git a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java index 8e2cdcd2a29ed..72dfaaf41725e 100644 --- a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java +++ b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java @@ -100,7 +100,7 @@ public ConsoleConsumerOptions(String[] args) throws IOException { .withRequiredArg() .describedAs("consumer_prop") .ofType(String.class); - @Deprecated(since = "4.2", forRemoval = true) + @Deprecated(since = "4.2", forRemoval = true) OptionSpec consumerConfigOpt = parser.accepts("consumer.config", "(DEPRECATED) Consumer config properties file. Note that " + commandPropertyOpt + " takes precedence over this config. " + "This option will be removed in a future version. Use --command-config instead.") .withRequiredArg() diff --git a/tools/src/main/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatter.java b/tools/src/main/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatter.java index 3838bf01abacf..0b864d2afcd23 100644 --- a/tools/src/main/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatter.java +++ b/tools/src/main/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatter.java @@ -88,6 +88,8 @@ public void writeTo(ConsumerRecord consumerRecord, PrintStream o } protected abstract boolean isRecordTypeAllowed(short recordType); + protected abstract JsonNode keyAsJson(ApiMessage message); + protected abstract JsonNode valueAsJson(ApiMessage message, short version); -} +} diff --git a/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java b/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java index cfdef8f75182d..2255e9614a0c8 100644 --- a/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java @@ -410,7 +410,7 @@ private void printMembers(Map, Optional grouped .computeIfAbsent(tp.topic(), key -> new ArrayList<>()) - .add(tp) + .add(tp) ); return grouped.entrySet().stream().map(entry -> { String topicName = entry.getKey(); diff --git a/tools/src/main/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandOptions.java b/tools/src/main/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandOptions.java index b227ac713746d..84914bb861404 100644 --- a/tools/src/main/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandOptions.java +++ b/tools/src/main/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandOptions.java @@ -207,7 +207,7 @@ public void checkArgs() { CommandLineUtils.printUsageAndExit(parser, "Option " + resetOffsetsOpt + " takes one of these options: " + allTopicSelectionScopeOpts.stream().map(Object::toString).sorted().collect(Collectors.joining(", "))); } - + if (!options.has(resetToEarliestOpt) && !options.has(resetToLatestOpt) && !options.has(resetToDatetimeOpt)) { CommandLineUtils.printUsageAndExit(parser, "Option " + resetOffsetsOpt + " takes one of these options: " + allResetOffsetScenarioOpts.stream().map(Object::toString).sorted().collect(Collectors.joining(", "))); diff --git a/tools/src/main/java/org/apache/kafka/tools/filter/PartitionFilter.java b/tools/src/main/java/org/apache/kafka/tools/filter/PartitionFilter.java index 78c3bf60d2dc2..9d1b5d743ad64 100644 --- a/tools/src/main/java/org/apache/kafka/tools/filter/PartitionFilter.java +++ b/tools/src/main/java/org/apache/kafka/tools/filter/PartitionFilter.java @@ -27,9 +27,11 @@ public interface PartitionFilter { class PartitionsSetFilter implements PartitionFilter { private final Set partitionIds; + public PartitionsSetFilter(Set partitionIds) { this.partitionIds = partitionIds; } + @Override public boolean isPartitionAllowed(int partition) { return partitionIds.isEmpty() || partitionIds.contains(partition); diff --git a/tools/src/main/java/org/apache/kafka/tools/filter/TopicFilter.java b/tools/src/main/java/org/apache/kafka/tools/filter/TopicFilter.java index 77ee4c6bb1412..c497a1c2bcd76 100644 --- a/tools/src/main/java/org/apache/kafka/tools/filter/TopicFilter.java +++ b/tools/src/main/java/org/apache/kafka/tools/filter/TopicFilter.java @@ -28,6 +28,7 @@ public abstract class TopicFilter { protected final String regex; private final Pattern pattern; + public TopicFilter(String rawRegex) { this.regex = rawRegex .trim() @@ -55,6 +56,7 @@ public Pattern getPattern() { public static class IncludeList extends TopicFilter { private static final Logger log = LoggerFactory.getLogger(IncludeList.class); + public IncludeList(String rawRegex) { super(rawRegex); } diff --git a/tools/src/main/java/org/apache/kafka/tools/filter/TopicPartitionFilter.java b/tools/src/main/java/org/apache/kafka/tools/filter/TopicPartitionFilter.java index 84ebb08e52a32..ac3e32bb0f332 100644 --- a/tools/src/main/java/org/apache/kafka/tools/filter/TopicPartitionFilter.java +++ b/tools/src/main/java/org/apache/kafka/tools/filter/TopicPartitionFilter.java @@ -35,6 +35,7 @@ public interface TopicPartitionFilter { class TopicFilterAndPartitionFilter implements TopicPartitionFilter { private final IncludeList topicFilter; private final PartitionFilter partitionFilter; + public TopicFilterAndPartitionFilter(IncludeList topicFilter, PartitionFilter partitionFilter) { this.topicFilter = topicFilter; this.partitionFilter = partitionFilter; diff --git a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java index 89595b63750ef..4dcef2e982ada 100644 --- a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java @@ -259,7 +259,7 @@ static int compareTopicPartitions(TopicPartition a, TopicPartition b) { } static int compareTopicPartitionReplicas(TopicPartitionReplica a, TopicPartitionReplica b) { - int brokerOrder = Integer.compare(a.brokerId(), b.brokerId()); + int brokerOrder = Integer.compare(a.brokerId(), b.brokerId()); if (brokerOrder != 0) return brokerOrder; @@ -978,7 +978,7 @@ static Map alterPartitionReassignments(Admin adminCli options.allowReplicationFactorChange(!disallowReplicationFactorChange); Map> results = adminClient.alterPartitionReassignments(args, options).values(); Map errors = new HashMap<>(); - for (Entry> e : results.entrySet()) { + for (Entry> e : results.entrySet()) { try { e.getValue().get(); } catch (ExecutionException t) { @@ -1002,7 +1002,7 @@ static Map cancelPartitionReassignments(Admin adminCl Map> results = adminClient.alterPartitionReassignments(args).values(); Map errors = new HashMap<>(); - for (Entry> e : results.entrySet()) { + for (Entry> e : results.entrySet()) { try { e.getValue().get(); } catch (ExecutionException t) { diff --git a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandOptions.java b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandOptions.java index 3954128871222..028826b199fa2 100644 --- a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandOptions.java +++ b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandOptions.java @@ -91,7 +91,7 @@ public ReassignPartitionsCommandOptions(String[] args) { .withOptionalArg() .describedAs("bootstrap controller to connect to") .ofType(String.class); - + disableRackAware = parser.accepts("disable-rack-aware", "Disable rack aware replica assignment"); interBrokerThrottleOpt = parser.accepts("throttle", "The movement of partitions between brokers will be throttled to this value (bytes/sec). " + "This option can be included with --execute when a reassignment is started, and it can be altered by resubmitting the current reassignment " + @@ -102,8 +102,8 @@ public ReassignPartitionsCommandOptions(String[] args) { .defaultsTo(-1L); replicaAlterLogDirsThrottleOpt = parser.accepts("replica-alter-log-dirs-throttle", "The movement of replicas between log directories on the same broker will be throttled to this value (bytes/sec). " + - "This option can be included with --execute when a reassignment is started, and it can be altered by resubmitting the current reassignment " + - "along with the --additional flag. The throttle rate should be at least 1 KB/s.") + "This option can be included with --execute when a reassignment is started, and it can be altered by resubmitting the current reassignment " + + "along with the --additional flag. The throttle rate should be at least 1 KB/s.") .withRequiredArg() .describedAs("replicaAlterLogDirsThrottle") .ofType(Long.class) diff --git a/tools/src/test/java/org/apache/kafka/tools/BrokerApiVersionsCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/BrokerApiVersionsCommandTest.java index cfc9b686644a7..132c0bae48e1a 100644 --- a/tools/src/test/java/org/apache/kafka/tools/BrokerApiVersionsCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/BrokerApiVersionsCommandTest.java @@ -92,7 +92,7 @@ public void testAdminSendNoBlock(ClusterInstance clusterInstance) { props.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, clusterInstance.bootstrapServers()); try (BrokerApiVersionsCommand.AdminClient admin = BrokerApiVersionsCommand.AdminClient.create(props)) { int brokerId = clusterInstance.brokers().keySet().iterator().next(); - KafkaFuture future = admin.getNodeApiVersions(new Node(brokerId + 1, "localhost", 9093, null)); + KafkaFuture future = admin.getNodeApiVersions(new Node(brokerId + 1, "localhost", 9093, null)); assertTrue(future.isCompletedExceptionally()); } } diff --git a/tools/src/test/java/org/apache/kafka/tools/ClusterToolTest.java b/tools/src/test/java/org/apache/kafka/tools/ClusterToolTest.java index 6207cc740fd0f..c8836d5fd0414 100644 --- a/tools/src/test/java/org/apache/kafka/tools/ClusterToolTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/ClusterToolTest.java @@ -83,7 +83,7 @@ public void testListEndpointsArgumentWithBootstrapServer(ClusterInstance cluster List brokerIds = clusterInstance.brokerIds().stream().toList(); clusterInstance.shutdownBroker(brokerIds.get(0)); - List ports = Arrays.stream(clusterInstance.bootstrapServers().split(",")).map(b -> b.split(":")[1]).toList(); + List ports = Arrays.stream(clusterInstance.bootstrapServers().split(",")).map(b -> b.split(":")[1]).toList(); String format = "%-10s %-9s %-10s %-10s %-10s %-15s%n%-10s %-9s %-10s %-10s %-10s %-15s%n%-10s %-9s %-10s %-10s %-10s %-6s"; String expected = String.format(format, "ID", "HOST", "PORT", "RACK", "STATE", "ENDPOINT_TYPE", diff --git a/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java b/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java index da6be53357453..45c612da4ec4d 100644 --- a/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java @@ -68,7 +68,7 @@ public class EndToEndLatencyTest { private static class ArgsBuilder { private final Map params = new LinkedHashMap<>(); - + private ArgsBuilder() { params.put("--bootstrap-server", "localhost:9092"); params.put("--topic", "test-topic"); @@ -76,16 +76,16 @@ private ArgsBuilder() { params.put("--producer-acks", "1"); params.put("--record-size", "200"); } - + public static ArgsBuilder defaults() { return new ArgsBuilder(); } - + public ArgsBuilder with(String param, String value) { params.put(param, value); return this; } - + public String[] build() { return params.entrySet().stream() .flatMap(entry -> Stream.of(entry.getKey(), entry.getValue())) @@ -95,7 +95,7 @@ public String[] build() { public ArgsBuilder withNegative(String param) { return with(param, "-1"); } - + public ArgsBuilder withZero(String param) { return with(param, "0"); } diff --git a/tools/src/test/java/org/apache/kafka/tools/FeatureCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/FeatureCommandTest.java index f569905d8c382..22d8c7f627be5 100644 --- a/tools/src/test/java/org/apache/kafka/tools/FeatureCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/FeatureCommandTest.java @@ -372,7 +372,7 @@ public void testUpgradeWithReleaseVersion(ClusterInstance cluster) { ); assertEquals("Could not upgrade metadata.version to 18. The update failed for all features since the following feature had an error:" + - " Invalid update version 18 for feature metadata.version. Can't downgrade the version of this feature without setting the upgrade type to either safe or unsafe downgrade.", commandOutput); + " Invalid update version 18 for feature metadata.version. Can't downgrade the version of this feature without setting the upgrade type to either safe or unsafe downgrade.", commandOutput); commandOutput = ToolsTestUtils.captureStandardOut(() -> assertEquals(0, FeatureCommand.mainNoExit("--bootstrap-server", cluster.bootstrapServers(), diff --git a/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java index 36f289804bbd1..648767cded1e1 100644 --- a/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java @@ -112,7 +112,7 @@ public void testOptionsListShareFilterSucceeds() { assertTrue(opts.hasListOption()); assertTrue(opts.hasShareOption()); } - + @Test public void testOptionsListStreamsFilterSucceeds() { GroupsCommand.GroupsCommandOptions opts = new GroupsCommand.GroupsCommandOptions( @@ -206,7 +206,7 @@ public void testOptionsListShareAndTypeFilterFails() { assertInitializeInvalidOptionsExitCode(1, new String[] {"--bootstrap-server", bootstrapServer, "--list", "--share", "--group-type", "classic"}); } - + @Test public void testOptionsListStreamsAndProtocolFilterFails() { assertInitializeInvalidOptionsExitCode(1, @@ -218,7 +218,7 @@ public void testOptionsListStreamsAndTypeFilterFails() { assertInitializeInvalidOptionsExitCode(1, new String[] {"--bootstrap-server", bootstrapServer, "--list", "--streams", "--group-type", "classic"}); } - + @Test public void testListGroupsEmpty() { Admin adminClient = mock(Admin.class); diff --git a/tools/src/test/java/org/apache/kafka/tools/LogDirsCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/LogDirsCommandTest.java index 80bab74131f8e..1fc96823e9e46 100644 --- a/tools/src/test/java/org/apache/kafka/tools/LogDirsCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/LogDirsCommandTest.java @@ -177,9 +177,9 @@ public void shouldQueryAllBrokersIfNonSpecified() throws JsonProcessingException Map information = new ObjectMapper().readValue(standardOutputLines[2], HashMap.class); List brokersInformation = (List) information.get("brokers"); Set brokerIds = new HashSet<>() {{ - add((Integer) ((HashMap) brokersInformation.get(0)).get("broker")); - add((Integer) ((HashMap) brokersInformation.get(1)).get("broker")); - }}; + add((Integer) ((HashMap) brokersInformation.get(0)).get("broker")); + add((Integer) ((HashMap) brokersInformation.get(1)).get("broker")); + }}; assertEquals(2, brokersInformation.size()); assertEquals(Set.of(2, 1), brokerIds); } diff --git a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java index 621943f695ab9..2ee0078a468ef 100644 --- a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java @@ -59,9 +59,9 @@ public void testDescribeQuorumReplicationSuccessful(ClusterInstance cluster) thr assertTrue(header.matches("NodeId\\s+DirectoryId\\s+LogEndOffset\\s+Lag\\s+LastFetchTimestamp\\s+LastCaughtUpTimestamp\\s+Status\\s+")); - if (cluster.type() == Type.CO_KRAFT) + if (cluster.type() == Type.CO_KRAFT) assertEquals(Math.max(cluster.config().numControllers(), cluster.config().numBrokers()), data.size()); - else + else assertEquals(cluster.config().numBrokers() + cluster.config().numControllers(), data.size()); Pattern leaderPattern = Pattern.compile("\\d+\\s+\\S+\\s+\\d+\\s+\\d+\\s+-?\\d+\\s+-?\\d+\\s+Leader\\s*"); diff --git a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandUnitTest.java b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandUnitTest.java index b3131ec3b5959..eac712167105e 100644 --- a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandUnitTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandUnitTest.java @@ -181,7 +181,7 @@ public void testGetMetadataDirectoryId() throws Exception { @Test public void testGetMetadataDirectoryIdWhenThereIsNoId() throws Exception { try (MetadataQuorumCommandUnitTestEnv testEnv = - new MetadataQuorumCommandUnitTestEnv(Optional.empty())) { + new MetadataQuorumCommandUnitTestEnv(Optional.empty())) { assertEquals("No directory id found in " + testEnv.metadataDir.getAbsolutePath(), assertThrows(TerseException.class, () -> MetadataQuorumCommand.getMetadataDirectoryId(testEnv.metadataDir.getAbsolutePath())). @@ -192,7 +192,7 @@ public void testGetMetadataDirectoryIdWhenThereIsNoId() throws Exception { @Test public void testGetMetadataDirectoryIdWhenThereIsNoDirectory() throws Exception { try (MetadataQuorumCommandUnitTestEnv testEnv = - new MetadataQuorumCommandUnitTestEnv(Optional.empty())) { + new MetadataQuorumCommandUnitTestEnv(Optional.empty())) { testEnv.close(); assertEquals("Unable to read meta.properties from " + testEnv.metadataDir.getAbsolutePath(), assertThrows(TerseException.class, @@ -246,7 +246,7 @@ public void testGetControllerAdvertisedListenersWithRegularListenersAndAdvertise @Test public void testAddControllerDryRun() throws Exception { try (MetadataQuorumCommandUnitTestEnv testEnv = - new MetadataQuorumCommandUnitTestEnv(Optional. + new MetadataQuorumCommandUnitTestEnv(Optional. of(Uuid.fromString("wZoXPqWoSu6F6c8MkmdyAg")))) { File propsFile = testEnv.writePropertiesFile(); List outputs = List.of( diff --git a/tools/src/test/java/org/apache/kafka/tools/ProducerPerformanceTest.java b/tools/src/test/java/org/apache/kafka/tools/ProducerPerformanceTest.java index 902de6ec740af..715b39388bb53 100644 --- a/tools/src/test/java/org/apache/kafka/tools/ProducerPerformanceTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/ProducerPerformanceTest.java @@ -186,10 +186,10 @@ public void testNumberOfCallsForSendAndClose() throws IOException { doReturn(producerMock).when(producerPerformanceSpy).createKafkaProducer(any(Properties.class)); String[] args = new String[] { - "--topic", "Hello-Kafka", - "--num-records", "5", - "--throughput", "100", - "--record-size", "100", + "--topic", "Hello-Kafka", + "--num-records", "5", + "--throughput", "100", + "--record-size", "100", "--bootstrap-server", "localhost:9000"}; producerPerformanceSpy.start(args); verify(producerMock, times(5)).send(any(), any()); @@ -267,7 +267,7 @@ public void testMutuallyExclusiveGroup() { "--payload-monotonic", "--bootstrap-server", "localhost:9000"}; ArgumentParser parser1 = ProducerPerformance.argParser(); - ArgumentParserException thrown = assertThrows(ArgumentParserException.class, () -> parser1.parseArgs(args1)); + ArgumentParserException thrown = assertThrows(ArgumentParserException.class, () -> parser1.parseArgs(args1)); assertEquals("argument --payload-monotonic: not allowed with argument --record-size", thrown.getMessage()); String[] args2 = new String[] { @@ -285,10 +285,10 @@ public void testMutuallyExclusiveGroup() { @Test public void testUnexpectedArg() { String[] args = new String[] { - "--test", "test", - "--topic", "Hello-Kafka", - "--num-records", "5", - "--throughput", "100", + "--test", "test", + "--topic", "Hello-Kafka", + "--num-records", "5", + "--throughput", "100", "--record-size", "100", "--bootstrap-server", "localhost:9000"}; ArgumentParser parser = ProducerPerformance.argParser(); @@ -360,7 +360,7 @@ public void testGenerateRandomPayloadException() { } @Test - public void testClientIdOverride() throws Exception { + public void testClientIdOverride() throws Exception { List producerProps = List.of("client.id=producer-1"); Properties prop = ProducerPerformance.readProps(producerProps, null); diff --git a/tools/src/test/java/org/apache/kafka/tools/ReplicaVerificationToolTest.java b/tools/src/test/java/org/apache/kafka/tools/ReplicaVerificationToolTest.java index 8341a5d2c3177..8d410cd79e028 100644 --- a/tools/src/test/java/org/apache/kafka/tools/ReplicaVerificationToolTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/ReplicaVerificationToolTest.java @@ -36,10 +36,10 @@ public class ReplicaVerificationToolTest { void testReplicaBufferVerifyChecksum() { StringBuilder sb = new StringBuilder(); final Map expectedReplicasPerTopicAndPartition = new HashMap() {{ - put(new TopicPartition("a", 0), 3); - put(new TopicPartition("a", 1), 3); - put(new TopicPartition("b", 0), 2); - }}; + put(new TopicPartition("a", 0), 3); + put(new TopicPartition("a", 1), 3); + put(new TopicPartition("b", 0), 2); + }}; ReplicaVerificationTool.ReplicaBuffer replicaBuffer = new ReplicaVerificationTool.ReplicaBuffer(expectedReplicasPerTopicAndPartition, Map.of(), 2, 0); diff --git a/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java b/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java index 1321549a46076..1254dd0e5a8a3 100644 --- a/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java +++ b/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java @@ -116,7 +116,7 @@ public static void removeReplicationThrottleForPartitions(Admin admin, List> allReplicasByPartition) throws InterruptedException, ExecutionException { Map>>> configResourceToPartitionReplicas = allReplicasByPartition.entrySet().stream() - .collect(Collectors.groupingBy( + .collect(Collectors.groupingBy( topicPartitionListEntry -> new ConfigResource(ConfigResource.Type.TOPIC, topicPartitionListEntry.getKey().topic())) ); diff --git a/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java index 06efc3c918611..b393d4832fd7f 100644 --- a/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java @@ -235,7 +235,7 @@ public void testParseAssignmentPartitionsOfDifferentSize() { @Test public void testParseAssignment() { Map> actualAssignment = TopicCommand.parseReplicaAssignment("5:4,3:2,1:0"); - Map> expectedAssignment = new HashMap<>(); + Map> expectedAssignment = new HashMap<>(); expectedAssignment.put(0, List.of(5, 4)); expectedAssignment.put(1, List.of(3, 2)); expectedAssignment.put(2, List.of(1, 0)); @@ -444,7 +444,7 @@ public void testCreateWithDefaultReplication(ClusterInstance clusterInstance) th try (Admin adminClient = clusterInstance.admin()) { adminClient.createTopics(List.of(new NewTopic(testTopicName, 2, defaultReplicationFactor))); clusterInstance.waitTopicCreation(testTopicName, 2); - List partitions = adminClient + List partitions = adminClient .describeTopics(List.of(testTopicName)) .allTopicNames() .get() @@ -1220,7 +1220,7 @@ public void testDescribeUnderReplicatedPartitionsWhenReassignmentIsInProgress(Cl ToolsTestUtils.removeReplicationThrottleForPartitions(adminClient, brokerIds, Set.of(tp)); TestUtils.waitForCondition( () -> adminClient.listPartitionReassignments().reassignments().get().isEmpty(), - CLUSTER_WAIT_MS, String.format("reassignmet not finished after %s ms", CLUSTER_WAIT_MS) + CLUSTER_WAIT_MS, String.format("reassignmet not finished after %s ms", CLUSTER_WAIT_MS) ); } } @@ -1293,7 +1293,7 @@ public void testDescribeUnderMinIsrPartitionsMixed(ClusterInstance clusterInstan newTopics.add(new NewTopic(fullyReplicatedTopic, fullyReplicatedReplicaAssignmentMap)); adminClient.createTopics(newTopics); - for (NewTopic topioc: newTopics) { + for (NewTopic topioc : newTopics) { clusterInstance.waitTopicCreation(topioc.name(), partitions); } @@ -1309,7 +1309,7 @@ public void testDescribeUnderMinIsrPartitionsMixed(ClusterInstance clusterInstan TestUtils.waitForCondition( () -> adminClient.listPartitionReassignments().reassignments().get().isEmpty(), - CLUSTER_WAIT_MS, String.format("reassignmet not finished after %s ms", CLUSTER_WAIT_MS) + CLUSTER_WAIT_MS, String.format("reassignmet not finished after %s ms", CLUSTER_WAIT_MS) ); String output = captureDescribeTopicStandardOut(clusterInstance, buildTopicCommandOptionsWithBootstrap(clusterInstance, "--describe", "--under-min-isr-partitions", "--exclude-internal")); @@ -1420,7 +1420,7 @@ public void testCreateWithInternalConfig(ClusterInstance cluster) throws Interru assertEquals("1000", internalConfigEntry.value()); CreateTopicsResult nonInternalResult = adminClient.createTopics(List.of(new NewTopic(testTopicName, defaultNumPartitions, defaultReplicationFactor))); - + ConfigEntry nonInternalConfigEntry = nonInternalResult.config(testTopicName).get().get(LogConfig.INTERNAL_SEGMENT_BYTES_CONFIG); assertNull(nonInternalConfigEntry, "Non-internal config entry should be null"); } @@ -1493,7 +1493,7 @@ private String captureListTopicStandardOut(ClusterInstance clusterInstance, Topi private static ReplicaDistributions getReplicaDistribution(Map> assignment, Map brokerRackMapping) { Map leaderCount = new HashMap<>(); Map partitionCount = new HashMap<>(); - Map> partitionRackMap = new HashMap<>(); + Map> partitionRackMap = new HashMap<>(); assignment.forEach((partitionId, replicaList) -> { Integer leader = replicaList.get(0); diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java index 01319ba649999..4af3ecccbe0c4 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java @@ -682,7 +682,7 @@ public void testParseFormatter() throws Exception { String[] noOpMessageFormatter = generateArgsForFormatter("org.apache.kafka.tools.consumer.NoOpMessageFormatter"); assertInstanceOf(NoOpMessageFormatter.class, new ConsoleConsumerOptions(noOpMessageFormatter).formatter()); } - + private String[] generateArgsForFormatter(String formatter) { return new String[]{ "--bootstrap-server", "localhost:9092", diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerTest.java index fcd3f5cacddc5..2060cab0f23a6 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerTest.java @@ -297,17 +297,17 @@ public void testTransactionLogMessageFormatter(ClusterInstance cluster) throws E admin.createTopics(Set.of(newTopic)); produceMessagesWithTxn(cluster); - String[] transactionLogMessageFormatter = createConsoleConsumerArgs(cluster, - Topic.TRANSACTION_STATE_TOPIC_NAME, + String[] transactionLogMessageFormatter = createConsoleConsumerArgs(cluster, + Topic.TRANSACTION_STATE_TOPIC_NAME, "org.apache.kafka.tools.consumer.TransactionLogMessageFormatter"); ConsoleConsumerOptions options = new ConsoleConsumerOptions(transactionLogMessageFormatter); ConsoleConsumer.ConsumerWrapper consumerWrapper = new ConsoleConsumer.ConsumerWrapper(options, createTxnConsumer(cluster)); - + try (ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream output = new PrintStream(out)) { ConsoleConsumer.process(1, options.formatter(), consumerWrapper, output, true); - + JsonNode jsonNode = objectMapper.reader().readTree(out.toByteArray()); JsonNode keyNode = jsonNode.get("key"); @@ -336,14 +336,14 @@ public void testOffsetsMessageFormatter(ClusterInstance cluster) throws Exceptio admin.createTopics(Set.of(newTopic)); produceMessages(cluster); - String[] offsetsMessageFormatter = createConsoleConsumerArgs(cluster, - Topic.GROUP_METADATA_TOPIC_NAME, + String[] offsetsMessageFormatter = createConsoleConsumerArgs(cluster, + Topic.GROUP_METADATA_TOPIC_NAME, "org.apache.kafka.tools.consumer.OffsetsMessageFormatter"); ConsoleConsumerOptions options = new ConsoleConsumerOptions(offsetsMessageFormatter); ConsoleConsumer.ConsumerWrapper consumerWrapper = new ConsoleConsumer.ConsumerWrapper(options, createOffsetConsumer(cluster)); - try (ByteArrayOutputStream out = new ByteArrayOutputStream(); + try (ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream output = new PrintStream(out)) { ConsoleConsumer.process(1, options.formatter(), consumerWrapper, output, true); @@ -378,12 +378,12 @@ public void testGroupMetadataMessageFormatter(ClusterInstance cluster) throws Ex admin.createTopics(Set.of(newTopic)); produceMessages(cluster); - String[] groupMetadataMessageFormatter = createConsoleConsumerArgs(cluster, - Topic.GROUP_METADATA_TOPIC_NAME, + String[] groupMetadataMessageFormatter = createConsoleConsumerArgs(cluster, + Topic.GROUP_METADATA_TOPIC_NAME, "org.apache.kafka.tools.consumer.GroupMetadataMessageFormatter"); ConsoleConsumerOptions options = new ConsoleConsumerOptions(groupMetadataMessageFormatter); - ConsoleConsumer.ConsumerWrapper consumerWrapper = + ConsoleConsumer.ConsumerWrapper consumerWrapper = new ConsoleConsumer.ConsumerWrapper(options, createGroupMetaDataConsumer(cluster)); try (ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -428,7 +428,7 @@ private void produceMessages(ClusterInstance cluster) { producer.send(new ProducerRecord<>(topic, new byte[1_000 * 100])); } } - + private String[] createConsoleConsumerArgs(ClusterInstance cluster, String topic, String formatter) { return new String[]{ "--bootstrap-server", cluster.bootstrapServers(), @@ -463,7 +463,7 @@ private Consumer createGroupMetaDataConsumer(ClusterInstance clu props.put(AUTO_OFFSET_RESET_CONFIG, "earliest"); return new KafkaConsumer<>(props); } - + private Properties producerProps(ClusterInstance cluster) { Properties props = new Properties(); props.put(BOOTSTRAP_SERVERS_CONFIG, cluster.bootstrapServers()); @@ -471,7 +471,7 @@ private Properties producerProps(ClusterInstance cluster) { props.put(VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); return props; } - + private Properties consumerProps(ClusterInstance cluster) { Properties props = new Properties(); props.put(BOOTSTRAP_SERVERS_CONFIG, cluster.bootstrapServers()); diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatterTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatterTest.java index 3b09b26c0373e..ade9b0fab0853 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatterTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/CoordinatorRecordMessageFormatterTest.java @@ -39,6 +39,7 @@ public abstract class CoordinatorRecordMessageFormatterTest { private static final String TOPIC = "TOPIC"; protected abstract CoordinatorRecordMessageFormatter formatter(); + protected abstract Stream parameters(); @ParameterizedTest diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ConsumerGroupServiceTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ConsumerGroupServiceTest.java index b40af8d76060f..b50a5f6fbbc3f 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ConsumerGroupServiceTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ConsumerGroupServiceTest.java @@ -314,7 +314,7 @@ private ListOffsetsResult listOffsetsResult() { } private DescribeTopicsResult describeTopicsResult(Collection topics) { - var topicDescriptions = topics.stream().collect(Collectors.toMap(Function.identity(), + var topicDescriptions = topics.stream().collect(Collectors.toMap(Function.identity(), topic -> new TopicDescription(topic, false, IntStream.range(0, NUM_PARTITIONS) .mapToObj(i -> new TopicPartitionInfo(i, new Node(0, "localhost", 9092), List.of(), List.of())) .toList()))); diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteConsumerGroupsTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteConsumerGroupsTest.java index 2866027e2327d..ab2ff6073b930 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteConsumerGroupsTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteConsumerGroupsTest.java @@ -115,8 +115,8 @@ public void testDeleteNonEmptyGroup(ClusterInstance cluster) throws Exception { String topicName = composeTopicName(groupProtocol); String[] cgcArgs = new String[]{"--bootstrap-server", cluster.bootstrapServers(), "--delete", "--group", groupId}; try ( - AutoCloseable consumerGroupCloseable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); - ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) + AutoCloseable consumerGroupCloseable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); + ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) ) { TestUtils.waitForCondition( () -> service.collectGroupMembers(groupId).getValue().get().size() == 1, @@ -148,8 +148,8 @@ void testDeleteEmptyGroup(ClusterInstance cluster) throws Exception { String topicName = composeTopicName(groupProtocol); String[] cgcArgs = new String[]{"--bootstrap-server", cluster.bootstrapServers(), "--delete", "--group", groupId}; try ( - AutoCloseable consumerGroupCloseable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); - ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) + AutoCloseable consumerGroupCloseable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); + ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) ) { TestUtils.waitForCondition( () -> service.listConsumerGroups().contains(groupId) && checkGroupState(service, groupId, STABLE), @@ -221,8 +221,8 @@ public void testDeleteCmdWithMixOfSuccessAndError(ClusterInstance cluster) throw String missingGroupId = composeMissingGroupId(groupProtocol); String[] cgcArgs = new String[]{"--bootstrap-server", cluster.bootstrapServers(), "--delete", "--group", groupId}; try ( - AutoCloseable consumerGroupClosable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); - ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) + AutoCloseable consumerGroupClosable = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); + ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) ) { TestUtils.waitForCondition( () -> service.listConsumerGroups().contains(groupId) && checkGroupState(service, groupId, STABLE), @@ -254,8 +254,8 @@ public void testDeleteWithMixOfSuccessAndError(ClusterInstance cluster) throws E String missingGroupId = composeMissingGroupId(groupProtocol); String[] cgcArgs = new String[]{"--bootstrap-server", cluster.bootstrapServers(), "--delete", "--group", groupId}; try ( - AutoCloseable executor = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); - ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) + AutoCloseable executor = consumerGroupClosable(cluster, groupProtocol, groupId, topicName); + ConsumerGroupCommand.ConsumerGroupService service = getConsumerGroupService(cgcArgs) ) { TestUtils.waitForCondition( () -> service.listConsumerGroups().contains(groupId) && checkGroupState(service, groupId, STABLE), diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteOffsetsConsumerGroupCommandIntegrationTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteOffsetsConsumerGroupCommandIntegrationTest.java index 265b880e4ea3c..fe061b63b851b 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteOffsetsConsumerGroupCommandIntegrationTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DeleteOffsetsConsumerGroupCommandIntegrationTest.java @@ -212,6 +212,7 @@ private Runnable getValidateRunnable(String inputTopic, } }; } + private void testWithConsumerGroup(String inputTopic, String inputGroup, GroupProtocol groupProtocol, diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java index 44f538044801f..092c831df604f 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java @@ -122,7 +122,7 @@ public void testDescribeNonExistingGroup(ClusterInstance clusterInstance) { public void testDescribeOffsetsOfNonExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; String missingGroup = "missing.group"; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -145,7 +145,7 @@ public void testDescribeOffsetsOfNonExistingGroup(ClusterInstance clusterInstanc public void testDescribeMembersOfNonExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; String missingGroup = "missing.group"; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -166,7 +166,7 @@ public void testDescribeMembersOfNonExistingGroup(ClusterInstance clusterInstanc public void testDescribeStateOfNonExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; String missingGroup = "missing.group"; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -186,7 +186,7 @@ public void testDescribeStateOfNonExistingGroup(ClusterInstance clusterInstance) @ClusterTest public void testDescribeGroupOffsets(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); clusterInstance.createTopic(topic, 1, (short) 1); sendRecords(topic, 0, 1); @@ -227,7 +227,7 @@ public void testDescribeGroupOffsets(ClusterInstance clusterInstance) throws Exc @ClusterTest public void testDescribeGroupMembers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { boolean isConsumer = groupProtocol.equals(GroupProtocol.CONSUMER); String topic1 = TOPIC_PREFIX + groupProtocol.name() + "1"; String topic2 = TOPIC_PREFIX + groupProtocol.name() + "2"; @@ -324,7 +324,7 @@ public void testDescribeGroupMemberWithMigration(ClusterInstance clusterInstance @ClusterTest public void testDescribeGroupState(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { boolean isConsumer = groupProtocol.equals(GroupProtocol.CONSUMER); String topic = TOPIC_PREFIX + groupProtocol.name(); clusterInstance.createTopic(topic, 1, (short) 1); @@ -366,7 +366,7 @@ public void testDescribeGroupState(ClusterInstance clusterInstance) throws Excep @ClusterTest public void testDescribeExistingGroups(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic); @@ -407,7 +407,7 @@ public void testDescribeExistingGroups(ClusterInstance clusterInstance) throws E @ClusterTest public void testDescribeAllExistingGroups(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic); @@ -448,7 +448,7 @@ public void testDescribeAllExistingGroups(ClusterInstance clusterInstance) throw @ClusterTest public void testDescribeOffsetsOfExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -488,7 +488,7 @@ public void testDescribeOffsetsOfExistingGroup(ClusterInstance clusterInstance) @ClusterTest public void testDescribeMembersOfExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -515,7 +515,7 @@ public void testDescribeMembersOfExistingGroup(ClusterInstance clusterInstance) @ClusterTest public void testDescribeStateOfExistingGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -538,7 +538,7 @@ public void testDescribeStateOfExistingGroup(ClusterInstance clusterInstance) th @ClusterTest public void testDescribeStateOfExistingGroupWithNonDefaultAssignor(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -576,7 +576,7 @@ public void testDescribeStateOfExistingGroupWithNonDefaultAssignor(ClusterInstan @ClusterTest public void testDescribeExistingGroupWithNoMembers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic); @@ -594,7 +594,7 @@ public void testDescribeExistingGroupWithNoMembers(ClusterInstance clusterInstan res.getValue().isEmpty() && checkArgsHeaderOutput(cgcArgs, res.getKey().trim().split("\n")[0]); }, "Expected describe group results with one data row for describe type '" + String.join(" ", describeType) + "'"); - + protocolConsumerGroupExecutor.close(); TestUtils.waitForCondition( () -> ToolsTestUtils.grabConsoleError(describeGroups(service)).contains("Consumer group '" + group + "' has no active members."), @@ -607,7 +607,7 @@ public void testDescribeExistingGroupWithNoMembers(ClusterInstance clusterInstan @ClusterTest public void testDescribeOffsetsOfExistingGroupWithNoMembers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -644,7 +644,7 @@ public void testDescribeOffsetsOfExistingGroupWithNoMembers(ClusterInstance clus @ClusterTest public void testDescribeMembersOfExistingGroupWithNoMembers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -673,7 +673,7 @@ public void testDescribeMembersOfExistingGroupWithNoMembers(ClusterInstance clus @ClusterTest public void testDescribeStateOfExistingGroupWithNoMembers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -704,7 +704,7 @@ public void testDescribeStateOfExistingGroupWithNoMembers(ClusterInstance cluste @ClusterTest public void testDescribeWithConsumersWithoutAssignedPartitions(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic); @@ -731,7 +731,7 @@ public void testDescribeWithConsumersWithoutAssignedPartitions(ClusterInstance c @ClusterTest public void testDescribeOffsetsWithConsumersWithoutAssignedPartitions(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -754,7 +754,7 @@ public void testDescribeOffsetsWithConsumersWithoutAssignedPartitions(ClusterIns @ClusterTest public void testDescribeMembersWithConsumersWithoutAssignedPartitions(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -784,7 +784,7 @@ public void testDescribeMembersWithConsumersWithoutAssignedPartitions(ClusterIns @ClusterTest public void testDescribeStateWithConsumersWithoutAssignedPartitions(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -804,7 +804,7 @@ public void testDescribeStateWithConsumersWithoutAssignedPartitions(ClusterInsta @ClusterTest public void testDescribeWithMultiPartitionTopicAndMultipleConsumers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic, 2); @@ -831,7 +831,7 @@ public void testDescribeWithMultiPartitionTopicAndMultipleConsumers(ClusterInsta @ClusterTest public void testDescribeOffsetsWithMultiPartitionTopicAndMultipleConsumers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic, 2); @@ -855,7 +855,7 @@ public void testDescribeOffsetsWithMultiPartitionTopicAndMultipleConsumers(Clust @ClusterTest public void testDescribeMembersWithMultiPartitionTopicAndMultipleConsumers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic, 2); @@ -883,7 +883,7 @@ public void testDescribeMembersWithMultiPartitionTopicAndMultipleConsumers(Clust @ClusterTest public void testDescribeStateWithMultiPartitionTopicAndMultipleConsumers(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic, 2); @@ -904,7 +904,7 @@ public void testDescribeStateWithMultiPartitionTopicAndMultipleConsumers(Cluster public void testDescribeSimpleConsumerGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; // Ensure that the offsets of consumers which don't use group management are still displayed - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic, 2); @@ -924,7 +924,7 @@ public void testDescribeSimpleConsumerGroup(ClusterInstance clusterInstance) thr @ClusterTest public void testDescribeGroupWithShortInitializationTimeout(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); createTopic(topic); @@ -950,7 +950,7 @@ public void testDescribeGroupWithShortInitializationTimeout(ClusterInstance clus @ClusterTest public void testDescribeGroupOffsetsWithShortInitializationTimeout(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -972,7 +972,7 @@ public void testDescribeGroupOffsetsWithShortInitializationTimeout(ClusterInstan @ClusterTest public void testDescribeGroupMembersWithShortInitializationTimeout(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -996,7 +996,7 @@ public void testDescribeGroupMembersWithShortInitializationTimeout(ClusterInstan @ClusterTest public void testDescribeGroupStateWithShortInitializationTimeout(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -1018,7 +1018,7 @@ public void testDescribeGroupStateWithShortInitializationTimeout(ClusterInstance @ClusterTest public void testDescribeNonOffsetCommitGroup(ClusterInstance clusterInstance) throws Exception { this.clusterInstance = clusterInstance; - for (GroupProtocol groupProtocol: clusterInstance.supportedGroupProtocols()) { + for (GroupProtocol groupProtocol : clusterInstance.supportedGroupProtocols()) { String topic = TOPIC_PREFIX + groupProtocol.name(); String group = GROUP_PREFIX + groupProtocol.name(); createTopic(topic); @@ -1113,7 +1113,7 @@ public void testDescribeConsumerGroupWithoutLeaders(ClusterInstance clusterInsta @Test public void testDescribeWithUnrecognizedNewConsumerOption() { - String group = GROUP_PREFIX + "unrecognized"; + String group = GROUP_PREFIX + "unrecognized"; String[] cgcArgs = new String[]{"--new-consumer", "--bootstrap-server", "localhost:9092", "--describe", "--group", group}; assertThrows(joptsimple.OptionException.class, () -> ConsumerGroupCommandOptions.fromArgs(cgcArgs)); } diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ResetConsumerGroupOffsetTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ResetConsumerGroupOffsetTest.java index 503a5bea217e9..5ac25394c979e 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ResetConsumerGroupOffsetTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ResetConsumerGroupOffsetTest.java @@ -194,7 +194,7 @@ public void testResetOffsetsExistingTopicSelectedGroups(ClusterInstance cluster) List groups = generateIds(topic); for (String group : groups) { try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100L); } } @@ -218,7 +218,7 @@ public void testResetOffsetsExistingTopicAllGroups(ClusterInstance cluster) thro for (int i = 1; i <= 3; i++) { String group = generateRandomGroupId(); try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100L); } } @@ -244,7 +244,7 @@ public void testResetOffsetsAllTopicsAllGroups(ClusterInstance cluster) throws E for (String topic : topics) { for (String group : groups) { try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, 3, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, 3, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100); } } @@ -277,7 +277,7 @@ public void testResetOffsetsToLocalDateTime(ClusterInstance cluster) throws Exce produceMessages(cluster, topic, 100); try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100L); } @@ -301,7 +301,7 @@ public void testResetOffsetsToZonedDateTime(ClusterInstance cluster) throws Exce "--execute"); try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, 1, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100L); } @@ -827,7 +827,7 @@ private void produceConsumeAndShutdown(ClusterInstance cluster, GroupProtocol groupProtocol) throws Exception { produceMessages(cluster, topic, 100); try (AutoCloseable consumerGroupCloseable = - consumerGroupClosable(cluster, numConsumers, topic, group, groupProtocol)) { + consumerGroupClosable(cluster, numConsumers, topic, group, groupProtocol)) { awaitConsumerProgress(cluster, topic, group, 100); } } diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/SaslClientsWithInvalidCredentialsTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/SaslClientsWithInvalidCredentialsTest.java index 3676cf4d48215..7723414b4cf9e 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/SaslClientsWithInvalidCredentialsTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/SaslClientsWithInvalidCredentialsTest.java @@ -61,7 +61,7 @@ public class SaslClientsWithInvalidCredentialsTest extends AbstractSaslTest { public static final int NUM_PARTITIONS = 1; public static final int BROKER_COUNT = 1; public static final String KAFKA_CLIENT_SASL_MECHANISM = "SCRAM-SHA-256"; - private static final Seq KAFKA_SERVER_SASL_MECHANISMS = CollectionConverters.asScala(List.of(KAFKA_CLIENT_SASL_MECHANISM)).toSeq(); + private static final Seq KAFKA_SERVER_SASL_MECHANISMS = CollectionConverters.asScala(List.of(KAFKA_CLIENT_SASL_MECHANISM)).toSeq(); private Consumer createConsumer() { return createConsumer( diff --git a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java index 8a078715fe161..7d5d188696dc4 100644 --- a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java @@ -809,10 +809,10 @@ public void testDeleteShareGroupOffsetsTopLevelError() throws Exception { List errorLine = new ArrayList<>(error); List expectedResultHeader = List.of("TOPIC", "STATUS"); - List expectedResultValue1 = new ArrayList<>(); + List expectedResultValue1 = new ArrayList<>(); expectedResultValue1.add(firstTopic); expectedResultValue1.addAll(error); - List expectedResultValue2 = new ArrayList<>(); + List expectedResultValue2 = new ArrayList<>(); expectedResultValue2.add(secondTopic); expectedResultValue2.addAll(error); @@ -860,8 +860,8 @@ public void testDeleteShareGroupOffsetsTopicLevelError() throws Exception { ).toList(); List expectedResultHeader = List.of("TOPIC", "STATUS"); - List expectedResultValue1 = List.of(firstTopic, "Successful"); - List expectedResultValue2 = new ArrayList<>(); + List expectedResultValue1 = List.of(firstTopic, "Successful"); + List expectedResultValue2 = new ArrayList<>(); expectedResultValue2.add(secondTopic); expectedResultValue2.addAll(error); @@ -1110,7 +1110,7 @@ public void testDeleteShareGroupsPartialFailure() { assertEquals(expectedResults, service.deleteShareGroups()); } } - + @Test public void testAlterShareGroupMultipleTopicsSuccess() { String group = "share-group"; @@ -1130,7 +1130,7 @@ public void testAlterShareGroupMultipleTopicsSuccess() { ) ); when(adminClient.listShareGroupOffsets(any(), any(ListShareGroupOffsetsOptions.class))).thenReturn(listShareGroupOffsetsResult); - + AlterShareGroupOffsetsResult alterShareGroupOffsetsResult = mockAlterShareGroupOffsets(adminClient, group); TopicPartition tp0 = new TopicPartition(topic1, 0); TopicPartition tp1 = new TopicPartition(topic1, 1); @@ -1419,7 +1419,7 @@ public void testAlterShareGroupOffsetsArgsFailureWithoutResetOffsetsArgs() { assertTrue(exited.get()); } } - + @Test public void testAlterShareGroupUnsubscribedTopicSuccess() { String group = "share-group"; diff --git a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java index 151e0f998a794..d7056571ccff5 100644 --- a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java @@ -289,7 +289,7 @@ public void shouldNotAllowCancelWithoutReassignmentJsonFile() { "--preserve-throttles"}; shouldFailWith("Missing required argument \"[reassignment-json-file]\"", args); } - + @Test public void shouldAllowBootstrapControllerArg() { String[] args = new String[] { diff --git a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandTest.java index a71e4779a3e4e..50a00c663df51 100644 --- a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandTest.java @@ -312,7 +312,7 @@ public void testProduceAndConsumeWithReassignmentInProgress() throws Exception { removeReplicationThrottleForPartitions(part); Map finalAssignment = Map.of(part, new PartitionReassignmentState(List.of(3, 2, 1), List.of(3, 2, 1), true)); - try (Admin admin = Admin.create(Map.of(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, clusterInstance.bootstrapServers()))) { + try (Admin admin = Admin.create(Map.of(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, clusterInstance.bootstrapServers()))) { waitForVerifyAssignment(admin, assignment, false, new VerifyAssignmentResult(finalAssignment)); } @@ -526,7 +526,7 @@ public void testGenerateAssignmentWithOneBootstrapServerShutdownWontTimeout() th generateAssignment(admin, topicsToMoveJson, "1,2,3", false); } } - + @ClusterTest(types = {Type.KRAFT}) public void testExecuteAssignmentWithOneBootstrapServerShutdownWontTimeout() throws Exception { var brokerIdToShutdown = 0; @@ -544,7 +544,7 @@ public void testExecuteAssignmentWithOneBootstrapServerShutdownWontTimeout() thr "]}"; runExecuteAssignment(false, assignment, -1L, -1L); } - + private void createTopics() { try (Admin admin = Admin.create(Map.of(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, clusterInstance.bootstrapServers()))) { Map> fooReplicasAssignments = new HashMap<>(); diff --git a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java index 6a59a1513fc39..eaf8ae89bd766 100644 --- a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java @@ -162,7 +162,7 @@ public void testFindPartitionReassignmentStates() throws Exception { reassignments.put(new TopicPartition("foo", 0), List.of(0, 1, 3)); reassignments.put(new TopicPartition("quux", 0), List.of(1, 2, 3)); - Map reassignmentResult = alterPartitionReassignments(adminClient, reassignments, false); + Map reassignmentResult = alterPartitionReassignments(adminClient, reassignments, false); assertEquals(1, reassignmentResult.size()); assertEquals(UnknownTopicOrPartitionException.class, reassignmentResult.get(new TopicPartition("quux", 0)).getClass()); diff --git a/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java b/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java index fcbba67e52d11..40fcfcf0452de 100644 --- a/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java @@ -195,7 +195,7 @@ public void testResetOffset() throws Exception { final String appId = generateRandomAppId(); final String topic1 = generateRandomTopic(); final String topic2 = generateRandomTopic(); - final int numOfPartitions = 2; + final int numOfPartitions = 2; String[] args; produceConsumeShutdown(appId, topic1, topic2, RECORD_TOTAL * numOfPartitions * 2); produceMessagesOnTwoPartitions(RECORD_TOTAL, topic1); @@ -389,7 +389,7 @@ private void resetForNextTest(String appId, long desiredOffset, String... topics } adminClient.alterStreamsGroupOffsets(appId, offsets).all().get(); Map committedOffsets = committedOffsets(List.of(topics), appId); - for (TopicPartition tp: offsets.keySet()) { + for (TopicPartition tp : offsets.keySet()) { assertEquals(desiredOffset, committedOffsets.get(tp)); } } @@ -402,7 +402,7 @@ private void AssertCommittedOffsets(String appId, .mapToObj(partition -> new TopicPartition(topic, partition)) .toList(); Map committedOffsets = committedOffsets(List.of(topic), appId); - for (TopicPartition tp: affectedTPs) { + for (TopicPartition tp : affectedTPs) { assertEquals(expectedCommittedOffset, committedOffsets.get(tp)); } } @@ -594,7 +594,7 @@ private void resetOffsetsAndAssertForDryRunAndExecute(String[] args, long expectedOffset, long expectedCommittedOffset, int... partitions) throws ExecutionException, InterruptedException { - resetOffsetsAndAssert(addTo(args, "--dry-run"), appId, topic, expectedOffset, expectedCommittedOffset, partitions); + resetOffsetsAndAssert(addTo(args, "--dry-run"), appId, topic, expectedOffset, expectedCommittedOffset, partitions); resetOffsetsAndAssert(addTo(args, "--execute"), appId, topic, expectedOffset, expectedOffset, partitions); } @@ -696,7 +696,7 @@ private void produceConsumeShutdown(String appId, String topic1, String topic2, }); - final KafkaStreams streams = new KafkaStreams(builder.build(), STREAMS_CONFIG); + final KafkaStreams streams = new KafkaStreams(builder.build(), STREAMS_CONFIG); streams.cleanUp(); streams.start(); diff --git a/tools/src/test/java/org/apache/kafka/tools/streams/StreamsGroupCommandTest.java b/tools/src/test/java/org/apache/kafka/tools/streams/StreamsGroupCommandTest.java index 20f6ed26e6078..54b50ae878c95 100644 --- a/tools/src/test/java/org/apache/kafka/tools/streams/StreamsGroupCommandTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/streams/StreamsGroupCommandTest.java @@ -179,7 +179,7 @@ public void testDescribeStreamsGroups() throws Exception { null); resultMap.put(firstGroup, exp); when(result.all()).thenReturn(KafkaFuture.completedFuture(resultMap)); - when(ADMIN_CLIENT.describeStreamsGroups(anyCollection(), any(DescribeStreamsGroupsOptions.class))).thenReturn(result); + when(ADMIN_CLIENT.describeStreamsGroups(anyCollection(), any(DescribeStreamsGroupsOptions.class))).thenReturn(result); StreamsGroupCommandOptions streamsGroupCommandOptions = new StreamsGroupCommandOptions( new String[]{"--bootstrap-server", BOOTSTRAP_SERVERS, "--group", firstGroup, "--describe"}); @@ -441,14 +441,14 @@ public void testDeleteNonStreamsGroup() { service.close(); } - + @Test public void testResetOffsetsWithPartitionNotExist() { Admin adminClient = mock(KafkaAdminClient.class); String groupId = "foo-group"; String topic = "topic"; List args = new ArrayList<>(Arrays.asList("--bootstrap-server", "localhost:9092", "--group", groupId, "--reset-offsets", "--input-topic", "topic:3", "--to-latest")); - + when(adminClient.describeStreamsGroups(eq(List.of(groupId)), any(DescribeStreamsGroupsOptions.class))) .thenReturn(describeStreamsResult(groupId, GroupState.DEAD)); DescribeTopicsResult describeTopicsResult = mock(DescribeTopicsResult.class); @@ -464,12 +464,12 @@ topic, new TopicDescription(topic, false, List.of( .thenReturn(listOffsetsResult()); ListStreamsGroupOffsetsResult result = mock(ListStreamsGroupOffsetsResult.class); Map committedOffsetsMap = Map.of( - new TopicPartition(topic, 0), + new TopicPartition(topic, 0), new OffsetAndMetadata(12, Optional.of(0), ""), new TopicPartition(topic, 1), - new OffsetAndMetadata(12, Optional.of(0), "") + new OffsetAndMetadata(12, Optional.of(0), "") ); - + when(adminClient.listStreamsGroupOffsets(anyMap(), any(ListStreamsGroupOffsetsOptions.class))).thenReturn(result); when(result.partitionsToOffsetAndMetadata(anyString())).thenReturn(KafkaFuture.completedFuture(committedOffsetsMap)); StreamsGroupCommand.StreamsGroupService service = getStreamsGroupService(args.toArray(new String[0]), adminClient); @@ -495,9 +495,9 @@ public void testExitCodeOnExecutionException() { String[] args = new String[]{"--bootstrap-server", BOOTSTRAP_SERVERS, "--list"}; mockedStreamGroupCommand.when(() -> StreamsGroupCommand.execute(any(String[].class))).thenCallRealMethod(); mockedStreamGroupCommand.when(() -> StreamsGroupCommand.run(any(StreamsGroupCommandOptions.class))).thenThrow(new ExecutionException("ExecutionException", new RuntimeException())); - + assertEquals(1, StreamsGroupCommand.execute(args)); - + mockedStreamGroupCommand.verify(() -> StreamsGroupCommand.run(any(StreamsGroupCommandOptions.class))); } } @@ -508,9 +508,9 @@ public void testExitCodeOnInterruptedException() { String[] args = new String[]{"--bootstrap-server", BOOTSTRAP_SERVERS, "--list"}; mockedStreamGroupCommand.when(() -> StreamsGroupCommand.execute(any(String[].class))).thenCallRealMethod(); mockedStreamGroupCommand.when(() -> StreamsGroupCommand.run(any(StreamsGroupCommandOptions.class))).thenThrow(new InterruptedException("InterruptedException")); - + assertEquals(1, StreamsGroupCommand.execute(args)); - + mockedStreamGroupCommand.verify(() -> StreamsGroupCommand.run(any(StreamsGroupCommandOptions.class))); } } diff --git a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/AddPartitionsToTxnConfig.java b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/AddPartitionsToTxnConfig.java index 951bebddf068d..d65454193577e 100644 --- a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/AddPartitionsToTxnConfig.java +++ b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/AddPartitionsToTxnConfig.java @@ -36,7 +36,7 @@ public final class AddPartitionsToTxnConfig { public static final String ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MS_DOC = "The server-side retry backoff when the server attempts" + "to add the partition to the transaction"; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MAX_MS_CONFIG, INT, ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MAX_MS_DEFAULT, atLeast(0), HIGH, ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MAX_MS_DOC) .define(ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MS_CONFIG, INT, ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MS_DEFAULT, atLeast(1), HIGH, ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MS_DOC); @@ -47,9 +47,11 @@ public AddPartitionsToTxnConfig(AbstractConfig config) { addPartitionsToTxnRetryBackoffMaxMs = config.getInt(AddPartitionsToTxnConfig.ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MAX_MS_CONFIG); addPartitionsToTxnRetryBackoffMs = config.getInt(AddPartitionsToTxnConfig.ADD_PARTITIONS_TO_TXN_RETRY_BACKOFF_MS_CONFIG); } + public int addPartitionsToTxnRetryBackoffMaxMs() { return addPartitionsToTxnRetryBackoffMaxMs; } + public int addPartitionsToTxnRetryBackoffMs() { return addPartitionsToTxnRetryBackoffMs; } diff --git a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/RPCProducerIdManager.java b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/RPCProducerIdManager.java index 72d70fd2e190c..69d1f5abd34da 100644 --- a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/RPCProducerIdManager.java +++ b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/RPCProducerIdManager.java @@ -60,7 +60,7 @@ public class RPCProducerIdManager implements ProducerIdManager { final AtomicReference nextProducerIdBlock = new AtomicReference<>(null); final AtomicReference currentProducerIdBlock = new AtomicReference<>(ProducerIdsBlock.EMPTY); private final AtomicBoolean requestInFlight = new AtomicBoolean(false); - + // Setting the value of backoffDeadlineMs should be handled only in the response handler thread. // Otherwise, consider using compareAndSet() instead of set(). private final AtomicLong backoffDeadlineMs = new AtomicLong(NO_RETRY); @@ -181,7 +181,7 @@ protected void handleAllocateProducerIdsResponse(ClientResponse clientResponse) case BROKER_ID_NOT_REGISTERED: log.warn("{} Our broker ID is not yet known by the controller, trying again.", logPrefix); break; - default : + default: log.error("{} Received error code {} from the controller.", logPrefix, errors); } if (!successfulResponse) { diff --git a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionLogConfig.java b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionLogConfig.java index 3e1c4797df4b3..8d612a8a92eed 100644 --- a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionLogConfig.java +++ b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionLogConfig.java @@ -61,7 +61,7 @@ public final class TransactionLogConfig { public static final String PRODUCER_ID_EXPIRATION_CHECK_INTERVAL_MS_CONFIG = "producer.id.expiration.check.interval.ms"; public static final int PRODUCER_ID_EXPIRATION_CHECK_INTERVAL_MS_DEFAULT = 600000; public static final String PRODUCER_ID_EXPIRATION_CHECK_INTERVAL_MS_DOC = "The interval at which to remove producer IDs that have expired due to producer.id.expiration.ms passing."; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(TRANSACTIONS_TOPIC_MIN_ISR_CONFIG, INT, TRANSACTIONS_TOPIC_MIN_ISR_DEFAULT, atLeast(1), HIGH, TRANSACTIONS_TOPIC_MIN_ISR_DOC) .define(TRANSACTIONS_LOAD_BUFFER_SIZE_CONFIG, INT, TRANSACTIONS_LOAD_BUFFER_SIZE_DEFAULT, atLeast(1), HIGH, TRANSACTIONS_LOAD_BUFFER_SIZE_DOC) .define(TRANSACTIONS_TOPIC_REPLICATION_FACTOR_CONFIG, SHORT, TRANSACTIONS_TOPIC_REPLICATION_FACTOR_DEFAULT, atLeast(1), HIGH, TRANSACTIONS_TOPIC_REPLICATION_FACTOR_DOC) diff --git a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionMetadata.java b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionMetadata.java index 00e4c636b7224..94e13f3645429 100644 --- a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionMetadata.java +++ b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionMetadata.java @@ -512,6 +512,7 @@ public String transactionalId() { public void setProducerId(long producerId) { this.producerId = producerId; } + public long producerId() { return producerId; } @@ -520,6 +521,7 @@ public long producerId() { public void setPrevProducerId(long prevProducerId) { this.prevProducerId = prevProducerId; } + public long prevProducerId() { return prevProducerId; } diff --git a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfig.java b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfig.java index f75f496edcf7c..e7428ef568f4e 100644 --- a/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfig.java +++ b/transaction-coordinator/src/main/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfig.java @@ -54,7 +54,7 @@ public final class TransactionStateManagerConfig { public static final String METRICS_GROUP = "transaction-coordinator-metrics"; public static final String LOAD_TIME_SENSOR = "TransactionsPartitionLoadTime"; - public static final ConfigDef CONFIG_DEF = new ConfigDef() + public static final ConfigDef CONFIG_DEF = new ConfigDef() .define(TRANSACTIONAL_ID_EXPIRATION_MS_CONFIG, INT, TRANSACTIONAL_ID_EXPIRATION_MS_DEFAULT, atLeast(1), HIGH, TRANSACTIONAL_ID_EXPIRATION_MS_DOC) .define(TRANSACTIONS_MAX_TIMEOUT_MS_CONFIG, INT, TRANSACTIONS_MAX_TIMEOUT_MS_DEFAULT, atLeast(1), HIGH, TRANSACTIONS_MAX_TIMEOUT_MS_DOC) .define(TRANSACTIONS_ABORT_TIMED_OUT_TRANSACTION_CLEANUP_INTERVAL_MS_CONFIG, INT, TRANSACTIONS_ABORT_TIMED_OUT_TRANSACTION_CLEANUP_INTERVAL_MS_DEFAULT, atLeast(1), LOW, TRANSACTIONS_ABORT_TIMED_OUT_TRANSACTIONS_INTERVAL_MS_DOC) diff --git a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogConfigTest.java b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogConfigTest.java index 7746bda844afe..c100c2b7b6a49 100644 --- a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogConfigTest.java +++ b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogConfigTest.java @@ -42,7 +42,7 @@ void ShouldDefineAllConfigInConfigDef() { .peek(field -> field.setAccessible(true)) .map(field -> assertDoesNotThrow(() -> (String) field.get(null))) .collect(Collectors.toSet()); - assertEquals(declaredConfigs, TransactionLogConfig.CONFIG_DEF.names()); + assertEquals(declaredConfigs, TransactionLogConfig.CONFIG_DEF.names()); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -57,7 +57,7 @@ void ShouldGetStaticValueFromClassAttribute() { doReturn(6).when(config).getInt(TransactionLogConfig.PRODUCER_ID_EXPIRATION_CHECK_INTERVAL_MS_CONFIG); doReturn(false).when(config).getBoolean(TransactionLogConfig.TRANSACTION_PARTITION_VERIFICATION_ENABLE_CONFIG); doReturn(88).when(config).getInt(TransactionLogConfig.PRODUCER_ID_EXPIRATION_MS_CONFIG); - + TransactionLogConfig transactionLogConfig = new TransactionLogConfig(config); assertEquals(1, transactionLogConfig.transactionTopicMinISR()); diff --git a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogTest.java b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogTest.java index 6dcce9b25b75e..95e53d02bf46e 100644 --- a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogTest.java +++ b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionLogTest.java @@ -53,6 +53,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; + class TransactionLogTest { private final Set topicPartitions = Set.of( @@ -126,7 +127,7 @@ var record = MemoryRecords.withRecords(Compression.NONE, new SimpleRecord( assertEquals(topicPartitions, deserialized.topicPartitions()); } } - + @Test void shouldRoundTripPreviousAndNextProducerIds() { var txnTransitMetadata = new TxnTransitMetadata( diff --git a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfigTest.java b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfigTest.java index ddcf5ff94633b..786259e5fa7e0 100644 --- a/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfigTest.java +++ b/transaction-coordinator/src/test/java/org/apache/kafka/coordinator/transaction/TransactionStateManagerConfigTest.java @@ -40,7 +40,7 @@ void ShouldDefineAllConfigInConfigDef() { .peek(field -> field.setAccessible(true)) .map(field -> assertDoesNotThrow(() -> (String) field.get(null))) .collect(Collectors.toSet()); - assertEquals(declaredConfigs, TransactionStateManagerConfig.CONFIG_DEF.names()); + assertEquals(declaredConfigs, TransactionStateManagerConfig.CONFIG_DEF.names()); } @Test diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicNode.java b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicNode.java index 3fb0379b8fbec..560f633d9397c 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicNode.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicNode.java @@ -58,7 +58,7 @@ public BasicNode(String name, JsonNode root) { "array of strings."); } tags = new HashSet<>(); - for (Iterator tagIter = node.elements(); tagIter.hasNext(); ) { + for (Iterator tagIter = node.elements(); tagIter.hasNext();) { JsonNode tag = tagIter.next(); tags.add(tag.asText()); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicTopology.java b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicTopology.java index 1c3e2ef1caf24..ddcefb60b0ce1 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicTopology.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicTopology.java @@ -39,7 +39,7 @@ public BasicTopology(JsonNode configRoot) { "a JSON object."); } nodes = new TreeMap<>(); - for (Iterator iter = configRoot.fieldNames(); iter.hasNext(); ) { + for (Iterator iter = configRoot.fieldNames(); iter.hasNext();) { String nodeName = iter.next(); JsonNode nodeConfig = configRoot.get(nodeName); BasicNode node = new BasicNode(nodeName, nodeConfig); diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/common/WorkerUtils.java b/trogdor/src/main/java/org/apache/kafka/trogdor/common/WorkerUtils.java index 2c8e0cd7c7473..f5dae38d8ff11 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/common/WorkerUtils.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/common/WorkerUtils.java @@ -226,7 +226,7 @@ private static Collection createTopics(Logger log, Admin adminClient, } if (Time.SYSTEM.milliseconds() > startMs + CREATE_TOPICS_CALL_TIMEOUT) { String str = "Unable to create topic(s): " + - String.join(", ", topicsToCreate) + "after " + tries + " attempt(s)"; + String.join(", ", topicsToCreate) + "after " + tries + " attempt(s)"; log.warn(str); throw new TimeoutException(str); } @@ -256,14 +256,14 @@ static void verifyTopics( Map topicDescriptionMap = topicDescriptions(topicsToVerify, adminClient, retryCount, retryBackoffMs); - for (TopicDescription desc: topicDescriptionMap.values()) { + for (TopicDescription desc : topicDescriptionMap.values()) { // map will always contain the topic since all topics in 'topicsExists' are in given // 'topics' map int partitions = topicsInfo.get(desc.name()).numPartitions(); if (partitions != CreateTopicsRequest.NO_NUM_PARTITIONS && desc.partitions().size() != partitions) { String str = "Topic '" + desc.name() + "' exists, but has " - + desc.partitions().size() + " partitions, while requested " - + " number of partitions is " + partitions; + + desc.partitions().size() + " partitions, while requested " + + " number of partitions is " + partitions; log.warn(str); throw new RuntimeException(str); } @@ -310,7 +310,7 @@ static Collection getMatchingTopicPartitions( ListTopicsResult res = adminClient.listTopics( new ListTopicsOptions().timeoutMs(ADMIN_REQUEST_TIMEOUT)); Map topicListingMap = res.namesToListings().get(); - for (Map.Entry topicListingEntry: topicListingMap.entrySet()) { + for (Map.Entry topicListingEntry : topicListingMap.entrySet()) { if (!topicListingEntry.getValue().isInternal() && topicNamePattern.matcher(topicListingEntry.getKey()).matches()) { matchedTopics.add(topicListingEntry.getKey()); @@ -322,9 +322,9 @@ static Collection getMatchingTopicPartitions( DescribeTopicsResult topicsResult = adminClient.describeTopics( matchedTopics, new DescribeTopicsOptions().timeoutMs(ADMIN_REQUEST_TIMEOUT)); Map topicDescriptionMap = topicsResult.allTopicNames().get(); - for (TopicDescription desc: topicDescriptionMap.values()) { + for (TopicDescription desc : topicDescriptionMap.values()) { List partitions = desc.partitions(); - for (TopicPartitionInfo info: partitions) { + for (TopicPartitionInfo info : partitions) { if ((info.partition() >= startPartition) && (info.partition() <= endPartition)) { out.add(new TopicPartition(desc.name(), info.partition())); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/rest/TaskDone.java b/trogdor/src/main/java/org/apache/kafka/trogdor/rest/TaskDone.java index f888d46ff4d9e..fd01941c03159 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/rest/TaskDone.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/rest/TaskDone.java @@ -16,6 +16,7 @@ */ package org.apache.kafka.trogdor.rest; + import org.apache.kafka.trogdor.task.TaskSpec; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/rest/WorkerState.java b/trogdor/src/main/java/org/apache/kafka/trogdor/rest/WorkerState.java index d1dfe5cb60364..f15b2d41e2a48 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/rest/WorkerState.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/rest/WorkerState.java @@ -35,7 +35,7 @@ @JsonSubTypes.Type(value = WorkerRunning.class, name = "RUNNING"), @JsonSubTypes.Type(value = WorkerStopping.class, name = "STOPPING"), @JsonSubTypes.Type(value = WorkerDone.class, name = "DONE") - }) +}) public abstract class WorkerState extends Message { private final String taskId; private final TaskSpec spec; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConfigurableProducerWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConfigurableProducerWorker.java index 585f43fcaeb63..e5b758080a4d9 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConfigurableProducerWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConfigurableProducerWorker.java @@ -106,7 +106,7 @@ public void run() { } List active = new ArrayList<>(); for (Map.Entry entry : - spec.activeTopic().materialize().entrySet()) { + spec.activeTopic().materialize().entrySet()) { String topicName = entry.getKey(); PartitionsSpec partSpec = entry.getValue(); newTopics.put(topicName, partSpec.newTopic(topicName)); diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConnectionStressWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConnectionStressWorker.java index 91e114f991417..08d2b244e5147 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConnectionStressWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConnectionStressWorker.java @@ -196,7 +196,7 @@ public void close() throws Exception { } } - static class FetchMetadataStressor implements Stressor { + static class FetchMetadataStressor implements Stressor { private final Properties props; FetchMetadataStressor(ConnectionStressSpec spec) { @@ -209,7 +209,7 @@ static class FetchMetadataStressor implements Stressor { public boolean tryConnect() { try (Admin client = Admin.create(this.props)) { client.describeCluster().nodes().get(); - } catch (ExecutionException | InterruptedException e) { + } catch (ExecutionException | InterruptedException e) { return false; } return true; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantFlushGenerator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantFlushGenerator.java index 9de6dd738b957..f5a288422e787 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantFlushGenerator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantFlushGenerator.java @@ -16,6 +16,7 @@ */ package org.apache.kafka.trogdor.workload; + import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.common.errors.InterruptException; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantThroughputGenerator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantThroughputGenerator.java index d46594cbe9406..400f4f677ec14 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantThroughputGenerator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConstantThroughputGenerator.java @@ -16,6 +16,7 @@ */ package org.apache.kafka.trogdor.workload; + import org.apache.kafka.common.utils.Time; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConsumeBenchWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConsumeBenchWorker.java index ad8764542d702..ca878e0ddd3eb 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConsumeBenchWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConsumeBenchWorker.java @@ -74,6 +74,7 @@ public class ConsumeBenchWorker implements TaskWorker { private Future statusUpdaterFuture; private KafkaFutureImpl doneFuture; private ThreadSafeConsumer consumer; + public ConsumeBenchWorker(String id, ConsumeBenchSpec spec) { this.id = id; this.spec = spec; @@ -124,7 +125,7 @@ private List consumeTasks() { consumer = consumer(consumerGroup, clientId(0)); if (toUseGroupPartitionAssignment) { Set topics = partitionsByTopic.keySet(); - tasks.add(new ConsumeMessages(consumer, spec.recordProcessor(), topics)); + tasks.add(new ConsumeMessages(consumer, spec.recordProcessor(), topics)); for (int i = 0; i < consumerCount - 1; i++) { tasks.add(new ConsumeMessages(consumer(consumerGroup(), clientId(i + 1)), spec.recordProcessor(), topics)); @@ -226,6 +227,7 @@ private ConsumeMessages(ThreadSafeConsumer consumer, log.info("Will consume from topics {} via dynamic group assignment.", topics); this.consumer.subscribe(topics); } + ConsumeMessages(ThreadSafeConsumer consumer, Optional recordProcessor, List partitions) { @@ -405,6 +407,7 @@ public static class StatusData { * These should match up with the p50LatencyMs, p95LatencyMs, etc. fields. */ static final float[] PERCENTILES = {0.5f, 0.95f, 0.99f}; + @JsonCreator StatusData(@JsonProperty("assignedPartitions") List assignedPartitions, @JsonProperty("totalMessagesReceived") long totalMessagesReceived, diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/FlushGenerator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/FlushGenerator.java index 0dc55d45208c2..0a8a15da59627 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/FlushGenerator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/FlushGenerator.java @@ -38,7 +38,7 @@ @JsonSubTypes(value = { @JsonSubTypes.Type(value = ConstantFlushGenerator.class, name = "constant"), @JsonSubTypes.Type(value = GaussianFlushGenerator.class, name = "gaussian") - }) +}) public interface FlushGenerator { void increment(KafkaProducer producer); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PartitionsSpec.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PartitionsSpec.java index 2a2f27b470f79..c370c549f380d 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PartitionsSpec.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PartitionsSpec.java @@ -45,7 +45,7 @@ public class PartitionsSpec extends Message { public PartitionsSpec(@JsonProperty("numPartitions") int numPartitions, @JsonProperty("replicationFactor") short replicationFactor, @JsonProperty("partitionAssignments") Map> partitionAssignments, - @JsonProperty("configs") Map configs) { + @JsonProperty("configs") Map configs) { this.numPartitions = numPartitions; this.replicationFactor = replicationFactor; HashMap> partMap = new HashMap<>(); diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PayloadGenerator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PayloadGenerator.java index 6fbe7016f3680..5ca02a77cbd15 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PayloadGenerator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/PayloadGenerator.java @@ -38,7 +38,7 @@ @JsonSubTypes.Type(value = TimestampConstantPayloadGenerator.class, name = "timestampConstant"), @JsonSubTypes.Type(value = GaussianTimestampRandomPayloadGenerator.class, name = "gaussianTimestampRandom"), @JsonSubTypes.Type(value = GaussianTimestampConstantPayloadGenerator.class, name = "gaussianTimestampConstant") - }) +}) public interface PayloadGenerator { /** * Generate a payload. diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchSpec.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchSpec.java index f33855c94e4ec..3472dff5a17ae 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchSpec.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchSpec.java @@ -90,7 +90,7 @@ public ProduceBenchSpec(@JsonProperty("startMs") long startMs, @JsonProperty("adminClientConf") Map adminClientConf, @JsonProperty("activeTopics") TopicsSpec activeTopics, @JsonProperty("inactiveTopics") TopicsSpec inactiveTopics, - @JsonProperty("useConfiguredPartitioner") boolean useConfiguredPartitioner, + @JsonProperty("useConfiguredPartitioner") boolean useConfiguredPartitioner, @JsonProperty("skipFlush") boolean skipFlush) { super(startMs, durationMs); this.producerNode = (producerNode == null) ? "" : producerNode; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchWorker.java index 94f4844b70dc7..9aa536d13ee02 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ProduceBenchWorker.java @@ -59,7 +59,7 @@ public class ProduceBenchWorker implements TaskWorker { private static final Logger log = LoggerFactory.getLogger(ProduceBenchWorker.class); - + private static final int THROTTLE_PERIOD_MS = 100; private final String id; @@ -102,7 +102,7 @@ public void run() { Map newTopics = new HashMap<>(); HashSet active = new HashSet<>(); for (Map.Entry entry : - spec.activeTopics().materialize().entrySet()) { + spec.activeTopics().materialize().entrySet()) { String topicName = entry.getKey(); PartitionsSpec partSpec = entry.getValue(); newTopics.put(topicName, partSpec.newTopic(topicName)); @@ -114,7 +114,7 @@ public void run() { throw new RuntimeException("You must specify at least one active topic."); } for (Map.Entry entry : - spec.inactiveTopics().materialize().entrySet()) { + spec.inactiveTopics().materialize().entrySet()) { String topicName = entry.getKey(); PartitionsSpec partSpec = entry.getValue(); newTopics.put(topicName, partSpec.newTopic(topicName)); diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RecordProcessor.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RecordProcessor.java index 821c3a486c49d..12219501f6511 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RecordProcessor.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RecordProcessor.java @@ -32,5 +32,6 @@ }) public interface RecordProcessor { void processRecords(ConsumerRecords consumerRecords); + JsonNode processorStatus(); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RoundTripWorkerBase.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RoundTripWorkerBase.java index 436fce0b68f3e..94f2bda923a6f 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RoundTripWorkerBase.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/RoundTripWorkerBase.java @@ -314,7 +314,7 @@ void log() { synchronized (this) { numToReceive = pending.size(); for (Iterator iter = pending.iterator(); - iter.hasNext() && (list.size() < LOG_NUM_MESSAGES); ) { + iter.hasNext() && (list.size() < LOG_NUM_MESSAGES);) { Long i = iter.next(); list.add(i); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareConsumeBenchWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareConsumeBenchWorker.java index f85324463f523..d363a6503a906 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareConsumeBenchWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareConsumeBenchWorker.java @@ -73,6 +73,7 @@ public class ShareConsumeBenchWorker implements TaskWorker { private StatusUpdater statusUpdater; private Future statusUpdaterFuture; private KafkaFutureImpl doneFuture; + public ShareConsumeBenchWorker(String id, ShareConsumeBenchSpec spec) { this.id = id; this.spec = spec; @@ -354,6 +355,7 @@ public static class StatusData { * These should match up with the p50LatencyMs, p95LatencyMs, etc. fields. */ static final float[] PERCENTILES = {0.5f, 0.95f, 0.99f}; + @JsonCreator StatusData(@JsonProperty("subscription") Set subscription, @JsonProperty("totalMessagesReceived") long totalMessagesReceived, diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareRoundTripWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareRoundTripWorker.java index 27df31474622c..3f6811a42a9ef 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareRoundTripWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ShareRoundTripWorker.java @@ -46,6 +46,7 @@ public class ShareRoundTripWorker extends RoundTripWorkerBase { private static final Logger log = LoggerFactory.getLogger(ShareRoundTripWorker.class); KafkaShareConsumer consumer; + ShareRoundTripWorker(String id, RoundTripWorkloadSpec spec) { this.id = id; this.spec = spec; diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/SustainedConnectionWorker.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/SustainedConnectionWorker.java index 336544193e541..2b386133361b0 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/SustainedConnectionWorker.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/SustainedConnectionWorker.java @@ -139,7 +139,9 @@ public void start(Platform platform, WorkerStatusTracker status, private interface SustainedConnection extends AutoCloseable { boolean needsRefresh(long milliseconds); + void refresh(); + void claim(); } diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ThroughputGenerator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ThroughputGenerator.java index 474dfdc3b77fb..a3fafa5e7abf5 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ThroughputGenerator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/workload/ThroughputGenerator.java @@ -37,7 +37,7 @@ @JsonSubTypes(value = { @JsonSubTypes.Type(value = ConstantThroughputGenerator.class, name = "constant"), @JsonSubTypes.Type(value = GaussianThroughputGenerator.class, name = "gaussian") - }) +}) public interface ThroughputGenerator { void throttle() throws InterruptedException; } diff --git a/trogdor/src/test/java/org/apache/kafka/trogdor/coordinator/CoordinatorTest.java b/trogdor/src/test/java/org/apache/kafka/trogdor/coordinator/CoordinatorTest.java index 866c8cb48c0d4..1412d04da2598 100644 --- a/trogdor/src/test/java/org/apache/kafka/trogdor/coordinator/CoordinatorTest.java +++ b/trogdor/src/test/java/org/apache/kafka/trogdor/coordinator/CoordinatorTest.java @@ -184,7 +184,7 @@ public void testTaskDistribution() throws Exception { new ExpectedTasks(). addTask(new ExpectedTaskBuilder("foo"). taskState(new TaskRunning(fooSpec, 11, status1)). - workerState(new WorkerRunning("foo", fooSpec, 11, new TextNode("active"))). + workerState(new WorkerRunning("foo", fooSpec, 11, new TextNode("active"))). build()). waitFor(coordinatorClient). waitFor(agentClient1). diff --git a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java index ec0dc7fe51907..471eb4e8fd7c7 100644 --- a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java +++ b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java @@ -171,7 +171,7 @@ public void testProcessForceKillTimeout() throws Exception { } } CompletableFuture statusFuture = new CompletableFuture<>(); - final WorkerStatusTracker statusTracker = status -> statusFuture .complete(status.textValue()); + final WorkerStatusTracker statusTracker = status -> statusFuture.complete(status.textValue()); ExternalCommandWorker worker = new ExternalCommandWorkerBuilder("testForceKillTask"). shutdownGracePeriodMs(1). command("bash", tempFile.getAbsolutePath()). diff --git a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/PayloadGeneratorTest.java b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/PayloadGeneratorTest.java index 21d1e418070f0..60b2644417841 100644 --- a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/PayloadGeneratorTest.java +++ b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/PayloadGeneratorTest.java @@ -87,7 +87,7 @@ public void testUniformRandomPayloadGenerator() { PayloadIterator iter = new PayloadIterator( new UniformRandomPayloadGenerator(1234, 456, 0)); byte[] prev = iter.next(); - for (int uniques = 0; uniques < 1000; ) { + for (int uniques = 0; uniques < 1000;) { byte[] cur = iter.next(); assertEquals(prev.length, cur.length); if (!Arrays.equals(prev, cur)) { @@ -127,24 +127,24 @@ public void testUniformRandomPayloadGeneratorPaddingBytes() { assertArrayEquals(val1End, val2End); assertArrayEquals(val1End, val3End); } - + @Test public void testRandomComponentPayloadGenerator() { NullPayloadGenerator nullGenerator = new NullPayloadGenerator(); RandomComponent nullConfig = new RandomComponent(50, nullGenerator); - + UniformRandomPayloadGenerator uniformGenerator = new UniformRandomPayloadGenerator(5, 123, 0); RandomComponent uniformConfig = new RandomComponent(50, uniformGenerator); - + SequentialPayloadGenerator sequentialGenerator = new SequentialPayloadGenerator(4, 10); RandomComponent sequentialConfig = new RandomComponent(75, sequentialGenerator); - + ConstantPayloadGenerator constantGenerator = new ConstantPayloadGenerator(4, new byte[0]); RandomComponent constantConfig = new RandomComponent(25, constantGenerator); - + List components1 = List.of(nullConfig, uniformConfig); List components2 = List.of(sequentialConfig, constantConfig); byte[] expected = new byte[4]; @@ -161,7 +161,7 @@ public void testRandomComponentPayloadGenerator() { notNull++; } } - + iter = new PayloadIterator( new RandomComponentPayloadGenerator(123, components2)); int isZeroBytes = 0; @@ -174,20 +174,20 @@ public void testRandomComponentPayloadGenerator() { isNotZeroBytes++; } } - + RandomComponent uniformConfig2 = new RandomComponent(25, uniformGenerator); RandomComponent sequentialConfig2 = new RandomComponent(25, sequentialGenerator); RandomComponent nullConfig2 = new RandomComponent(25, nullGenerator); - + List components3 = List.of(sequentialConfig2, uniformConfig2, nullConfig); List components4 = List.of(uniformConfig2, sequentialConfig2, constantConfig, nullConfig2); - + testReproducible(new RandomComponentPayloadGenerator(4, components1)); testReproducible(new RandomComponentPayloadGenerator(123, components2)); testReproducible(new RandomComponentPayloadGenerator(50, components3)); testReproducible(new RandomComponentPayloadGenerator(0, components4)); - } - + } + @Test public void testRandomComponentPayloadGeneratorErrors() { NullPayloadGenerator nullGenerator = new NullPayloadGenerator(); @@ -198,11 +198,11 @@ public void testRandomComponentPayloadGeneratorErrors() { ConstantPayloadGenerator constantGenerator = new ConstantPayloadGenerator(4, new byte[0]); RandomComponent constantConfig = new RandomComponent(-25, constantGenerator); - + List components1 = List.of(nullConfig, uniformConfig); List components2 = List.of( nullConfig, constantConfig, uniformConfig, nullConfig, uniformConfig, uniformConfig); - + assertThrows(IllegalArgumentException.class, () -> new PayloadIterator(new RandomComponentPayloadGenerator(1, List.of()))); assertThrows(IllegalArgumentException.class, () ->