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]