Skip to content

Commit 2323ad2

Browse files
HDFS-17260. Fix the logic for reconfigure slow peer enable for Namenode. (#6279). Contributed by huangzhaobo99.
Reviewed-by: huhaiyang <huhaiyang926@126.com> Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
1 parent d0b460f commit 2323ad2

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ public void stopSlowPeerCollector() {
420420
LOG.error("Slow peers collection thread did not shutdown", e);
421421
} finally {
422422
slowPeerCollectorDaemon = null;
423+
slowNodesUuidSet.clear();
423424
}
424425
}
425426

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/SlowPeerDisabledTracker.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.apache.hadoop.conf.Configuration;
3434
import org.apache.hadoop.hdfs.DFSConfigKeys;
3535
import org.apache.hadoop.hdfs.server.protocol.OutlierMetrics;
36-
import org.apache.hadoop.util.Preconditions;
3736
import org.apache.hadoop.util.Timer;
3837

3938
/**
@@ -46,11 +45,6 @@ public class SlowPeerDisabledTracker extends SlowPeerTracker {
4645

4746
public SlowPeerDisabledTracker(Configuration conf, Timer timer) {
4847
super(conf, timer);
49-
final boolean dataNodePeerStatsEnabledVal =
50-
conf.getBoolean(DFSConfigKeys.DFS_DATANODE_PEER_STATS_ENABLED_KEY,
51-
DFSConfigKeys.DFS_DATANODE_PEER_STATS_ENABLED_DEFAULT);
52-
Preconditions.checkArgument(!dataNodePeerStatsEnabledVal,
53-
"SlowPeerDisabledTracker should only be used for disabled slow peer stats.");
5448
}
5549

5650
@Override

hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestReplicationPolicyExcludeSlowNodes.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.apache.hadoop.hdfs.server.namenode.NameNode;
2525
import org.apache.hadoop.hdfs.server.protocol.OutlierMetrics;
2626

27+
import org.apache.hadoop.test.GenericTestUtils;
28+
import org.junit.Assert;
2729
import org.junit.Test;
2830
import org.junit.runner.RunWith;
2931
import org.junit.runners.Parameterized;
@@ -32,7 +34,9 @@
3234
import java.util.Arrays;
3335
import java.util.Set;
3436

37+
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_PEER_STATS_ENABLED_KEY;
3538
import static org.junit.Assert.assertEquals;
39+
import static org.junit.Assert.assertFalse;
3640
import static org.junit.Assert.assertTrue;
3741

3842
@RunWith(Parameterized.class)
@@ -136,4 +140,40 @@ public void testChooseTargetExcludeSlowNodes() throws Exception {
136140
NameNode.LOG.info("Done working on it");
137141
}
138142

143+
@Test
144+
public void testSlowPeerTrackerEnabledClearSlowNodes() throws Exception {
145+
namenode.getNamesystem().writeLock();
146+
try {
147+
// add nodes
148+
for (DatanodeDescriptor dataNode : dataNodes) {
149+
dnManager.addDatanode(dataNode);
150+
}
151+
152+
// mock slow nodes
153+
SlowPeerTracker tracker = dnManager.getSlowPeerTracker();
154+
Assert.assertNotNull(tracker);
155+
156+
OutlierMetrics outlierMetrics = new OutlierMetrics(0.0, 0.0, 0.0, 5.0);
157+
tracker.addReport(dataNodes[0].getInfoAddr(), dataNodes[3].getInfoAddr(),
158+
outlierMetrics);
159+
tracker.addReport(dataNodes[1].getInfoAddr(), dataNodes[3].getInfoAddr(),
160+
outlierMetrics);
161+
tracker.addReport(dataNodes[2].getInfoAddr(), dataNodes[3].getInfoAddr(),
162+
outlierMetrics);
163+
164+
// check slow nodes
165+
assertFalse(dnManager.isSlowPeerCollectorInitialized());
166+
GenericTestUtils.waitFor(
167+
() -> DatanodeManager.getSlowNodesUuidSet().size() == 3, 100, 3000);
168+
169+
// reconfig
170+
namenode.reconfigureProperty(DFS_DATANODE_PEER_STATS_ENABLED_KEY,
171+
"false");
172+
assertTrue(dnManager.isSlowPeerCollectorInitialized());
173+
assertEquals(0, DatanodeManager.getSlowNodesUuidSet().size());
174+
} finally {
175+
namenode.getNamesystem().writeUnlock();
176+
}
177+
}
178+
139179
}

0 commit comments

Comments
 (0)