HADOOP-10980. TestActiveStandbyElector fails occasionally in trunk. Contributed by Eric Badger
(cherry picked from commit c82745432a
)
This commit is contained in:
parent
65a91c8527
commit
5a34fa670e
|
@ -667,13 +667,13 @@ public class ActiveStandbyElector implements StatCallback, StringCallback {
|
|||
|
||||
/**
|
||||
* Get a new zookeeper client instance. protected so that test class can
|
||||
* inherit and pass in a mock object for zookeeper
|
||||
* inherit and mock out the zookeeper instance
|
||||
*
|
||||
* @return new zookeeper client instance
|
||||
* @throws IOException
|
||||
* @throws KeeperException zookeeper connectionloss exception
|
||||
*/
|
||||
protected synchronized ZooKeeper getNewZooKeeper() throws IOException,
|
||||
protected synchronized ZooKeeper connectToZooKeeper() throws IOException,
|
||||
KeeperException {
|
||||
|
||||
// Unfortunately, the ZooKeeper constructor connects to ZooKeeper and
|
||||
|
@ -682,7 +682,7 @@ public class ActiveStandbyElector implements StatCallback, StringCallback {
|
|||
// we construct the watcher first, and have it block any events it receives
|
||||
// before we can set its ZooKeeper reference.
|
||||
watcher = new WatcherWithClientRef();
|
||||
ZooKeeper zk = new ZooKeeper(zkHostPort, zkSessionTimeout, watcher);
|
||||
ZooKeeper zk = createZooKeeper();
|
||||
watcher.setZooKeeperRef(zk);
|
||||
|
||||
// Wait for the asynchronous success/failure. This may throw an exception
|
||||
|
@ -695,6 +695,17 @@ public class ActiveStandbyElector implements StatCallback, StringCallback {
|
|||
return zk;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new zookeeper client instance. protected so that test class can
|
||||
* inherit and pass in a mock object for zookeeper
|
||||
*
|
||||
* @return new zookeeper client instance
|
||||
* @throws IOException
|
||||
*/
|
||||
protected ZooKeeper createZooKeeper() throws IOException {
|
||||
return new ZooKeeper(zkHostPort, zkSessionTimeout, watcher);
|
||||
}
|
||||
|
||||
private void fatalError(String errorMessage) {
|
||||
LOG.fatal(errorMessage);
|
||||
reset();
|
||||
|
@ -830,7 +841,7 @@ public class ActiveStandbyElector implements StatCallback, StringCallback {
|
|||
zkClient = null;
|
||||
watcher = null;
|
||||
}
|
||||
zkClient = getNewZooKeeper();
|
||||
zkClient = connectToZooKeeper();
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Created new connection for " + this);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ public class TestActiveStandbyElector {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ZooKeeper getNewZooKeeper() {
|
||||
public ZooKeeper connectToZooKeeper() {
|
||||
++count;
|
||||
return mockZK;
|
||||
}
|
||||
|
@ -749,7 +749,15 @@ public class TestActiveStandbyElector {
|
|||
try {
|
||||
new ActiveStandbyElector("127.0.0.1", 2000, ZK_PARENT_NAME,
|
||||
Ids.OPEN_ACL_UNSAFE, Collections.<ZKAuthInfo> emptyList(), mockApp,
|
||||
CommonConfigurationKeys.HA_FC_ELECTOR_ZK_OP_RETRIES_DEFAULT);
|
||||
CommonConfigurationKeys.HA_FC_ELECTOR_ZK_OP_RETRIES_DEFAULT) {
|
||||
|
||||
@Override
|
||||
protected ZooKeeper createZooKeeper() throws IOException {
|
||||
return Mockito.mock(ZooKeeper.class);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Assert.fail("Did not throw zookeeper connection loss exceptions!");
|
||||
} catch (KeeperException ke) {
|
||||
GenericTestUtils.assertExceptionContains( "ConnectionLoss", ke);
|
||||
|
|
Loading…
Reference in New Issue