From 1fd1646eb9865b7c93ef0c5efc4ec51d4c7e7b56 Mon Sep 17 00:00:00 2001 From: David Arthur Date: Fri, 6 Sep 2024 13:54:03 -0400 Subject: [PATCH] KAFKA-15648 Update leader volatile before handleLeaderChange in LocalLogManager (#17118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the leader before calling handleLeaderChange and use the given epoch in LocalLogManager#prepareAppend. This should hopefully fix several flaky QuorumControllerTest tests. Reviewers: José Armando García Sancio --- .../test/java/org/apache/kafka/metalog/LocalLogManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metadata/src/test/java/org/apache/kafka/metalog/LocalLogManager.java b/metadata/src/test/java/org/apache/kafka/metalog/LocalLogManager.java index ca85505da73..70e39251b0b 100644 --- a/metadata/src/test/java/org/apache/kafka/metalog/LocalLogManager.java +++ b/metadata/src/test/java/org/apache/kafka/metalog/LocalLogManager.java @@ -563,10 +563,10 @@ public final class LocalLogManager implements RaftClient, if (batch.newLeader.equals(sharedLeader)) { log.debug("Node {}: Executing handleLeaderChange {}", nodeId, sharedLeader); - listenerData.handleLeaderChange(entryOffset, batch.newLeader); if (batch.newLeader.epoch() > leader.epoch()) { leader = batch.newLeader; } + listenerData.handleLeaderChange(entryOffset, batch.newLeader); } else { log.debug("Node {}: Ignoring {} since it doesn't match the latest known leader {}", nodeId, batch.newLeader, sharedLeader); @@ -733,7 +733,7 @@ public final class LocalLogManager implements RaftClient, throw new BufferAllocationException("Test asked to fail the next prepareAppend"); } - return shared.tryAppend(nodeId, leader.epoch(), batch); + return shared.tryAppend(nodeId, epoch, batch); } @Override