You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by iv...@apache.org on 2012/10/25 15:35:29 UTC
svn commit: r1402146 - in /zookeeper/bookkeeper/trunk: ./
bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/
bookkeeper-server/src/main/java/org/apache/bookkeeper/client/
bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ boo...
Author: ivank
Date: Thu Oct 25 13:35:28 2012
New Revision: 1402146
URL: http://svn.apache.org/viewvc?rev=1402146&view=rev
Log:
BOOKKEEPER-424: Bookie start is failing intermittently when zkclient connection delays (rakeshr via ivank)
Modified:
zookeeper/bookkeeper/trunk/CHANGES.txt
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ZkUtils.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestLedgerUnderreplicationManager.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java
Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Thu Oct 25 13:35:28 2012
@@ -96,6 +96,8 @@ Trunk (unreleased changes)
BOOKKEEPER-436: Journal#rollLog may leak file handler (umamahesh via ivank)
+ BOOKKEEPER-424: Bookie start is failing intermittently when zkclient connection delays (rakeshr via ivank)
+
hedwig-protocol:
BOOKKEEPER-394: CompositeException message is not useful (Stu Hood via sijie)
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java Thu Oct 25 13:35:28 2012
@@ -50,6 +50,8 @@ import org.apache.bookkeeper.jmx.BKMBean
import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.WriteCallback;
import org.apache.bookkeeper.util.IOUtils;
import org.apache.bookkeeper.util.MathUtils;
+import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -94,7 +96,6 @@ public class Bookie extends Thread {
// ZooKeeper client instance for the Bookie
ZooKeeper zk;
- private volatile boolean isZkExpired = true;
// Running flag
private volatile boolean running = false;
@@ -467,9 +468,11 @@ public class Bookie extends Thread {
} catch (IOException ioe) {
LOG.error("Exception while replaying journals, shutting down", ioe);
shutdown(ExitCode.BOOKIE_EXCEPTION);
+ return;
} catch (BookieException be) {
LOG.error("Exception while replaying journals, shutting down", be);
shutdown(ExitCode.BOOKIE_EXCEPTION);
+ return;
}
// start bookie thread
super.start();
@@ -574,10 +577,10 @@ public class Bookie extends Thread {
/**
* Instantiate the ZooKeeper client for the Bookie.
*/
- private ZooKeeper instantiateZookeeperClient(ServerConfiguration conf) throws IOException {
+ private ZooKeeper instantiateZookeeperClient(ServerConfiguration conf)
+ throws IOException, InterruptedException, KeeperException {
if (conf.getZkServers() == null) {
LOG.warn("No ZK servers passed to Bookie constructor so BookKeeper clients won't know about this server!");
- isZkExpired = false;
return null;
}
// Create the ZooKeeper client instance
@@ -715,33 +718,21 @@ public class Bookie extends Thread {
* @return zk client instance
*/
private ZooKeeper newZookeeper(final String zkServers,
- final int sessionTimeout) throws IOException {
- ZooKeeper newZk = new ZooKeeper(zkServers, sessionTimeout,
- new Watcher() {
+ final int sessionTimeout) throws IOException, InterruptedException,
+ KeeperException {
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout()) {
@Override
public void process(WatchedEvent event) {
- // handle session disconnects and expires
- if (event.getType()
- .equals(Watcher.Event.EventType.None)) {
- if (event.getState().equals(
- Watcher.Event.KeeperState.Disconnected)) {
- LOG.warn("ZK client has been disconnected to the ZK server!");
- } else if (event.getState().equals(
- Watcher.Event.KeeperState.SyncConnected)) {
- LOG.info("ZK client has been reconnected to the ZK server!");
- }
- }
// Check for expired connection.
- if (event.getState().equals(
- Watcher.Event.KeeperState.Expired)) {
+ if (event.getState().equals(Watcher.Event.KeeperState.Expired)) {
LOG.error("ZK client connection to the ZK server has expired!");
- isZkExpired = true;
shutdown(ExitCode.ZK_EXPIRED);
+ } else {
+ super.process(event);
}
}
- });
- isZkExpired = false;
- return newZk;
+ };
+ return ZkUtils.createConnectedZookeeperClient(zkServers, w);
}
public boolean isRunning() {
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java Thu Oct 25 13:35:28 2012
@@ -34,6 +34,8 @@ import org.apache.bookkeeper.meta.Ledger
import org.apache.bookkeeper.meta.LedgerManagerFactory;
import org.apache.bookkeeper.proto.BookieClient;
import org.apache.bookkeeper.util.OrderedSafeExecutor;
+import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
@@ -120,24 +122,9 @@ public class BookKeeper {
public BookKeeper(final ClientConfiguration conf)
throws IOException, InterruptedException, KeeperException {
this.conf = conf;
-
- final CountDownLatch zkConnectLatch = new CountDownLatch(1);
- this.zk = new ZooKeeper(conf.getZkServers(), conf.getZkTimeout(),
- new Watcher() {
- @Override
- public void process(WatchedEvent event) {
- // countdown the latch on all events, even if we haven't
- // successfully connected.
- zkConnectLatch.countDown();
-
- // TODO: handle session disconnects and expires
- LOG.debug("Process: {} {}", event.getType(), event.getPath());
- }
- });
- if (!zkConnectLatch.await(conf.getZkTimeout(), TimeUnit.MILLISECONDS)
- || !zk.getState().isConnected()) {
- throw KeeperException.create(KeeperException.Code.CONNECTIONLOSS);
- }
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout());
+ this.zk = ZkUtils
+ .createConnectedZookeeperClient(conf.getZkServers(), w);
this.channelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java Thu Oct 25 13:35:28 2012
@@ -40,6 +40,7 @@ import org.apache.bookkeeper.proto.Bookk
import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.Processor;
import org.apache.bookkeeper.util.IOUtils;
import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
@@ -118,8 +119,8 @@ public class BookKeeperAdmin {
*/
public BookKeeperAdmin(ClientConfiguration conf) throws IOException, InterruptedException, KeeperException {
// Create the ZooKeeper client instance
- zk = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(),
- conf.getZkTimeout());
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout());
+ zk = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(), w);
// Create the bookie path
bookiesPath = conf.getZkAvailableBookiesPath();
// Create the BookKeeper client instance
@@ -693,9 +694,9 @@ public class BookKeeperAdmin {
*/
public static boolean format(ClientConfiguration conf,
boolean isInteractive, boolean force) throws Exception {
-
- ZooKeeper zkc = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(),
- conf.getZkTimeout());
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout());
+ ZooKeeper zkc = ZkUtils.createConnectedZookeeperClient(
+ conf.getZkServers(), w);
BookKeeper bkc = null;
try {
boolean ledgerRootExists = null != zkc.exists(
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java Thu Oct 25 13:35:28 2012
@@ -32,6 +32,7 @@ import org.apache.bookkeeper.conf.Server
import org.apache.bookkeeper.replication.ReplicationException.CompatibilityException;
import org.apache.bookkeeper.replication.ReplicationException.UnavailableException;
import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
@@ -64,9 +65,7 @@ public class AutoRecoveryMain {
InterruptedException, KeeperException, UnavailableException,
CompatibilityException {
this.conf = conf;
- zk = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(),
- conf.getZkTimeout());
- Watcher watcher = new Watcher() {
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout()) {
@Override
public void process(WatchedEvent event) {
// Check for expired connection.
@@ -74,10 +73,12 @@ public class AutoRecoveryMain {
LOG.error("ZK client connection to the"
+ " ZK server has expired!");
shutdown(ExitCode.ZK_EXPIRED);
+ } else {
+ super.process(event);
}
}
};
- zk.register(watcher);
+ zk = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(), w);
auditorElector = new AuditorElector(
getMyBookieAddress(conf).toString(), conf, zk);
replicationWorker = new ReplicationWorker(zk, conf,
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ZkUtils.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ZkUtils.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ZkUtils.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ZkUtils.java Thu Oct 25 13:35:28 2012
@@ -24,28 +24,20 @@ package org.apache.bookkeeper.util;
import java.io.File;
import java.io.IOException;
import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.AsyncCallback.StringCallback;
import org.apache.zookeeper.KeeperException.Code;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.Watcher.Event.EventType;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.ZooKeeper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Provided utilites for zookeeper access, etc.
*/
public class ZkUtils {
- private static final Logger LOG = LoggerFactory.getLogger(ZkUtils.class);
/**
* Create zookeeper path recursively
@@ -111,31 +103,17 @@ public class ZkUtils {
* @param timeout
* Session timeout.
*/
- public static ZooKeeper createConnectedZookeeperClient(String servers, int timeout)
- throws IOException, InterruptedException, KeeperException {
+ public static ZooKeeper createConnectedZookeeperClient(String servers,
+ ZooKeeperWatcherBase w) throws IOException, InterruptedException,
+ KeeperException {
if (servers == null || servers.isEmpty()) {
throw new IllegalArgumentException("servers cannot be empty");
}
- final CountDownLatch zkConnectLatch = new CountDownLatch(1);
- Watcher connectWatcher = new Watcher() {
-
- @Override
- public void process(WatchedEvent event) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Process: " + event.getType() + " "
- + event.getPath());
- }
- if (event.getType().equals(EventType.None)
- && event.getState() == KeeperState.SyncConnected) {
- if (zkConnectLatch.getCount() > 0) {
- zkConnectLatch.countDown();
- }
- }
- }
- };
- final ZooKeeper newZk = new ZooKeeper(servers, timeout, connectWatcher);
- if (!zkConnectLatch.await(timeout, TimeUnit.MILLISECONDS)
- || !newZk.getState().isConnected()) {
+ final ZooKeeper newZk = new ZooKeeper(servers, w.getZkSessionTimeOut(),
+ w);
+ w.waitForConnection();
+ // Re-checking zookeeper connection status
+ if (!newZk.getState().isConnected()) {
throw KeeperException.create(KeeperException.Code.CONNECTIONLOSS);
}
return newZk;
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java Thu Oct 25 13:35:28 2012
@@ -36,6 +36,7 @@ import org.apache.bookkeeper.bookie.Book
import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.proto.BookieServer;
import org.apache.bookkeeper.test.ZooKeeperUtil;
+import org.apache.commons.io.FileUtils;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
@@ -88,7 +89,7 @@ public class BookieInitializationTest {
* timeout when previous reg node exists in zk. On zNode delete event,
* should continue startup
*/
- @Test
+ @Test(timeout = 20000)
public void testBookieRegistration() throws Exception {
File tmpDir = File.createTempFile("bookie", "test");
tmpDir.delete();
@@ -154,7 +155,7 @@ public class BookieInitializationTest {
* KeeperException.NodeExistsException if the znode still exists even after
* the zk session timeout.
*/
- @Test
+ @Test(timeout = 30000)
public void testRegNodeExistsAfterSessionTimeOut() throws Exception {
File tmpDir = File.createTempFile("bookie", "test");
tmpDir.delete();
@@ -209,7 +210,7 @@ public class BookieInitializationTest {
* Verify duplicate bookie server startup. Should throw
* java.net.BindException if already BK server is running
*/
- @Test
+ @Test(timeout = 20000)
public void testDuplicateBookieServerStartup() throws Exception {
File tmpDir = File.createTempFile("bookie", "test");
tmpDir.delete();
@@ -234,6 +235,31 @@ public class BookieInitializationTest {
}
}
+ /**
+ * Verify bookie start behaviour when ZK Server is not running.
+ */
+ @Test(timeout = 20000)
+ public void testStartBookieWithoutZKServer() throws Exception {
+ zkutil.killServer();
+
+ File tmpDir = File.createTempFile("bookie", "test");
+ tmpDir.delete();
+ tmpDir.mkdir();
+
+ final ServerConfiguration conf = new ServerConfiguration()
+ .setZkServers(zkutil.getZooKeeperConnectString())
+ .setZkTimeout(5000).setJournalDirName(tmpDir.getPath())
+ .setLedgerDirNames(new String[] { tmpDir.getPath() });
+ try {
+ new Bookie(conf);
+ fail("Should throw ConnectionLossException as ZKServer is not running!");
+ } catch (KeeperException.ConnectionLossException e) {
+ // expected behaviour
+ } finally {
+ FileUtils.deleteDirectory(tmpDir);
+ }
+ }
+
private void createNewZKClient() throws Exception {
// create a zookeeper client
LOG.debug("Instantiate ZK Client");
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestLedgerUnderreplicationManager.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestLedgerUnderreplicationManager.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestLedgerUnderreplicationManager.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestLedgerUnderreplicationManager.java Thu Oct 25 13:35:28 2012
@@ -52,6 +52,7 @@ import org.apache.bookkeeper.replication
import org.apache.bookkeeper.replication.ReplicationException.UnavailableException;
import org.apache.bookkeeper.test.ZooKeeperUtil;
import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.commons.lang.StringUtils;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
@@ -94,10 +95,12 @@ public class TestLedgerUnderreplicationM
executor = Executors.newCachedThreadPool();
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(10000);
zkc1 = ZkUtils.createConnectedZookeeperClient(
- zkUtil.getZooKeeperConnectString(), 10000);
+ zkUtil.getZooKeeperConnectString(), w);
+ w = new ZooKeeperWatcherBase(10000);
zkc2 = ZkUtils.createConnectedZookeeperClient(
- zkUtil.getZooKeeperConnectString(), 10000);
+ zkUtil.getZooKeeperConnectString(), w);
lmf1 = LedgerManagerFactory.newLedgerManagerFactory(conf, zkc1);
lmf2 = LedgerManagerFactory.newLedgerManagerFactory(conf, zkc2);
basePath = conf.getZkLedgersRootPath() + '/'
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java Thu Oct 25 13:35:28 2012
@@ -39,6 +39,7 @@ import org.apache.bookkeeper.meta.Ledger
import org.apache.bookkeeper.meta.ZkLedgerUnderreplicationManager;
import org.apache.bookkeeper.test.MultiLedgerManagerTestCase;
import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Test;
@@ -224,8 +225,9 @@ public class TestReplicationWorker exten
InetSocketAddress newBkAddr2 = new InetSocketAddress(InetAddress
.getLocalHost().getHostAddress(), startNewBookie2);
LOG.info("New Bookie addr :" + newBkAddr2);
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(10000);
ZooKeeper zkc1 = ZkUtils.createConnectedZookeeperClient(
- zkUtil.getZooKeeperConnectString(), 10000);
+ zkUtil.getZooKeeperConnectString(), w);
ReplicationWorker rw2 = new ReplicationWorker(zkc1, baseConf,
newBkAddr2);
rw1.start();
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java?rev=1402146&r1=1402145&r2=1402146&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java Thu Oct 25 13:35:28 2012
@@ -27,6 +27,7 @@ import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
import org.apache.commons.io.FileUtils;
import java.util.concurrent.CountDownLatch;
@@ -90,8 +91,9 @@ public class ZooKeeperUtil {
// create a zookeeper client
LOG.debug("Instantiate ZK Client");
+ ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(10000);
zkc = ZkUtils.createConnectedZookeeperClient(
- getZooKeeperConnectString(), 10000);
+ getZooKeeperConnectString(), w);
// initialize the zk client with values
zkc.create("/ledgers", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);