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

Edward Ribeiro commented on ZOOKEEPER-1535:
-------------------------------------------

I have looked into this issue and it's related to the lines 347-348 of the 
run() method in file ZooKeeperMain.java:

{noformat}
   boolean watch = processCmd(cl);
   if (!watch) {
      System.exit(0);
   }
{noformat}

The REPL is executed in a "while ((line = (...)) != null)" loop. Therefore when 
the user issue <ctrl+d> the flow jumps out of loop, but before ending execution 
it runs the code above, that seems redundant, imo. 

The issue shows up because the "cl" object still points to the last executed 
command even though the "line" variable (that  populates the "cl" object) is 
already null. Looking at svn logs and studying the control flow, it looks like 
the this snippet  lost its usefulness during successive code modifications 
(last one that affected it: ZOOKEEPER-82), because its job is already done by 
executeLine() calls in the loop.

My suggestion would be to get rid of this code block, but I would like to hear 
what you think about it. There's any situation where this snippet would be 
relevant?
                
> ZK Shell/Cli re-executes last command on exit
> ---------------------------------------------
>
>                 Key: ZOOKEEPER-1535
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1535
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: scripts
>         Environment: zookeeper-3.4.3 release
>            Reporter: Stu Hood
>              Labels: cli, shell, zkcli, zkcli.sh
>
> In the ZK 3.4.3 release's version of zkCli.sh, the last command that was 
> executed is *re*-executed when you {{ctrl+d}} out of the shell. In the 
> snippet below, {{ls}} is executed, and then {{ctrl+d}} is triggered (inserted 
> below to illustrate), the output from {{ls}} appears again, due to the 
> command being re-run. 
> {noformat}
> [zk: zookeeper.example.com:2181(CONNECTED) 0] ls /blah
> [foo]
> [zk: zookeeper.example.com:2181(CONNECTED) 1] <ctrl+d> [foo]
> $
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to