Author: fpj Date: Fri Jan 3 00:23:23 2014 New Revision: 1554979 URL: http://svn.apache.org/r1554979 Log: ZOOKEEPER-1852. ServerCnxnFactory instance is not properly cleanedup (Rakesh R via fpj)
Modified: zookeeper/branches/branch-3.4/CHANGES.txt zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/ClientBase.java zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/TruncateTest.java Modified: zookeeper/branches/branch-3.4/CHANGES.txt URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/CHANGES.txt?rev=1554979&r1=1554978&r2=1554979&view=diff ============================================================================== --- zookeeper/branches/branch-3.4/CHANGES.txt (original) +++ zookeeper/branches/branch-3.4/CHANGES.txt Fri Jan 3 00:23:23 2014 @@ -209,6 +209,9 @@ BUGFIXES: socket on 4 letter word requests (Rakesh R, Germán Blanco via fpj) + ZOOKEEPER-1852. ServerCnxnFactory instance is not properly + cleanedup (Rakesh R via fpj) + IMPROVEMENTS: Modified: zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/ClientBase.java URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/ClientBase.java?rev=1554979&r1=1554978&r2=1554979&view=diff ============================================================================== --- zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/ClientBase.java (original) +++ zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/ClientBase.java Fri Jan 3 00:23:23 2014 @@ -324,20 +324,25 @@ public abstract class ClientBase extends return Integer.parseInt(portstr); } - public static ServerCnxnFactory createNewServerInstance(File dataDir, - ServerCnxnFactory factory, String hostPort, int maxCnxns) - throws IOException, InterruptedException - { + public static void startServerInstance(File dataDir, + ServerCnxnFactory factory, String hostPort) throws IOException, + InterruptedException { + final int port = getPort(hostPort); + LOG.info("STARTING server instance 127.0.0.1:{}", port); ZooKeeperServer zks = new ZooKeeperServer(dataDir, dataDir, 3000); - final int PORT = getPort(hostPort); - if (factory == null) { - factory = ServerCnxnFactory.createFactory(PORT, maxCnxns); - } factory.startup(zks); - Assert.assertTrue("waiting for server up", - ClientBase.waitForServerUp("127.0.0.1:" + PORT, - CONNECTION_TIMEOUT)); + Assert.assertTrue("waiting for server up", ClientBase.waitForServerUp( + "127.0.0.1:" + port, CONNECTION_TIMEOUT)); + } + public static ServerCnxnFactory createNewServerInstance( + ServerCnxnFactory factory, String hostPort, int maxCnxns) + throws IOException, InterruptedException { + final int port = getPort(hostPort); + LOG.info("CREATING server instance 127.0.0.1:{}", port); + if (factory == null) { + factory = ServerCnxnFactory.createFactory(port, maxCnxns); + } return factory; } @@ -345,15 +350,18 @@ public abstract class ClientBase extends String hostPort) { if (factory != null) { - ZKDatabase zkDb; + ZKDatabase zkDb = null; { ZooKeeperServer zs = getServer(factory); - - zkDb = zs.getZKDatabase(); + if (zs != null) { + zkDb = zs.getZKDatabase(); + } } factory.shutdown(); try { - zkDb.close(); + if (zkDb != null) { + zkDb.close(); + } } catch (IOException ie) { LOG.warn("Error closing logs ", ie); } @@ -411,7 +419,9 @@ public abstract class ClientBase extends protected void startServer() throws Exception { LOG.info("STARTING server"); - serverFactory = createNewServerInstance(tmpDir, serverFactory, hostPort, maxCnxns); + serverFactory = createNewServerInstance(serverFactory, hostPort, + maxCnxns); + startServerInstance(tmpDir, serverFactory, hostPort); // ensure that only server and data bean are registered JMXEnv.ensureOnly("InMemoryDataTree", "StandaloneServer_port"); } Modified: zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/TruncateTest.java URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/TruncateTest.java?rev=1554979&r1=1554978&r2=1554979&view=diff ============================================================================== --- zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/TruncateTest.java (original) +++ zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/test/TruncateTest.java Fri Jan 3 00:23:23 2014 @@ -128,7 +128,10 @@ public class TruncateTest extends ZKTest public void testTruncate() throws IOException, InterruptedException, KeeperException { // Prime the server that is going to come in late with 50 txns String hostPort = "127.0.0.1:" + baseHostPort; - ServerCnxnFactory factory = ClientBase.createNewServerInstance(dataDir1, null, hostPort, 100); + int maxCnxns = 100; + ServerCnxnFactory factory = ClientBase.createNewServerInstance(null, + hostPort, maxCnxns); + ClientBase.startServerInstance(dataDir1, factory, hostPort); ClientBase.shutdownServerInstance(factory, hostPort); // standalone starts with 0 epoch while quorum starts with 1 @@ -136,7 +139,8 @@ public class TruncateTest extends ZKTest File newfile = new File(new File(dataDir1, "version-2"), "snapshot.100000000"); origfile.renameTo(newfile); - factory = ClientBase.createNewServerInstance(dataDir1, null, hostPort, 100); + factory = ClientBase.createNewServerInstance(null, hostPort, maxCnxns); + ClientBase.startServerInstance(dataDir1, factory, hostPort); ZooKeeper zk = new ZooKeeper(hostPort, 15000, nullWatcher); for(int i = 0; i < 50; i++) {