You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by fp...@apache.org on 2011/06/14 14:11:56 UTC

svn commit: r1135515 - in /zookeeper/trunk: CHANGES.txt src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java

Author: fpj
Date: Tue Jun 14 12:11:55 2011
New Revision: 1135515

URL: http://svn.apache.org/viewvc?rev=1135515&view=rev
Log:
ZOOKEEPER-1060. QuorumPeer takes a long time to shutdown (Vishal via fpj)



Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
    zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1135515&r1=1135514&r2=1135515&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Tue Jun 14 12:11:55 2011
@@ -229,6 +229,8 @@ BUGFIXES: 
 
   ZOOKEEPER-1082. modify leader election to correctly take into account current epoch (fpj via breed)
 
+  ZOOKEEPER-1060. QuorumPeer takes a long time to shutdown (Vishal via fpj)
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

Modified: zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java?rev=1135515&r1=1135514&r2=1135515&view=diff
==============================================================================
--- zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java (original)
+++ zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java Tue Jun 14 12:11:55 2011
@@ -766,6 +766,7 @@ public class QuorumPeer extends Thread i
         }
         
         if(getElectionAlg() != null){
+            this.interrupt();
         	getElectionAlg().shutdown();
         }
         try {

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java?rev=1135515&r1=1135514&r2=1135515&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java Tue Jun 14 12:11:55 2011
@@ -501,5 +501,29 @@ public class QuorumPeerMainTest extends 
         }
         Assert.assertTrue("fastleaderelection used", found);
     }
-   
+
+    /**
+     * Verifies that QuorumPeer exits immediately
+     */
+    @Test
+    public void testQuorumPeerExitTime() throws Exception {
+        long maxwait = 3000;
+        final int CLIENT_PORT_QP1 = PortAssignment.unique();
+        String quorumCfgSection =
+            "server.1=127.0.0.1:" + PortAssignment.unique()
+            + ":" + PortAssignment.unique()
+            + "\nserver.2=127.0.0.1:" + PortAssignment.unique()
+            + ":" + PortAssignment.unique();
+        MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, quorumCfgSection);
+        q1.start();
+        // Let the notifications timeout
+        Thread.sleep(30000);
+        long start = System.currentTimeMillis();
+        q1.shutdown();
+        long end = System.currentTimeMillis();
+        if ((end - start) > maxwait) {
+           Assert.fail("QuorumPeer took " + (end -start) +
+                    " to shutdown, expected " + maxwait);
+        }
+    }
 }