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 <rajinisivaram@googlemail.com>
Authored: Tue Jul 28 16:31:33 2015 -0700
Committer: Guozhang Wang <wangguoz@gmail.com>
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<String> backgroundError = new AtomicReference<String>();
@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());
}
}
}
|