This is an automated email from the ASF dual-hosted git repository.
chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi-shaded.git
The following commit(s) were added to refs/heads/master by this push:
new 5f109a6 [KYUUBI-SHADED #34] [KYUUBI-SHADED #33] Step 2/2: Port
ZOOKEEPER-1718 to support JLine2 in ZK client 3.4
5f109a6 is described below
commit 5f109a60a23ccaecf5810e8c6dbe69c24a9d8d46
Author: Cheng Pan <[email protected]>
AuthorDate: Tue Feb 20 16:04:56 2024 +0800
[KYUUBI-SHADED #34] [KYUUBI-SHADED #33] Step 2/2: Port ZOOKEEPER-1718 to
support JLine2 in ZK client 3.4
### _Why are the changes needed?_
This PR aims to port ZOOKEEPER-1718 to make the Zookeeper 3.4 to support
JLine2.
To gain a clear change history, I propose to split the change into 2 PRs,
1. copy
[org.apache.zookeeper.ZooKeeperMain](https://raw.githubusercontent.com/apache/zookeeper/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeperMain.java)
and
[org.apache.zookeeper.JLineZNodeCompletor](https://raw.githubusercontent.com/apache/zookeeper/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java)
from Apache Zookeeper v3.4.14 as-is
2. apply changes in ZOOKEEPER-1718
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including
negative and positive cases if possible
- [x] Add screenshots for manual tests if appropriate
1. perform `build/mvn clean package` to generate
`kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/target/kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar`
2. download and install
[apache-kyuubi-1.8.0-bin.tgz](https://dlcdn.apache.org/kyuubi/kyuubi-1.8.0/apache-kyuubi-1.8.0-bin.tgz)
3. replace `KYUUBI_HOME/jars/kyuubi-shaded-zookeeper-34-0.1.0.jar` with
`kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar`
4. replace `KYUUBI_HOME/jars/jline-0.9.94.jar` with `jline-2.14.6.jar`
5. perform `bin/kyuubi-zk-cli -server xxxxx:2181` to connect a Zookeeper
cluster
6. check the logs to make sure JLine is enabled and run some command to
check basic functionalities
```
...
2024-01-15 19:52:04.593 INFO org.apache.kyuubi.shaded.zookeeper.ZooKeeper:
Client
environment:java.class.path=...:jline-2.14.6.jar:...:kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar...
...
JLine support is enabled
...
```
- [ ] [Run
test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests)
locally before make a pull request
Closes #34 from pan3793/jline2-2.
e769ee8 [Cheng Pan] [KYUUBI-SHADED #33] Step 2/2: Port ZOOKEEPER-1718 to
support JLine2 in ZK client 3.4
Authored-by: Cheng Pan <[email protected]>
Signed-off-by: Cheng Pan <[email protected]>
---
.../kyuubi-relocated-zookeeper-34/pom.xml | 2 +-
.../{JLineZNodeCompletor.java => JLineZNodeCompleter.java} | 6 +++---
.../src/main/java/org/apache/zookeeper/ZooKeeperMain.java | 7 ++++---
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
index cec4d7a..03d3cc7 100644
--- a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
+++ b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
@@ -36,7 +36,7 @@ under the License.
<curator.version>2.12.0</curator.version>
<slf4j.version>1.7.25</slf4j.version>
<yetus.version>0.5.0</yetus.version>
- <jline.version>0.9.94</jline.version>
+ <jline.version>2.14.6</jline.version>
</properties>
<dependencyManagement>
diff --git
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
similarity index 94%
rename from
kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
rename to
kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
index e69a21f..79d7f1b 100644
---
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
+++
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
@@ -19,12 +19,12 @@
package org.apache.zookeeper;
import java.util.List;
-import jline.Completor;
+import jline.console.completer.Completer;
-class JLineZNodeCompletor implements Completor {
+class JLineZNodeCompleter implements Completer {
private ZooKeeper zk;
- public JLineZNodeCompletor(ZooKeeper zk) {
+ public JLineZNodeCompleter(ZooKeeper zk) {
this.zk = zk;
}
diff --git
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
index 97b8399..b7cacab 100644
---
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
+++
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
@@ -295,15 +295,16 @@ public class ZooKeeperMain {
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");
+ Class<?> consoleC = Class.forName("jline.console.ConsoleReader");
+ Class<?> completorC =
Class.forName("org.apache.zookeeper.JLineZNodeCompleter");
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"));
+ Method addCompletor =
+ consoleC.getMethod("addCompleter",
Class.forName("jline.console.completer.Completer"));
addCompletor.invoke(console, completor);
String line;