Folks, I'm looking for a solution to creating an embedded zookeeper server for testing. I was using Curator's TestingServer, but after Curator 1.2.3 it is broken and fails to allow me to authenticate.
I'm working from http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_minimumConfiguration So, I tried this out: Properties startupProperties = new Properties(); startupProperties.put("clientPort", 33333); startupProperties.put("dataDir", "/www/a/data/zookeeper/data"); startupProperties.put("tickTime", 2000); QuorumPeerConfig quorumConfiguration = new QuorumPeerConfig(); try { quorumConfiguration.parseProperties(startupProperties); } catch(Exception e) { throw new RuntimeException(e); } final ZooKeeperServerMain zooKeeperServer = new ZooKeeperServerMain(); final ServerConfig configuration = new ServerConfig(); configuration.readFrom(quorumConfiguration); new Thread() { public void run() { try { zooKeeperServer.runFromConfig(configuration); } catch (IOException e) { log.error("ZooKeeper Failed", e); } } }.start(); try { framework = CuratorFrameworkFactory.builder() .connectString("localhost:33333") .connectionTimeoutMs(60000) .retryPolicy(new RetryNTimes(5, 10000)) .build(); } catch (Exception e) { log.error("Error trying to instantiate ZK TestingServer...", e); } framework.start(); For some reason, when I try to connect to the server I've created using localhost:3333, I get the following: 2013-01-22 16:19:40 | ERROR | | Thread-13 | com.macys.stella.services.async.ZookeeperTestServer | ZooKeeper Failed java.io.IOException: Could not configure server because SASL configuration did not allow the ZooKeeper server to authenticate itself properly: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required at org.apache.zookeeper.server.ServerCnxnFactory.configureSaslLogin(ServerCnxnFactory.java:205) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:87) at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:110) at com.macys.stella.services.async.ZookeeperTestServer$1.run(ZookeeperTestServer.java:52) 2013-01-22 16:19:40 | INFO | | RMI TCP Connection(2)-127.0.0.1 | com.netflix.curator.framework.imps.CuratorFrameworkImpl | Starting 2013-01-22 16:19:40 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:40 | INFO | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.framework.state.ConnectionStateManager | State change: CONNECTED This is followed by a lot of log entries like this: 2013-01-22 16:19:43 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:44 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:45 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:46 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:47 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:48 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:49 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:50 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:51 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:52 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:54 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:55 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:56 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:57 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:58 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:19:59 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:00 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:01 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:02 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:03 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:05 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:06 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:07 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:08 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:09 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:10 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:11 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:12 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:13 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:15 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:16 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:17 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:18 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:19 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:20 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:21 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:22 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:23 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:24 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:26 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:27 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:28 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:29 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:30 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:31 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:32 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:33 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:34 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:35 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed 2013-01-22 16:20:37 | ERROR | | RMI TCP Connection(2)-127.0.0.1-EventThread | com.netflix.curator.ConnectionState | Authentication failed So I'm confused. If the above link to the zookeeper documentation truly represents a minimal configuration, suitable for running tests or for development scenarios, why is it that this config is not working for me? Why is SASL involved at all here? I even set up using digest auth provider with super digest detailed in the docs and it never got that far, failing identically to what I've posted above. I'm using Curator 1.3.0 so the version of Zookeeper in my project should be 3.4.5. I have heard this is a bug in 3.4.4 that was fixed, but it appears the fix was incomplete. Can someone help me out here? I just need an embedded zookeeper for testing and development scenarios, preferably without the need to maintain a config for it. Thanks! Matthew D.
