[ https://issues.apache.org/jira/browse/ZOOKEEPER-1897?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13959316#comment-13959316 ]
Edward Ribeiro commented on ZOOKEEPER-1897: ------------------------------------------- Oh, and please, update the assignee to [~stack] because he provided the patch. Thanks, man. And sorry again for this issue. > 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 > Fix For: 3.4.7, 3.5.0 > > Attachments: ZOOKEEPER-1897.txt, ZOOKEEPER-1897v2.txt > > > 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)