Return-Path: X-Original-To: apmail-kafka-commits-archive@www.apache.org Delivered-To: apmail-kafka-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1A67E181E3 for ; Tue, 28 Jul 2015 23:31:11 +0000 (UTC) Received: (qmail 47766 invoked by uid 500); 28 Jul 2015 23:31:10 -0000 Delivered-To: apmail-kafka-commits-archive@kafka.apache.org Received: (qmail 47738 invoked by uid 500); 28 Jul 2015 23:31:10 -0000 Mailing-List: contact commits-help@kafka.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@kafka.apache.org Delivered-To: mailing list commits@kafka.apache.org Received: (qmail 47728 invoked by uid 99); 28 Jul 2015 23:31:10 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Jul 2015 23:31:10 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 91826E188B; Tue, 28 Jul 2015 23:31:10 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: guozhang@apache.org To: commits@kafka.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: kafka git commit: KAFKA-2089: Fix transient MetadataTest failure; reviewed by Jiangjie Qin and Guozhang Wang Date: Tue, 28 Jul 2015 23:31:10 +0000 (UTC) Repository: kafka Updated Branches: refs/heads/trunk 594b96393 -> f4101ab3f KAFKA-2089: Fix transient MetadataTest failure; reviewed by Jiangjie Qin and Guozhang Wang Project: http://git-wip-us.apache.org/repos/asf/kafka/repo Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/f4101ab3 Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/f4101ab3 Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/f4101ab3 Branch: refs/heads/trunk Commit: f4101ab3fcf7ec65f6541b157f1894ffdc8d861d Parents: 594b963 Author: Rajini Sivaram Authored: Tue Jul 28 16:31:33 2015 -0700 Committer: Guozhang Wang Committed: Tue Jul 28 16:31:33 2015 -0700 ---------------------------------------------------------------------- .../org/apache/kafka/clients/MetadataTest.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kafka/blob/f4101ab3/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java ---------------------------------------------------------------------- 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 249d6b8..5fe8821 100644 --- a/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/MetadataTest.java @@ -12,7 +12,7 @@ */ package org.apache.kafka.clients; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import org.apache.kafka.common.Cluster; import org.apache.kafka.common.errors.TimeoutException; @@ -27,11 +27,11 @@ public class MetadataTest { private long refreshBackoffMs = 100; private long metadataExpireMs = 1000; private Metadata metadata = new Metadata(refreshBackoffMs, metadataExpireMs); - private AtomicBoolean backgroundError = new AtomicBoolean(false); + private AtomicReference backgroundError = new AtomicReference(); @After public void tearDown() { - assertFalse(backgroundError.get()); + assertNull("Exception in background thread : " + backgroundError.get(), backgroundError.get()); } @Test @@ -48,7 +48,15 @@ public class MetadataTest { Thread t2 = asyncFetch(topic); assertTrue("Awaiting update", t1.isAlive()); assertTrue("Awaiting update", t2.isAlive()); - metadata.update(TestUtils.singletonCluster(topic, 1), time); + // Perform metadata update when an update is requested on the async fetch thread + // This simulates the metadata update sequence in KafkaProducer + while (t1.isAlive() || t2.isAlive()) { + if (metadata.timeToNextUpdate(time) == 0) { + metadata.update(TestUtils.singletonCluster(topic, 1), time); + time += refreshBackoffMs; + } + Thread.sleep(1); + } t1.join(); t2.join(); assertFalse("No update needed.", metadata.timeToNextUpdate(time) == 0); @@ -106,7 +114,7 @@ public class MetadataTest { try { metadata.awaitUpdate(metadata.requestUpdate(), refreshBackoffMs); } catch (Exception e) { - backgroundError.set(true); + backgroundError.set(e.toString()); } } }