java-topology/defects/hadoop/patch/hadoop-0002.patch

28 lines
1.3 KiB
Diff

# UNDF: UNDF-2026-000000097
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/HeartbeatManager.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/HeartbeatManager.java
@@ -18,7 +18,9 @@ import java.util.ArrayList;
import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
// ... (other imports unchanged)
@@ -447,8 +447,8 @@ class HeartbeatManager implements DatanodeStatistics {
boolean allAlive = false;
// Locate limited dead nodes.
- List<DatanodeDescriptor> deadDatanodes = new ArrayList<>(
- numOfDeadDatanodesRemove);
+ Set<DatanodeDescriptor> deadDatanodes = new HashSet<>(
+ numOfDeadDatanodesRemove * 2);
// Locate limited failed storages that isn't on a dead node.
List<DatanodeStorageInfo> failedStorages = new ArrayList<>(
numOfDeadDatanodesRemove);
@@ -493,7 +493,7 @@ class HeartbeatManager implements DatanodeStatistics {
if (failedStorages.size() < numOfDeadDatanodesRemove &&
storageInfo.areBlocksOnFailedStorage() &&
- !deadDatanodes.contains(d)) {
+ !deadDatanodes.contains(d)) { // now O(1) via HashSet
failedStorages.add(storageInfo);
}
}