28 lines
1.3 KiB
Diff
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);
|
|
}
|
|
}
|