You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by jk...@apache.org on 2015/02/22 00:40:24 UTC

kafka git commit: KAFKA-1919: Always update the metadata, when a metadata response is received to ensure we back off.

Repository: kafka
Updated Branches:
  refs/heads/trunk fbb115497 -> 19031823c


KAFKA-1919: Always update the metadata, when a metadata response is received to ensure we back off.


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/19031823
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/19031823
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/19031823

Branch: refs/heads/trunk
Commit: 19031823c15cb3a0e5fcecaaf5de79c09b5300ed
Parents: fbb1154
Author: Jay Kreps <ja...@gmail.com>
Authored: Wed Feb 4 17:01:51 2015 -0800
Committer: Jay Kreps <ja...@gmail.com>
Committed: Sat Feb 21 15:39:23 2015 -0800

----------------------------------------------------------------------
 clients/src/main/java/org/apache/kafka/clients/Metadata.java | 8 ++++++++
 .../main/java/org/apache/kafka/clients/NetworkClient.java    | 6 ++++--
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kafka/blob/19031823/clients/src/main/java/org/apache/kafka/clients/Metadata.java
----------------------------------------------------------------------
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 b8cdd14..e8afecd 100644
--- a/clients/src/main/java/org/apache/kafka/clients/Metadata.java
+++ b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
@@ -148,6 +148,14 @@ public final class Metadata {
     }
     
     /**
+     * Record an attempt to update the metadata that failed. We need to keep track of this
+     * to avoid retrying immediately.
+     */
+    public synchronized void failedUpdate(long now) {
+        this.lastRefreshMs = now;
+    }
+    
+    /**
      * @return The current metadata version
      */
     public synchronized int version() {

http://git-wip-us.apache.org/repos/asf/kafka/blob/19031823/clients/src/main/java/org/apache/kafka/clients/NetworkClient.java
----------------------------------------------------------------------
diff --git a/clients/src/main/java/org/apache/kafka/clients/NetworkClient.java b/clients/src/main/java/org/apache/kafka/clients/NetworkClient.java
index fef90a0..a7fa4a9 100644
--- a/clients/src/main/java/org/apache/kafka/clients/NetworkClient.java
+++ b/clients/src/main/java/org/apache/kafka/clients/NetworkClient.java
@@ -381,10 +381,12 @@ public class NetworkClient implements KafkaClient {
         Cluster cluster = response.cluster();
         // don't update the cluster if there are no valid nodes...the topic we want may still be in the process of being
         // created which means we will get errors and no nodes until it exists
-        if (cluster.nodes().size() > 0)
+        if (cluster.nodes().size() > 0) {
             this.metadata.update(cluster, now);
-        else
+        } else {
             log.trace("Ignoring empty metadata response with correlation id {}.", header.correlationId());
+            this.metadata.failedUpdate(now);
+        }
     }
 
     /**