You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2013/10/02 20:19:31 UTC

svn commit: r1528586 - in /zookeeper/trunk: CHANGES.txt src/java/test/org/apache/zookeeper/test/FLETest.java

Author: phunt
Date: Wed Oct  2 18:19:30 2013
New Revision: 1528586

URL: http://svn.apache.org/r1528586
Log:
ZOOKEEPER-1733. FLETest#testLE is flaky on windows boxes (Jeffrey Zhong via phunt)

Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1528586&r1=1528585&r2=1528586&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Wed Oct  2 18:19:30 2013
@@ -403,6 +403,9 @@ BUGFIXES:
   ZOOKEEPER-1770. NullPointerException in SnapshotFormatter
   (Germán Blanco via phunt)
 
+  ZOOKEEPER-1733. FLETest#testLE is flaky on windows boxes
+  (Jeffrey Zhong via phunt)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java?rev=1528586&r1=1528585&r2=1528586&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java Wed Oct  2 18:19:30 2013
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Random;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.slf4j.Logger;
@@ -42,6 +43,7 @@ import org.junit.Test;
 
 public class FLETest extends ZKTestCase {
     protected static final Logger LOG = LoggerFactory.getLogger(FLETest.class);
+    private final int MAX_LOOP_COUNTER = 300;
     private FLETest.LEThread leThread;
 
     static class TestVote {
@@ -74,7 +76,8 @@ public class FLETest extends ZKTestCase 
     volatile long leader = -1;
     //volatile int round = 1;
     Random rand = new Random();
-
+    Set<Long> joinedThreads;
+    
     @Before
     public void setUp() throws Exception {
         count = 7;
@@ -86,6 +89,7 @@ public class FLETest extends ZKTestCase 
         tmpdir = new File[count];
         port = new int[count];
         successCount = 0;
+        joinedThreads = new HashSet<Long>();
     }
 
     @After
@@ -202,11 +206,12 @@ public class FLETest extends ZKTestCase 
                                  * joined.
                                  */
                                 successCount++;
+                                joinedThreads.add((long)i);
                                 self.notify();
                             }
                         
                             /*
-                             * I'm done so joining.
+                             * I'm done so joining. 
                              */
                             break;
                         } else {
@@ -236,12 +241,12 @@ public class FLETest extends ZKTestCase 
         boolean waitForQuorum(long id)
         throws InterruptedException {
             int loopCounter = 0;
-            while((quora.get(id).size() <= count/2) && (loopCounter < 50)){
+            while((quora.get(id).size() <= count/2) && (loopCounter < MAX_LOOP_COUNTER)){
                 Thread.sleep(100);
                 loopCounter++;
             }
             
-            if((loopCounter >= 50) && (quora.get(id).size() <= count/2)){
+            if((loopCounter >= MAX_LOOP_COUNTER) && (quora.get(id).size() <= count/2)){
                 return false;
             } else {
                 return true;
@@ -322,7 +327,9 @@ public class FLETest extends ZKTestCase 
 
         int waitCounter = 0;
         synchronized(this){
-            while(((successCount <= count/2) || (leader == -1)) && (waitCounter < 50)){
+            while(((successCount <= count/2) || (leader == -1))
+                && (waitCounter < MAX_LOOP_COUNTER))
+            {
                 this.wait(200);
                 waitCounter++;
             }
@@ -349,9 +356,9 @@ public class FLETest extends ZKTestCase 
        }
 
        /*
-        * The leader also has to join.
+        * I'm done so joining.
         */
-       if(threads.get((int) leader).isAlive()){
+       if(!joinedThreads.contains(leader)){
            Assert.fail("Leader hasn't joined: " + leader);
        }
     }