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);