You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Enrico Olivelli (Jira)" <ji...@apache.org> on 2021/01/20 09:58:00 UTC
[jira] [Created] (CURATOR-587) Use ZooKeeper 3.7+
ZooKeeperServerEmbedded in order to start TestingServer
Enrico Olivelli created CURATOR-587:
---------------------------------------
Summary: Use ZooKeeper 3.7+ ZooKeeperServerEmbedded in order to start TestingServer
Key: CURATOR-587
URL: https://issues.apache.org/jira/browse/CURATOR-587
Project: Apache Curator
Issue Type: Improvement
Components: Tests
Reporter: Enrico Olivelli
Assignee: Enrico Olivelli
Fix For: 5.2.0
with 3.7.0 ZooKeeper provides an official API to run a ZooKeeper node.
We should use that API in order to launch ZooKeeper, this way we won't have any compatibility issues.
In fact now (5.1) we are starting the ZooKeeper node using internal ZK classes, that are subject to change in the future.
The ZooKeeperServerEmbedded API is designed to be forward compatible.
It is a very skinny API, and it basically reproduces the usage for the users, that is to provide a configuration file and a base directory.
It also provides a way to prevent ZooKeeper to exit the JVM and to shutdown gracefully the server.
{code:java}
@TempDir
Path tmpDir;
@Test
public void hello() throws Exception {
Properties configuration = new Properties();
configuration.setProperty("clientPort", "2181");
try (ZooKeeperServerEmbedded embedded = ZooKeeperServerEmbedded
.builder()
.exitHandler(ExitHandler.LOG_ONLY)
.baseDir(tmpDir)
.configuration(configuration)
.build();) {
embedded.start();
CountDownLatch l = new CountDownLatch(1);
try (ZooKeeper zk = new ZooKeeper("localhost:2181", 40000, new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println("event "+event) ;
l.countDown();
}
}
)) {
l.await();
System.out.println("WHOAMI"+ zk.whoAmI());
zk.create("/foo", "foo".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
}
}
} {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)