[ https://issues.apache.org/jira/browse/HDFS-16811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17626149#comment-17626149 ]
ASF GitHub Bot commented on HDFS-16811: --------------------------------------- tomscut commented on code in PR #5068: URL: https://github.com/apache/hadoop/pull/5068#discussion_r1008774407 ########## hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeReconfigure.java: ########## @@ -567,6 +571,92 @@ private List<Boolean> validatePeerReport(String jsonReport) { return containReport; } + @Test + public void testReconfigureDecommissionBackoffMonitorParameters() + throws ReconfigurationException, IOException { + Configuration conf = new HdfsConfiguration(); + conf.setClass(DFSConfigKeys.DFS_NAMENODE_DECOMMISSION_MONITOR_CLASS, + DatanodeAdminBackoffMonitor.class, DatanodeAdminMonitorInterface.class); + int defaultPendingRepLimit = 1000; + conf.setInt(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_LIMIT, defaultPendingRepLimit); + int defaultBlocksPerLock = 1000; + conf.setInt(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK, + defaultBlocksPerLock); + MiniDFSCluster newCluster = new MiniDFSCluster.Builder(conf).build(); + newCluster.waitActive(); + + try { + final NameNode nameNode = newCluster.getNameNode(); + final DatanodeManager datanodeManager = nameNode.namesystem + .getBlockManager().getDatanodeManager(); + + // verify defaultPendingRepLimit. + assertEquals(datanodeManager.getDatanodeAdminManager().getPendingRepLimit(), + defaultPendingRepLimit); + + // try invalid pendingRepLimit. + try { + nameNode.reconfigureProperty(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_LIMIT, + "non-numeric"); + fail("Should not reach here"); + } catch (ReconfigurationException e) { + assertEquals("Could not change property " + + "dfs.namenode.decommission.backoff.monitor.pending.limit from '" + + defaultPendingRepLimit + "' to 'non-numeric'", e.getMessage()); + } + + try { + nameNode.reconfigureProperty(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_LIMIT, + "-1"); + fail("Should not reach here"); + } catch (ReconfigurationException e) { + assertEquals("Could not change property " + + "dfs.namenode.decommission.backoff.monitor.pending.limit from '" + + defaultPendingRepLimit + "' to '-1'", e.getMessage()); + } + + // try correct pendingRepLimit. + nameNode.reconfigureProperty(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_LIMIT, + "20000"); + assertEquals(datanodeManager.getDatanodeAdminManager().getPendingRepLimit(), 20000); + + // verify defaultBlocksPerLock. + assertEquals(datanodeManager.getDatanodeAdminManager().getBlocksPerLock(), + defaultBlocksPerLock); + + // try invalid blocksPerLock. + try { + nameNode.reconfigureProperty( + DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK, + "non-numeric"); + fail("Should not reach here"); + } catch (ReconfigurationException e) { + assertEquals("Could not change property " + + "dfs.namenode.decommission.backoff.monitor.pending.blocks.per.lock from '" + + defaultBlocksPerLock + "' to 'non-numeric'", e.getMessage()); + } + + try { + nameNode.reconfigureProperty( + DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK, "-1"); + fail("Should not reach here"); + } catch (ReconfigurationException e) { + assertEquals("Could not change property " + + "dfs.namenode.decommission.backoff.monitor.pending.blocks.per.lock from '" + + defaultBlocksPerLock + "' to '-1'", e.getMessage()); + } + + // try correct blocksPerLock. + nameNode.reconfigureProperty( + DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK, "10000"); + assertEquals(datanodeManager.getDatanodeAdminManager().getBlocksPerLock(), 10000); + } finally { Review Comment: ```suggestion ``` > Support to make dfs.namenode.decommission.backoff.monitor.pending.limit > reconfigurable > --------------------------------------------------------------------------------------- > > Key: HDFS-16811 > URL: https://issues.apache.org/jira/browse/HDFS-16811 > Project: Hadoop HDFS > Issue Type: Improvement > Reporter: Haiyang Hu > Assignee: Haiyang Hu > Priority: Major > Labels: pull-request-available > > When the Backoff monitor is enabled, the parameter > dfs.namenode.decommission.backoff.monitor.pending.limit can be dynamically > adjusted to determines the maximum number of blocks related to decommission > and maintenance operations that can be loaded into the replication queue. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org