[ https://issues.apache.org/jira/browse/HDFS-9387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15007717#comment-15007717 ]
Mingliang Liu commented on HDFS-9387: ------------------------------------- Thanks for your review and commit! > Fix namenodeUri parameter parsing in NNThroughputBenchmark > ---------------------------------------------------------- > > Key: HDFS-9387 > URL: https://issues.apache.org/jira/browse/HDFS-9387 > Project: Hadoop HDFS > Issue Type: Bug > Components: namenode > Reporter: Mingliang Liu > Assignee: Mingliang Liu > Fix For: 2.8.0 > > Attachments: HDFS-9387.000.patch > > > In {{NNThroughputBenchmark$OperationStatsBase#verifyOpArgument()}}, the > {{namenodeUri}} is always parsed from {{-namenode}} argument. This works just > fine if the {{-op}} parameter is not {{all}}, as the single benchmark will > need to parse the {{namenodeUri}} from args anyway. > When the {{-op}} is {{all}}, namely all sub-benchmark will run, multiple > sub-benchmark will call the {{verifyOpArgument()}} method. In this case, the > first sub-benchmark reads the {{namenode}} argument and removes it from args. > The other sub-benchmarks will thereafter read {{null}} value since the > argument is removed. This contradicts the intension of providing {{namenode}} > for all sub-benchmarks. > {code:title=current code} > try { > namenodeUri = StringUtils.popOptionWithArgument("-namenode", args); > } catch (IllegalArgumentException iae) { > printUsage(); > } > {code} > The fix is to parse the {{namenodeUri}}, which is shared by all > sub-benchmarks, from {{-namenode}} argument only once. This follows the > convention of parsing other global arguments in > {{OperationStatsBase#verifyOpArgument()}}. > {code:title=simple fix} > if (args.indexOf("-namenode") >= 0) { > try { > namenodeUri = StringUtils.popOptionWithArgument("-namenode", args); > } catch (IllegalArgumentException iae) { > printUsage(); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)