[ https://issues.apache.org/jira/browse/HDFS-16269?focusedWorklogId=671817&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-671817 ]
ASF GitHub Bot logged work on HDFS-16269: ----------------------------------------- Author: ASF GitHub Bot Created on: 29/Oct/21 05:25 Start Date: 29/Oct/21 05:25 Worklog Time Spent: 10m Work Description: aajisaka commented on a change in pull request #3544: URL: https://github.com/apache/hadoop/pull/3544#discussion_r738940853 ########## File path: hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNNThroughputBenchmark.java ########## @@ -166,4 +166,31 @@ public void testNNThroughputForAppendOp() throws Exception { } } } + + /** + * This test runs {@link NNThroughputBenchmark} against a mini DFS cluster + * for block report operation. + */ + @Test(timeout = 120000) + public void testNNThroughputForBlockReportOp() throws Exception { + final Configuration conf = new HdfsConfiguration(); + conf.setInt(DFSConfigKeys.DFS_NAMENODE_MIN_BLOCK_SIZE_KEY, 16); + conf.setInt(DFSConfigKeys.DFS_BLOCK_SIZE_KEY, 16); + MiniDFSCluster cluster = null; + try { + cluster = new MiniDFSCluster.Builder(conf).numDataNodes(3).build(); + cluster.waitActive(); + + final Configuration benchConf = new HdfsConfiguration(); + benchConf.setInt(DFSConfigKeys.DFS_NAMENODE_MIN_BLOCK_SIZE_KEY, 16); + benchConf.setInt(DFSConfigKeys.DFS_BLOCK_SIZE_KEY, 16); + NNThroughputBenchmark.runBenchmark(benchConf, + new String[]{"-fs", cluster.getURI().toString(), "-op", + "blockReport", "-datanodes", "3", "-reports", "2"}); + } finally { + if (cluster != null) { + cluster.shutdown(); + } + } Review comment: The update is not correct. The try-with-resources clause will be as follows: ```java try (MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).numDataNodes(3).build()) { cluster.waitActive(); final Configuration benchConf = new HdfsConfiguration(); benchConf.setInt(DFSConfigKeys.DFS_NAMENODE_MIN_BLOCK_SIZE_KEY, 16); benchConf.setInt(DFSConfigKeys.DFS_BLOCK_SIZE_KEY, 16); NNThroughputBenchmark.runBenchmark(benchConf, new String[]{"-fs", cluster.getURI().toString(), "-op", "blockReport", "-datanodes", "3", "-reports", "2"}); } ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 671817) Time Spent: 2h 40m (was: 2.5h) > [Fix] Improve NNThroughputBenchmark#blockReport operation > --------------------------------------------------------- > > Key: HDFS-16269 > URL: https://issues.apache.org/jira/browse/HDFS-16269 > Project: Hadoop HDFS > Issue Type: Bug > Components: benchmarks, namenode > Affects Versions: 2.9.2 > Reporter: JiangHua Zhu > Assignee: JiangHua Zhu > Priority: Major > Labels: pull-request-available > Time Spent: 2h 40m > Remaining Estimate: 0h > > When using NNThroughputBenchmark to verify the blockReport, you will get some > exception information. > Commands used: > ./bin/hadoop org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark -fs > xxxx -op blockReport -datanodes 3 -reports 1 > The exception information: > 21/10/12 14:35:18 INFO namenode.NNThroughputBenchmark: Starting benchmark: > blockReport > 21/10/12 14:35:19 INFO namenode.NNThroughputBenchmark: Creating 10 files with > 10 blocks each. > 21/10/12 14:35:19 ERROR namenode.NNThroughputBenchmark: > java.lang.ArrayIndexOutOfBoundsException: 50009 > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$BlockReportStats.addBlocks(NNThroughputBenchmark.java:1161) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$BlockReportStats.generateInputs(NNThroughputBenchmark.java:1143) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$OperationStatsBase.benchmark(NNThroughputBenchmark.java:257) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.run(NNThroughputBenchmark.java:1528) > at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) > at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.runBenchmark(NNThroughputBenchmark.java:1430) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.main(NNThroughputBenchmark.java:1550) > Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 50009 > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$BlockReportStats.addBlocks(NNThroughputBenchmark.java:1161) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$BlockReportStats.generateInputs(NNThroughputBenchmark.java:1143) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark$OperationStatsBase.benchmark(NNThroughputBenchmark.java:257) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.run(NNThroughputBenchmark.java:1528) > at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) > at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.runBenchmark(NNThroughputBenchmark.java:1430) > at > org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.main(NNThroughputBenchmark.java:1550) > Checked some code and found that the problem appeared here. > private ExtendedBlock addBlocks(String fileName, String clientName) > throws IOException { > for(DatanodeInfo dnInfo: loc.getLocations()) { > int dnIdx = dnInfo.getXferPort()-1; > datanodes[dnIdx].addBlock(loc.getBlock().getLocalBlock()); > } > } > It can be seen from this that what dnInfo.getXferPort() gets is a port > information and should not be used as an index of an array. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org