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

nanda pushed a commit to branch HDDS-2823
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-2823 by this push:
     new 9e9defd  HDDS-4589: Handle potential data loss during 
ReplicationManager.handleOverReplicatedContainer(). (#1700)
9e9defd is described below

commit 9e9defd5721dda3b6631332835fc6f7b1a2fd4ba
Author: GlenGeng <[email protected]>
AuthorDate: Thu Dec 17 15:27:12 2020 +0800

    HDDS-4589: Handle potential data loss during 
ReplicationManager.handleOverReplicatedContainer(). (#1700)
---
 .../org/apache/hadoop/hdds/scm/container/ReplicationManager.java   | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
index bb102b1..91e5f72 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -784,6 +785,12 @@ public class ReplicationManager
 
       final List<ContainerReplica> eligibleReplicas = new 
ArrayList<>(replicas);
 
+      // Iterate replicas in deterministic order to avoid potential data loss.
+      // See https://issues.apache.org/jira/browse/HDDS-4589.
+      // N.B., sort replicas by (containerID, datanodeDetails).
+      eligibleReplicas.sort(
+          Comparator.comparingLong(ContainerReplica::hashCode));
+
       final Map<UUID, ContainerReplica> uniqueReplicas =
           new LinkedHashMap<>();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to