[ 
https://issues.apache.org/jira/browse/HDFS-17809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18072855#comment-18072855
 ] 

ASF GitHub Bot commented on HDFS-17809:
---------------------------------------

balodesecurity commented on code in PR #8324:
URL: https://github.com/apache/hadoop/pull/8324#discussion_r3068004335


##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/command/HelpCommand.java:
##########
@@ -56,6 +56,15 @@ public void execute(CommandLine cmd) throws Exception {
     Preconditions.checkState(cmd.hasOption(DiskBalancerCLI.HELP));
     verifyCommandOptions(DiskBalancerCLI.HELP, cmd);
     String helpCommand = cmd.getOptionValue(DiskBalancerCLI.HELP);
+    if (helpCommand == null || helpCommand.isEmpty()) {
+      // With optionalArg(true), space-separated form "-help <cmd>" leaves the
+      // sub-command as a positional arg rather than the option's value.
+      // Fall back to the first leftover arg so "-help plan" works as expected.
+      String[] leftoverArgs = cmd.getArgs();
+      if (leftoverArgs != null && leftoverArgs.length > 0) {
+        helpCommand = leftoverArgs[0];
+      }
+    }

Review Comment:
   Thanks @ayushtkn, u are right. since normalizeHelpArg() in 
DiskBalancerCLI.run() already rewrites -help plan to --help=plan before commons 
CLI parses the args, getOptionValue() always returns the sub-command correctly 
by the time HelpCommand.execute() is called. The fallback block checking 
cmd.getArgs() is dead code, so removing it. 





> hdfs diskbalancer -help plan or other commands are not giving correct 
> explanation in hadoop version 3.4.1
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-17809
>                 URL: https://issues.apache.org/jira/browse/HDFS-17809
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: diskbalancer
>    Affects Versions: 3.4.1
>            Reporter: Raju Balpande
>            Priority: Major
>              Labels: pull-request-available
>
> For HDFS with hadoop version 3.4.1, facing problem in help for diskbalancer 
> commands.
> {code:java}
> [[email protected] ~]# hdfs diskbalancer -help query
> usage: hdfs diskbalancer [command] [options]DiskBalancer distributes data 
> evenly between different disks on a
> datanode. DiskBalancer operates by generating a plan, that tells datanode
> how to move data between disks. Users can execute a plan by submitting it
> to the datanode.
> To get specific help on a particular command please run hdfs diskbalancer 
> -help <command>.
>     --help   valid commands are plan | execute | query | cancel | report 
> {code}
> I tried similar for all the commands l{*}ike plan, execute, report{*} and 
> getting same response as if it is ignoring any text after help. Also tried 
> with *--help* as well.
> {code:java}
> [[email protected] ~]# hdfs diskbalancer --help 
> execute
> usage: hdfs diskbalancer [command] [options]DiskBalancer distributes data 
> evenly between different disks on a
> datanode. DiskBalancer operates by generating a plan, that tells datanode
> how to move data between disks. Users can execute a plan by submitting it
> to the datanode.
> To get specific help on a particular command please run hdfs diskbalancer 
> -help <command>.
>     --help   valid commands are plan | execute | query | cancel | report 
> {code}
>  Whereas the same commands works fine in *Hadoop version 3.1.1*
> {code:java}
> [[email protected] ~]# hdfs diskbalancer -help query
> usage: hdfs diskbalancer -query <hostname>  [options]
> Query Plan queries a given data node about the current state of disk
> balancer execution.
>     --query <arg>   Queries the disk balancer status of a given datanode.
>     --v             Prints details of the plan that is being executed on
>                     the node.Query command retrievs the plan ID and the 
> current running state. {code}
> Can someone please look into this.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to