You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ha...@apache.org on 2017/02/11 23:31:36 UTC
zookeeper git commit: ZOOKEEPER-2642: ZooKeeper reconfig API backward
compatibility fix.
Repository: zookeeper
Updated Branches:
refs/heads/branch-3.5 91c400829 -> 0ba7eda90
ZOOKEEPER-2642: ZooKeeper reconfig API backward compatibility fix.
New PR that applies ZOOKEEPER-2642 to `branch-3.5`
Author: randgalt <jo...@jordanzimmerman.com>
Reviewers: Michael Han <ha...@apache.org>
Closes #151 from Randgalt/ZOOKEEPER-2642-3.5
Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/0ba7eda9
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/0ba7eda9
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/0ba7eda9
Branch: refs/heads/branch-3.5
Commit: 0ba7eda90199edb4a3d3a06b236020608660f48e
Parents: 91c4008
Author: randgalt <jo...@jordanzimmerman.com>
Authored: Sat Feb 11 15:31:29 2017 -0800
Committer: Michael Han <ha...@apache.org>
Committed: Sat Feb 11 15:31:29 2017 -0800
----------------------------------------------------------------------
.../content/xdocs/zookeeperReconfig.xml | 5 ++
.../main/org/apache/zookeeper/ZooKeeper.java | 80 +++++++++++++++++++-
.../apache/zookeeper/admin/ZooKeeperAdmin.java | 63 +++++----------
.../apache/zookeeper/cli/ReconfigCommand.java | 2 +-
.../quorum/ReconfigDuringLeaderSyncTest.java | 2 +-
.../server/quorum/ReconfigFailureCasesTest.java | 10 +--
.../server/quorum/StandaloneDisabledTest.java | 2 +-
.../zookeeper/test/ReconfigExceptionTest.java | 2 +-
.../zookeeper/test/ReconfigMisconfigTest.java | 2 +-
.../org/apache/zookeeper/test/ReconfigTest.java | 4 +-
.../apache/zookeeper/test/StandaloneTest.java | 2 +-
11 files changed, 114 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/docs/src/documentation/content/xdocs/zookeeperReconfig.xml
----------------------------------------------------------------------
diff --git a/src/docs/src/documentation/content/xdocs/zookeeperReconfig.xml b/src/docs/src/documentation/content/xdocs/zookeeperReconfig.xml
index c1c9ad7..5dd6c9e 100644
--- a/src/docs/src/documentation/content/xdocs/zookeeperReconfig.xml
+++ b/src/docs/src/documentation/content/xdocs/zookeeperReconfig.xml
@@ -300,6 +300,11 @@ server.3=125.23.63.25:2782:2785:participant</programlisting>
from ZooKeeper class, and use of this API requires ACL setup and user
authentication (see <xref linkend="sc_reconfig_access_control"/> for more information.).
</para>
+
+ <para>Note: for temporary backward compatibility, the reconfig() APIs will remain in ZooKeeper.java
+ where they were for a few alpha versions of 3.5.x. However, these APIs are deprecated and users
+ should move to the reconfigure() APIs in ZooKeeperAdmin.java.
+ </para>
</listitem>
</varlistentry>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/main/org/apache/zookeeper/ZooKeeper.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/ZooKeeper.java b/src/java/main/org/apache/zookeeper/ZooKeeper.java
index 23c4e40..b8c8008 100644
--- a/src/java/main/org/apache/zookeeper/ZooKeeper.java
+++ b/src/java/main/org/apache/zookeeper/ZooKeeper.java
@@ -51,6 +51,7 @@ import org.apache.zookeeper.client.HostProvider;
import org.apache.zookeeper.client.StaticHostProvider;
import org.apache.zookeeper.client.ZooKeeperSaslClient;
import org.apache.zookeeper.common.PathUtils;
+import org.apache.zookeeper.common.StringUtils;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Stat;
import org.apache.zookeeper.proto.CheckWatchesRequest;
@@ -67,6 +68,7 @@ import org.apache.zookeeper.proto.GetChildrenRequest;
import org.apache.zookeeper.proto.GetChildrenResponse;
import org.apache.zookeeper.proto.GetDataRequest;
import org.apache.zookeeper.proto.GetDataResponse;
+import org.apache.zookeeper.proto.ReconfigRequest;
import org.apache.zookeeper.proto.RemoveWatchesRequest;
import org.apache.zookeeper.proto.ReplyHeader;
import org.apache.zookeeper.proto.RequestHeader;
@@ -2134,7 +2136,42 @@ public class ZooKeeper implements AutoCloseable {
public void getConfig(boolean watch, DataCallback cb, Object ctx) {
getConfig(watch ? watchManager.defaultWatcher : null, cb, ctx);
}
-
+
+ /**
+ * @deprecated instead use the reconfigure() methods instead in {@link org.apache.zookeeper.admin.ZooKeeperAdmin}
+ */
+ @Deprecated
+ public byte[] reconfig(String joiningServers, String leavingServers, String newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
+ return internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, stat);
+ }
+
+ /**
+ * @deprecated instead use the reconfigure() methods instead in {@link org.apache.zookeeper.admin.ZooKeeperAdmin}
+ */
+ @Deprecated
+ public byte[] reconfig(List<String> joiningServers, List<String> leavingServers, List<String> newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
+ return internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, stat);
+ }
+
+ /**
+ * @deprecated instead use the reconfigure() methods instead in {@link org.apache.zookeeper.admin.ZooKeeperAdmin}
+ */
+ @Deprecated
+ public void reconfig(String joiningServers, String leavingServers,
+ String newMembers, long fromConfig, DataCallback cb, Object ctx) {
+ internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, cb, ctx);
+ }
+
+ /**
+ * @deprecated instead use the reconfigure() methods instead in {@link org.apache.zookeeper.admin.ZooKeeperAdmin}
+ */
+ @Deprecated
+ public void reconfig(List<String> joiningServers,
+ List<String> leavingServers, List<String> newMembers, long fromConfig,
+ DataCallback cb, Object ctx) {
+ internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, cb, ctx);
+ }
+
/**
* Set the data for the node of the given path if such a node exists and the
* given version matches the version of the node (if the given version is
@@ -2869,4 +2906,45 @@ public class ZooKeeper implements AutoCloseable {
throw ioe;
}
}
+
+ protected byte[] internalReconfig(String joiningServers, String leavingServers, String newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
+ RequestHeader h = new RequestHeader();
+ h.setType(ZooDefs.OpCode.reconfig);
+ ReconfigRequest request = new ReconfigRequest(joiningServers, leavingServers, newMembers, fromConfig);
+ GetDataResponse response = new GetDataResponse();
+ ReplyHeader r = cnxn.submitRequest(h, request, response, null);
+ if (r.getErr() != 0) {
+ throw KeeperException.create(KeeperException.Code.get(r.getErr()), "");
+ }
+ if (stat != null) {
+ DataTree.copyStat(response.getStat(), stat);
+ }
+ return response.getData();
+ }
+
+ protected byte[] internalReconfig(List<String> joiningServers, List<String> leavingServers, List<String> newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
+ return internalReconfig(StringUtils.joinStrings(joiningServers, ","),
+ StringUtils.joinStrings(leavingServers, ","),
+ StringUtils.joinStrings(newMembers, ","),
+ fromConfig, stat);
+ }
+
+ protected void internalReconfig(String joiningServers, String leavingServers,
+ String newMembers, long fromConfig, DataCallback cb, Object ctx) {
+ RequestHeader h = new RequestHeader();
+ h.setType(ZooDefs.OpCode.reconfig);
+ ReconfigRequest request = new ReconfigRequest(joiningServers, leavingServers, newMembers, fromConfig);
+ GetDataResponse response = new GetDataResponse();
+ cnxn.queuePacket(h, new ReplyHeader(), request, response, cb,
+ ZooDefs.CONFIG_NODE, ZooDefs.CONFIG_NODE, ctx, null);
+ }
+
+ protected void internalReconfig(List<String> joiningServers,
+ List<String> leavingServers, List<String> newMembers, long fromConfig,
+ DataCallback cb, Object ctx) {
+ internalReconfig(StringUtils.joinStrings(joiningServers, ","),
+ StringUtils.joinStrings(leavingServers, ","),
+ StringUtils.joinStrings(newMembers, ","),
+ fromConfig, cb, ctx);
+ }
}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/main/org/apache/zookeeper/admin/ZooKeeperAdmin.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/admin/ZooKeeperAdmin.java b/src/java/main/org/apache/zookeeper/admin/ZooKeeperAdmin.java
index f60e8d5..a584132 100644
--- a/src/java/main/org/apache/zookeeper/admin/ZooKeeperAdmin.java
+++ b/src/java/main/org/apache/zookeeper/admin/ZooKeeperAdmin.java
@@ -22,18 +22,11 @@ import java.io.IOException;
import java.util.List;
import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.AsyncCallback.DataCallback;
import org.apache.zookeeper.client.ZKClientConfig;
-import org.apache.zookeeper.common.StringUtils;
import org.apache.zookeeper.data.Stat;
-import org.apache.zookeeper.proto.GetDataResponse;
-import org.apache.zookeeper.proto.ReconfigRequest;
-import org.apache.zookeeper.proto.ReplyHeader;
-import org.apache.zookeeper.proto.RequestHeader;
-import org.apache.zookeeper.server.DataTree;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -172,66 +165,44 @@ public class ZooKeeperAdmin extends ZooKeeper {
* @throws InterruptedException If the server transaction is interrupted.
* @throws KeeperException If the server signals an error with a non-zero error code.
*/
- public byte[] reconfig(String joiningServers, String leavingServers,
- String newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
- RequestHeader h = new RequestHeader();
- h.setType(ZooDefs.OpCode.reconfig);
- ReconfigRequest request = new ReconfigRequest(joiningServers, leavingServers, newMembers, fromConfig);
- GetDataResponse response = new GetDataResponse();
- ReplyHeader r = cnxn.submitRequest(h, request, response, null);
- if (r.getErr() != 0) {
- throw KeeperException.create(KeeperException.Code.get(r.getErr()), "");
- }
- if (stat != null) {
- DataTree.copyStat(response.getStat(), stat);
- }
- return response.getData();
+ public byte[] reconfigure(String joiningServers, String leavingServers,
+ String newMembers, long fromConfig, Stat stat) throws KeeperException, InterruptedException {
+ return internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, stat);
}
/**
* Convenience wrapper around reconfig that takes Lists of strings instead of comma-separated servers.
*
- * @see #reconfig
+ * @see #reconfigure
*
*/
- public byte[] reconfig(List<String> joiningServers, List<String> leavingServers,
- List<String> newMembers, long fromConfig,
- Stat stat) throws KeeperException, InterruptedException {
- return reconfig(StringUtils.joinStrings(joiningServers, ","),
- StringUtils.joinStrings(leavingServers, ","),
- StringUtils.joinStrings(newMembers, ","),
- fromConfig, stat);
+ public byte[] reconfigure(List<String> joiningServers, List<String> leavingServers,
+ List<String> newMembers, long fromConfig,
+ Stat stat) throws KeeperException, InterruptedException {
+ return internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, stat);
}
/**
* The Asynchronous version of reconfig.
*
- * @see #reconfig
+ * @see #reconfigure
*
**/
- public void reconfig(String joiningServers, String leavingServers,
- String newMembers, long fromConfig, DataCallback cb, Object ctx) {
- RequestHeader h = new RequestHeader();
- h.setType(ZooDefs.OpCode.reconfig);
- ReconfigRequest request = new ReconfigRequest(joiningServers, leavingServers, newMembers, fromConfig);
- GetDataResponse response = new GetDataResponse();
- cnxn.queuePacket(h, new ReplyHeader(), request, response, cb,
- ZooDefs.CONFIG_NODE, ZooDefs.CONFIG_NODE, ctx, null);
+ public void reconfigure(String joiningServers, String leavingServers,
+ String newMembers, long fromConfig, DataCallback cb, Object ctx) {
+ internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, cb, ctx);
}
/**
* Convenience wrapper around asynchronous reconfig that takes Lists of strings instead of comma-separated servers.
*
- * @see #reconfig
+ * @see #reconfigure
*
*/
- public void reconfig(List<String> joiningServers,
- List<String> leavingServers, List<String> newMembers, long fromConfig,
- DataCallback cb, Object ctx) {
- reconfig(StringUtils.joinStrings(joiningServers, ","),
- StringUtils.joinStrings(leavingServers, ","),
- StringUtils.joinStrings(newMembers, ","),
- fromConfig, cb, ctx);
+ public void reconfigure(List<String> joiningServers,
+ List<String> leavingServers, List<String> newMembers, long fromConfig,
+ DataCallback cb, Object ctx) {
+ internalReconfig(joiningServers, leavingServers, newMembers, fromConfig, cb, ctx);
}
/**
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/main/org/apache/zookeeper/cli/ReconfigCommand.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/cli/ReconfigCommand.java b/src/java/main/org/apache/zookeeper/cli/ReconfigCommand.java
index a0709f3..342f5d2 100644
--- a/src/java/main/org/apache/zookeeper/cli/ReconfigCommand.java
+++ b/src/java/main/org/apache/zookeeper/cli/ReconfigCommand.java
@@ -154,7 +154,7 @@ public class ReconfigCommand extends CliCommand {
return false;
}
- byte[] curConfig = ((ZooKeeperAdmin)zk).reconfig(joining,
+ byte[] curConfig = ((ZooKeeperAdmin)zk).reconfigure(joining,
leaving, members, version, stat);
out.println("Committed new configuration:\n" + new String(curConfig));
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/server/quorum/ReconfigDuringLeaderSyncTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/server/quorum/ReconfigDuringLeaderSyncTest.java b/src/java/test/org/apache/zookeeper/server/quorum/ReconfigDuringLeaderSyncTest.java
index 6da5181..f7f0c7c 100644
--- a/src/java/test/org/apache/zookeeper/server/quorum/ReconfigDuringLeaderSyncTest.java
+++ b/src/java/test/org/apache/zookeeper/server/quorum/ReconfigDuringLeaderSyncTest.java
@@ -149,7 +149,7 @@ public class ReconfigDuringLeaderSyncTest extends QuorumPeerTestBase {
// Leader.NEWLEADER
while (true) {
if (qp.isNewLeaderMessage()) {
- preReconfigClient.reconfig(serverConfig[joinerId], null, null, -1, null, null);
+ preReconfigClient.reconfigure(serverConfig[joinerId], null, null, -1, null, null);
break;
} else {
// sleep for 10 millisecond and then again check
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/server/quorum/ReconfigFailureCasesTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/server/quorum/ReconfigFailureCasesTest.java b/src/java/test/org/apache/zookeeper/server/quorum/ReconfigFailureCasesTest.java
index e9263bc..8120d0f 100644
--- a/src/java/test/org/apache/zookeeper/server/quorum/ReconfigFailureCasesTest.java
+++ b/src/java/test/org/apache/zookeeper/server/quorum/ReconfigFailureCasesTest.java
@@ -91,7 +91,7 @@ public class ReconfigFailureCasesTest extends QuorumPeerTestBase {
List<String> leavingServers = new ArrayList<String>();
leavingServers.add("3");
try {
- zkAdminArr[1].reconfig(null, leavingServers, null, -1, null);
+ zkAdminArr[1].reconfigure(null, leavingServers, null, -1, null);
Assert.fail("Reconfig should have failed since the current config isn't Majority QS");
} catch (KeeperException.BadArgumentsException e) {
// We expect this to happen.
@@ -121,7 +121,7 @@ public class ReconfigFailureCasesTest extends QuorumPeerTestBase {
leavingServers.add("2");
leavingServers.add("3");
try {
- zkAdminArr[1].reconfig(null, leavingServers, null, -1, null);
+ zkAdminArr[1].reconfigure(null, leavingServers, null, -1, null);
Assert.fail("Reconfig should have failed since the current config version is not 8");
} catch (KeeperException.BadArgumentsException e) {
// We expect this to happen.
@@ -147,7 +147,7 @@ public class ReconfigFailureCasesTest extends QuorumPeerTestBase {
List<String> leavingServers = new ArrayList<String>();
leavingServers.add("3");
try {
- zkAdminArr[1].reconfig(null, leavingServers, null, 8, null);
+ zkAdminArr[1].reconfigure(null, leavingServers, null, 8, null);
Assert.fail("Reconfig should have failed since the current config version is not 8");
} catch (KeeperException.BadVersionException e) {
// We expect this to happen.
@@ -182,7 +182,7 @@ public class ReconfigFailureCasesTest extends QuorumPeerTestBase {
// We try to remove server 3, which requires a quorum of {1,2,3}
// (we have that) and of {1,2}, but 2 is down so we won't get a
// quorum of new config ACKs.
- zkAdminArr[1].reconfig(null, leavingServers, null, -1, null);
+ zkAdminArr[1].reconfigure(null, leavingServers, null, -1, null);
Assert.fail("Reconfig should have failed since we don't have quorum of new config");
} catch (KeeperException.ConnectionLossException e) {
// We expect leader to lose quorum of proposed config and time out
@@ -255,7 +255,7 @@ public class ReconfigFailureCasesTest extends QuorumPeerTestBase {
}
try {
- zkAdmin[1].reconfig("", "", nextQuorumCfgSection, -1, new Stat());
+ zkAdmin[1].reconfigure("", "", nextQuorumCfgSection, -1, new Stat());
Assert.fail("Reconfig should have failed with NewConfigNoQuorum");
} catch (NewConfigNoQuorum e) {
// This is expected case since server 0 is down and 3 can't vote
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/server/quorum/StandaloneDisabledTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/server/quorum/StandaloneDisabledTest.java b/src/java/test/org/apache/zookeeper/server/quorum/StandaloneDisabledTest.java
index 9a85d77..34206cd 100644
--- a/src/java/test/org/apache/zookeeper/server/quorum/StandaloneDisabledTest.java
+++ b/src/java/test/org/apache/zookeeper/server/quorum/StandaloneDisabledTest.java
@@ -94,7 +94,7 @@ public class StandaloneDisabledTest extends QuorumPeerTestBase {
reconfigServers.clear();
reconfigServers.add(Integer.toString(follower2));
try {
- zkAdminHandles[follower2].reconfig(null, reconfigServers, null, -1, new Stat());
+ zkAdminHandles[follower2].reconfigure(null, reconfigServers, null, -1, new Stat());
Assert.fail("reconfig completed successfully even though there is no quorum up in new config!");
} catch (KeeperException.BadArgumentsException e) {
// This is expected.
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/test/ReconfigExceptionTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/test/ReconfigExceptionTest.java b/src/java/test/org/apache/zookeeper/test/ReconfigExceptionTest.java
index e56ae6f..c5b936d 100644
--- a/src/java/test/org/apache/zookeeper/test/ReconfigExceptionTest.java
+++ b/src/java/test/org/apache/zookeeper/test/ReconfigExceptionTest.java
@@ -214,7 +214,7 @@ public class ReconfigExceptionTest extends ZKTestCase {
+ qu.getPeer(followerId).peer.getQuorumAddress().getPort() /*quorum port*/
+ ":" + qu.getPeer(followerId).peer.getElectionAddress().getPort() /*election port*/
+ ":participant;localhost:" + PortAssignment.unique()/* new client port */);
- zkAdmin.reconfig(joiningServers, null, null, -1, new Stat());
+ zkAdmin.reconfigure(joiningServers, null, null, -1, new Stat());
return true;
}
}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/test/ReconfigMisconfigTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/test/ReconfigMisconfigTest.java b/src/java/test/org/apache/zookeeper/test/ReconfigMisconfigTest.java
index 7aaa419..f5cf476 100644
--- a/src/java/test/org/apache/zookeeper/test/ReconfigMisconfigTest.java
+++ b/src/java/test/org/apache/zookeeper/test/ReconfigMisconfigTest.java
@@ -123,7 +123,7 @@ public class ReconfigMisconfigTest extends ZKTestCase {
+ qu.getPeer(followerId).peer.getQuorumAddress().getPort() /*quorum port*/
+ ":" + qu.getPeer(followerId).peer.getElectionAddress().getPort() /*election port*/
+ ":participant;localhost:" + PortAssignment.unique()/* new client port */);
- zkAdmin.reconfig(joiningServers, null, null, -1, new Stat());
+ zkAdmin.reconfigure(joiningServers, null, null, -1, new Stat());
return true;
}
}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/test/ReconfigTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/test/ReconfigTest.java b/src/java/test/org/apache/zookeeper/test/ReconfigTest.java
index 6ca415c..c4658ca 100644
--- a/src/java/test/org/apache/zookeeper/test/ReconfigTest.java
+++ b/src/java/test/org/apache/zookeeper/test/ReconfigTest.java
@@ -81,7 +81,7 @@ public class ReconfigTest extends ZKTestCase implements DataCallback{
byte[] config = null;
for (int j = 0; j < 30; j++) {
try {
- config = zkAdmin.reconfig(joiningServers, leavingServers,
+ config = zkAdmin.reconfigure(joiningServers, leavingServers,
newMembers, fromConfig, new Stat());
break;
} catch (KeeperException.ConnectionLossException e) {
@@ -481,7 +481,7 @@ public class ReconfigTest extends ZKTestCase implements DataCallback{
LinkedList<Integer> results = new LinkedList<Integer>();
- zkAdminArr[1].reconfig(null, leavingServers, null, -1, this, results);
+ zkAdminArr[1].reconfigure(null, leavingServers, null, -1, this, results);
synchronized (results) {
while (results.size() < 1) {
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0ba7eda9/src/java/test/org/apache/zookeeper/test/StandaloneTest.java
----------------------------------------------------------------------
diff --git a/src/java/test/org/apache/zookeeper/test/StandaloneTest.java b/src/java/test/org/apache/zookeeper/test/StandaloneTest.java
index db1a362..3d57b6c 100644
--- a/src/java/test/org/apache/zookeeper/test/StandaloneTest.java
+++ b/src/java/test/org/apache/zookeeper/test/StandaloneTest.java
@@ -151,7 +151,7 @@ public class StandaloneTest extends QuorumPeerTestBase implements Watcher{
// generate some transactions that will get logged
try {
zkAdmin.addAuthInfo("digest", "super:test".getBytes());
- zkAdmin.reconfig(joiners, null, null, -1, new Stat());
+ zkAdmin.reconfigure(joiners, null, null, -1, new Stat());
Assert.fail("Reconfiguration in standalone should trigger " +
"UnimplementedException");
} catch (KeeperException.UnimplementedException ex) {