You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ma...@apache.org on 2019/03/11 14:19:22 UTC

[kafka] branch trunk updated: KAFKA-7939: Fix timing issue in KafkaAdminClientTest.testCreateTopicsRetryBackoff

This is an automated email from the ASF dual-hosted git repository.

manikumar pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 173a7e3  KAFKA-7939: Fix timing issue in KafkaAdminClientTest.testCreateTopicsRetryBackoff
173a7e3 is described below

commit 173a7e3d54ede6616037d6c55057417dfeb44ab9
Author: Manikumar Reddy <ma...@gmail.com>
AuthorDate: Mon Mar 11 19:48:52 2019 +0530

    KAFKA-7939: Fix timing issue in KafkaAdminClientTest.testCreateTopicsRetryBackoff
    
    There is a small timing window where ```time.sleep(retryBackoff)``` will get executed before adminClient adds retry request to the queue.  Added a check to wait until the retry call added to the queue in AdminClient.
    
    Author: Manikumar Reddy <ma...@gmail.com>
    
    Reviewers: Rajini Sivaram <ra...@googlemail.com>
    
    Closes #6418 from omkreddy/KAFKA-7939
---
 .../main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java   | 5 +++++
 .../java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java    | 5 +++++
 2 files changed, 10 insertions(+)

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 606c816..317cd7c 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
@@ -1261,6 +1261,11 @@ public class KafkaAdminClient extends AdminClient {
         return groupId == null;
     }
 
+    //for testing
+    int numPendingCalls() {
+        return runnable.pendingCalls.size();
+    }
+
     @Override
     public CreateTopicsResult createTopics(final Collection<NewTopic> newTopics,
                                            final CreateTopicsOptions options) {
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 9e25034..af6f49b 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
@@ -352,6 +352,11 @@ public class KafkaAdminClientTest {
             // Wait until the first attempt has failed, then advance the time
             TestUtils.waitForCondition(() -> mockClient.numAwaitingResponses() == 1,
                     "Failed awaiting CreateTopics first request failure");
+
+            // Wait until the retry call added to the queue in AdminClient
+            TestUtils.waitForCondition(() -> ((KafkaAdminClient) env.adminClient()).numPendingCalls() == 1,
+                "Failed to add retry CreateTopics call");
+
             time.sleep(retryBackoff);
 
             future.get();