From 2e4a378c273da4ff9fa45ffd8a15e6f2ad5f14e7 Mon Sep 17 00:00:00 2001 From: TengYao Chi Date: Mon, 6 Jan 2025 18:12:46 +0800 Subject: [PATCH] KAFKA-18131: Improve logs for voters (#18028) Currently, the log of LeaderState#timeUntilCheckQuorumExpires uses streams without a terminal operator, resulting in output like java.util.stream.ReferencePipeline$3@39660237. This PR aims to fix this issue and improve the log message. Reviewers: Luke Chen --- raft/src/main/java/org/apache/kafka/raft/LeaderState.java | 5 ++++- raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java index eb5f8cb3d87..ff74602217b 100644 --- a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java +++ b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java @@ -156,7 +156,10 @@ public class LeaderState implements EpochState { "Current fetched voters are {}, and voters are {}", checkQuorumTimeoutMs, fetchedVoters, - voterStates.values().stream().map(voter -> voter.replicaKey) + voterStates.values() + .stream() + .map(voter -> voter.replicaKey) + .collect(Collectors.toUnmodifiableSet()) ); } return remainingMs; diff --git a/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java b/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java index a1acc39d57c..f25a1d55ba4 100644 --- a/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java +++ b/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java @@ -70,7 +70,7 @@ public final class ReplicaKey implements Comparable { @Override public String toString() { - return String.format("ReplicaKey(id=%d, directoryId=%s)", id, directoryId); + return String.format("ReplicaKey(id=%d, directoryId=%s)", id, directoryId.map(Uuid::toString).orElse("")); } public static ReplicaKey of(int id, Uuid directoryId) {