You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Edward Ribeiro (JIRA)" <ji...@apache.org> on 2014/03/19 02:41:42 UTC

[jira] [Assigned] (ZOOKEEPER-1897) ZK Shell/Cli not processing commands

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-1897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Edward Ribeiro reassigned ZOOKEEPER-1897:
-----------------------------------------

    Assignee: Edward Ribeiro

> ZK Shell/Cli not processing commands
> ------------------------------------
>
>                 Key: ZOOKEEPER-1897
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1897
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client, scripts
>    Affects Versions: 3.4.6
>            Reporter: Cameron Gandevia
>            Assignee: Edward Ribeiro
>
> When running zookeeper 3.4.5 I was able to run commands using zkCli such as 
> zkCli.sh -server 127.0.0.1:2182 ls /
> zkCli.sh -server 127.0.0.1:2182 get /blah
> After upgrading to 3.4.6 these commands no longer work.
> I think issue https://issues.apache.org/jira/browse/ZOOKEEPER-1535 was the reason the commands were running in previous versions.
> It looks like the client exits when a command is present.
> {code:title=ZooKeeperMain.java}
>     void run() throws KeeperException, IOException, InterruptedException {
>         if (cl.getCommand() == null) {
>             System.out.println("Welcome to ZooKeeper!");
>             boolean jlinemissing = false;
>             // only use jline if it's in the classpath
>             try {
>                 Class consoleC = Class.forName("jline.ConsoleReader");
>                 Class completorC =
>                     Class.forName("org.apache.zookeeper.JLineZNodeCompletor");
>                 System.out.println("JLine support is enabled");
>                 Object console =
>                     consoleC.getConstructor().newInstance();
>                 Object completor =
>                     completorC.getConstructor(ZooKeeper.class).newInstance(zk);
>                 Method addCompletor = consoleC.getMethod("addCompletor",
>                         Class.forName("jline.Completor"));
>                 addCompletor.invoke(console, completor);
>                 String line;
>                 Method readLine = consoleC.getMethod("readLine", String.class);
>                 while ((line = (String)readLine.invoke(console, getPrompt())) != null) {
>                     executeLine(line);
>                 }
>             } catch (ClassNotFoundException e) {
>                 LOG.debug("Unable to start jline", e);
>                 jlinemissing = true;
>             } catch (NoSuchMethodException e) {
>                 LOG.debug("Unable to start jline", e);
>                 jlinemissing = true;
>             } catch (InvocationTargetException e) {
>                 LOG.debug("Unable to start jline", e);
>                 jlinemissing = true;
>             } catch (IllegalAccessException e) {
>                 LOG.debug("Unable to start jline", e);
>                 jlinemissing = true;
>             } catch (InstantiationException e) {
>                 LOG.debug("Unable to start jline", e);
>                 jlinemissing = true;
>             }
>             if (jlinemissing) {
>                 System.out.println("JLine support is disabled");
>                 BufferedReader br =
>                     new BufferedReader(new InputStreamReader(System.in));
>                 String line;
>                 while ((line = br.readLine()) != null) {
>                     executeLine(line);
>                 }
>             }
>         }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)