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

lhotari pushed a commit to branch branch-4.16
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 82171ba198981695cf5ded4e5420716bfd3ce450
Author: Yan Zhao <[email protected]>
AuthorDate: Thu Jan 11 05:50:48 2024 +0800

    Improve auto-recovery noise log when some bookie down. (#4118)
    
    * Improve auto-recovery noise log when some bookie down.
    
    * Address comment.
    
    (cherry picked from commit 54168b5d6441f7cbe0b478867d8301a6eee0b891)
---
 .../client/RackawareEnsemblePlacementPolicyImpl.java  | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
index 86a9d507fe..f71302e3d1 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
@@ -467,13 +467,26 @@ public class RackawareEnsemblePlacementPolicyImpl extends 
TopologyAwareEnsembleP
         try {
             excludeBookies = 
addDefaultRackBookiesIfMinNumRacksIsEnforced(excludeBookies);
             excludeBookies.addAll(currentEnsemble);
+
+            Set<Node> ensembleNodes = new HashSet<>();
+            Set<Node> excludeNodes = new HashSet<>();
             BookieNode bn = knownBookies.get(bookieToReplace);
             if (null == bn) {
                 bn = createBookieNode(bookieToReplace);
             }
-
-            Set<Node> ensembleNodes = convertBookiesToNodes(currentEnsemble);
-            Set<Node> excludeNodes = convertBookiesToNodes(excludeBookies);
+            for (BookieId bookieId : currentEnsemble) {
+                if (bookieId.equals(bookieToReplace)) {
+                    continue;
+                }
+                ensembleNodes.add(convertBookieToNode(bookieId));
+            }
+            for (BookieId bookieId : excludeBookies) {
+                if (bookieId.equals(bookieToReplace)) {
+                    excludeNodes.add(bn);
+                    continue;
+                }
+                excludeNodes.add(convertBookieToNode(bookieId));
+            }
 
             excludeNodes.addAll(ensembleNodes);
             excludeNodes.add(bn);

Reply via email to