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

Jungtaek Lim commented on STORM-745:
------------------------------------

I modified storm.cmd for debug this behavior.

{code}
  if %storm-command% == jar (
    set STORM_OPTS=%STORM_CLIENT_OPTS% %STORM_OPTS% -Dstorm.jar=%2
    set CLASSPATH=%CLASSPATH%;%2
    set CLASS=%3
    set args=%4
    echo "-> %1 %2 %3 %4 %5 %6 %7 %8 %9"
    shift
    echo "-> %1 %2 %3 %4 %5 %6 %7 %8 %9"
    :start
    if [%4] == [] goto done
    set args=%args% %4
    shift
    echo "--> %1 %2 %3 %4 %5 %6 %7 %8 %9"
    goto start

    :done
    echo %args%
    set storm-command-arguments=%args%
  )
  echo "-->> %1 %2 %3 %4 %5 %6 %7 %8 %9"
{code}

When I execute "storm jar StormZeroMQ.jar com.wipro.bdas.zeromq.ZMQTopology 
value1 value2 value3 value4 value5", it prints below.

"-> jar StormZeroMQ.jar com.wipro.bdas.zeromq.ZMQTopology value1 value2 value3 v
alue4 value5 "
"-> jar StormZeroMQ.jar com.wipro.bdas.zeromq.ZMQTopology value1 value2 value3 v
alue4 value5 "
"--> jar StormZeroMQ.jar com.wipro.bdas.zeromq.ZMQTopology value1 value2 value3
value4 value5 "
"--> value1 value2 value3 value4 value5    "
"--> value2 value3 value4 value5     "
"--> value3 value4 value5      "
 value1 value3 value4 value5
"-->> value3 value4 value5      "

As you see, shift doesn't evaluated before calling goto.

I found the hint from http://ss64.com/nt/shift.html.

{quote}
The SHIFT command will not work within parenthesis/brackets, so place all your 
command line arguments in variables before running any FOR commands or other 
bracketed expressions. Or use the CALL syntax as explained in this forum thread.
{quote}

I'll post a pull request which fixes this behavior.

> Second Commandline Parameter passed to the main class is skipped when run in 
> windows
> ------------------------------------------------------------------------------------
>
>                 Key: STORM-745
>                 URL: https://issues.apache.org/jira/browse/STORM-745
>             Project: Apache Storm
>          Issue Type: Bug
>    Affects Versions: 0.9.3-rc2, 0.9.4
>         Environment: Windows Only
>            Reporter: jishnu
>              Labels: 2nd, command-line, parameter, skipping, windows
>
> Always the second parameter is getting skipped.
> E:\target>storm jar StormZeroMQ.jar com.wipro.bdas.zeromq.ZMQTopology value1 
> value2 value3 value4 value5
> Output
> I=0 value=value1
> I=1 value=value3
> I=2 value=value4
> I=3 value=value5
> public class ZMQTopology {
> public static void main(String[] args) throws AlreadyAliveException,
>                                                 InvalidTopologyException {
>                             for(int i=0;i<(args.length);i++)
>                             {   System.out.println("I=" +i+ " 
> value="+args[i]);
>                             }
> I am using the apache storm pre-built for windows.
> After some amount of debugging I could find that it happens only with windows 
> machine . I was able to reproduce the error in 2 windows machine. With both  
> 0.9.3 and 0.9.4 .In Linux machine I could see command line parameters working 
> perfectly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to