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

jolshan 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 6d9d65e6664 MINOR: Change ordering of checks to prevent log spam on 
metadata updates (#13447)
6d9d65e6664 is described below

commit 6d9d65e6664153f8a7557ec31b5983eb0ac26782
Author: Justine Olshan <[email protected]>
AuthorDate: Thu Mar 30 09:23:55 2023 -0700

    MINOR: Change ordering of checks to prevent log spam on metadata updates 
(#13447)
    
    On startup, we always update the metadata. The topic ID also goes from null 
to defined. Move the epoch is null check to before the topic ID check to 
prevent log spam.
    
    Reviewers: David Jacot <[email protected]>, Jason Gustafson 
<[email protected]>
---
 clients/src/main/java/org/apache/kafka/clients/Metadata.java | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

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 60d2c0516da..c42eb474a6c 100644
--- a/clients/src/main/java/org/apache/kafka/clients/Metadata.java
+++ b/clients/src/main/java/org/apache/kafka/clients/Metadata.java
@@ -394,16 +394,22 @@ public class Metadata implements Closeable {
         if (hasReliableLeaderEpoch && 
partitionMetadata.leaderEpoch.isPresent()) {
             int newEpoch = partitionMetadata.leaderEpoch.get();
             Integer currentEpoch = lastSeenLeaderEpochs.get(tp);
-            if (topicId != null && !topicId.equals(oldTopicId)) {
+            if (currentEpoch == null) {
+                // We have no previous info, so we can just insert the new 
epoch info
+                log.debug("Setting the last seen epoch of partition {} to {} 
since the last known epoch was undefined.",
+                        tp, newEpoch);
+                lastSeenLeaderEpochs.put(tp, newEpoch);
+                return Optional.of(partitionMetadata);
+            } else if (topicId != null && !topicId.equals(oldTopicId)) {
                 // If the new topic ID is valid and different from the last 
seen topic ID, update the metadata.
                 // Between the time that a topic is deleted and re-created, 
the client may lose track of the
                 // corresponding topicId (i.e. `oldTopicId` will be null). In 
this case, when we discover the new
                 // topicId, we allow the corresponding leader epoch to 
override the last seen value.
                 log.info("Resetting the last seen epoch of partition {} to {} 
since the associated topicId changed from {} to {}",
-                         tp, newEpoch, oldTopicId, topicId);
+                        tp, newEpoch, oldTopicId, topicId);
                 lastSeenLeaderEpochs.put(tp, newEpoch);
                 return Optional.of(partitionMetadata);
-            } else if (currentEpoch == null || newEpoch >= currentEpoch) {
+            } else if (newEpoch >= currentEpoch) {
                 // If the received leader epoch is at least the same as the 
previous one, update the metadata
                 log.debug("Updating last seen epoch for partition {} from {} 
to epoch {} from new metadata", tp, currentEpoch, newEpoch);
                 lastSeenLeaderEpochs.put(tp, newEpoch);

Reply via email to