You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Cameron Gandevia (JIRA)" <ji...@apache.org> on 2014/03/19 00:10:42 UTC
[jira] [Created] (ZOOKEEPER-1897) ZK Shell/Cli not processing
commands
Cameron Gandevia created ZOOKEEPER-1897:
-------------------------------------------
Summary: 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
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)