You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ra...@apache.org on 2014/09/28 19:18:16 UTC

svn commit: r1628087 - in /zookeeper/branches/branch-3.4: ./ src/java/main/org/apache/zookeeper/server/ src/java/test/org/apache/zookeeper/server/

Author: rakeshr
Date: Sun Sep 28 17:18:16 2014
New Revision: 1628087

URL: http://svn.apache.org/r1628087
Log:
ZOOKEEPER-2026 Startup order in ServerCnxnFactory-ies is wrong (Stevo Slavic via rakeshr)

Modified:
    zookeeper/branches/branch-3.4/CHANGES.txt
    zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java
    zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java
    zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/server/ZooKeeperServerMainTest.java

Modified: zookeeper/branches/branch-3.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/CHANGES.txt?rev=1628087&r1=1628086&r2=1628087&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.4/CHANGES.txt Sun Sep 28 17:18:16 2014
@@ -44,6 +44,8 @@ BUGFIXES:
 
   ZOOKEEPER-2047 testTruncationNullLog fails on windows (flavio via rakeshr)
 
+  ZOOKEEPER-2026 Startup order in ServerCnxnFactory-ies is wrong (Stevo Slavic via rakeshr)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1575. adding .gitattributes to prevent CRLF and LF mismatches for

Modified: zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java?rev=1628087&r1=1628086&r2=1628087&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java (original)
+++ zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java Sun Sep 28 17:18:16 2014
@@ -119,9 +119,9 @@ public class NIOServerCnxnFactory extend
     public void startup(ZooKeeperServer zks) throws IOException,
             InterruptedException {
         start();
+        setZooKeeperServer(zks);
         zks.startdata();
         zks.startup();
-        setZooKeeperServer(zks);
     }
 
     @Override

Modified: zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java?rev=1628087&r1=1628086&r2=1628087&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java (original)
+++ zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java Sun Sep 28 17:18:16 2014
@@ -368,9 +368,9 @@ public class NettyServerCnxnFactory exte
     public void startup(ZooKeeperServer zks) throws IOException,
             InterruptedException {
         start();
+        setZooKeeperServer(zks);
         zks.startdata();
         zks.startup();
-        setZooKeeperServer(zks);
     }
 
     @Override

Modified: zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/server/ZooKeeperServerMainTest.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/server/ZooKeeperServerMainTest.java?rev=1628087&r1=1628086&r2=1628087&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/server/ZooKeeperServerMainTest.java (original)
+++ zookeeper/branches/branch-3.4/src/java/test/org/apache/zookeeper/server/ZooKeeperServerMainTest.java Sun Sep 28 17:18:16 2014
@@ -27,6 +27,7 @@ import java.io.IOException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.zookeeper.CreateMode;
+import org.apache.zookeeper.PortAssignment;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZKTestCase;
@@ -129,7 +130,7 @@ public class ZooKeeperServerMainTest ext
     public void testStandalone() throws Exception {
         ClientBase.setupTestEnv();
 
-        final int CLIENT_PORT = 3181;
+        final int CLIENT_PORT = PortAssignment.unique();
 
         MainThread main = new MainThread(CLIENT_PORT, true);
         main.start();
@@ -162,7 +163,7 @@ public class ZooKeeperServerMainTest ext
     @Test(timeout = 30000)
     public void testAutoCreateDataLogDir() throws Exception {
         ClientBase.setupTestEnv();
-        final int CLIENT_PORT = 3181;
+        final int CLIENT_PORT = PortAssignment.unique();
 
         MainThread main = new MainThread(CLIENT_PORT, false);
         String args[] = new String[1];
@@ -191,6 +192,77 @@ public class ZooKeeperServerMainTest ext
                         ClientBase.CONNECTION_TIMEOUT));
     }
 
+    @Test
+    public void testJMXRegistrationWithNIO() throws Exception {
+        ClientBase.setupTestEnv();
+        File tmpDir_1 = ClientBase.createTmpDir();
+        ServerCnxnFactory server_1 = startServer(tmpDir_1);
+        File tmpDir_2 = ClientBase.createTmpDir();
+        ServerCnxnFactory server_2 = startServer(tmpDir_2);
+
+        server_1.shutdown();
+        server_2.shutdown();
+
+        deleteFile(tmpDir_1);
+        deleteFile(tmpDir_2);
+    }
+
+    @Test
+    public void testJMXRegistrationWithNetty() throws Exception {
+        String originalServerCnxnFactory = System
+                .getProperty(ServerCnxnFactory.ZOOKEEPER_SERVER_CNXN_FACTORY);
+        System.setProperty(ServerCnxnFactory.ZOOKEEPER_SERVER_CNXN_FACTORY,
+                NettyServerCnxnFactory.class.getName());
+        try {
+            ClientBase.setupTestEnv();
+            File tmpDir_1 = ClientBase.createTmpDir();
+            ServerCnxnFactory server_1 = startServer(tmpDir_1);
+            File tmpDir_2 = ClientBase.createTmpDir();
+            ServerCnxnFactory server_2 = startServer(tmpDir_2);
+
+            server_1.shutdown();
+            server_2.shutdown();
+
+            deleteFile(tmpDir_1);
+            deleteFile(tmpDir_2);
+        } finally {
+            // setting back
+            if (originalServerCnxnFactory == null
+                    || originalServerCnxnFactory.isEmpty()) {
+                System.clearProperty(ServerCnxnFactory.ZOOKEEPER_SERVER_CNXN_FACTORY);
+            } else {
+                System.setProperty(
+                        ServerCnxnFactory.ZOOKEEPER_SERVER_CNXN_FACTORY,
+                        originalServerCnxnFactory);
+            }
+        }
+    }
+
+    private void deleteFile(File f) throws IOException {
+        if (f.isDirectory()) {
+            for (File c : f.listFiles())
+                deleteFile(c);
+        }
+        if (!f.delete())
+            // double check for the file existence
+            if (f.exists()) {
+                throw new IOException("Failed to delete file: " + f);
+            }
+    }
+
+    private ServerCnxnFactory startServer(File tmpDir) throws IOException,
+            InterruptedException {
+        final int CLIENT_PORT = PortAssignment.unique();
+        ZooKeeperServer zks = new ZooKeeperServer(tmpDir, tmpDir, 3000);
+        ServerCnxnFactory f = ServerCnxnFactory.createFactory(CLIENT_PORT, -1);
+        f.startup(zks);
+        Assert.assertNotNull("JMX initialization failed!", zks.jmxServerBean);
+        Assert.assertTrue("waiting for server being up",
+                ClientBase.waitForServerUp("127.0.0.1:" + CLIENT_PORT,
+                        CONNECTION_TIMEOUT));
+        return f;
+    }
+
     public void process(WatchedEvent event) {
         // ignore for this test
     }