You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by na...@apache.org on 2020/12/17 07:27:24 UTC
[ozone] branch HDDS-2823 updated: HDDS-4589: Handle potential data
loss during ReplicationManager.handleOverReplicatedContainer(). (#1700)
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 <gl...@tencent.com>
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: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org