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

svn commit: r1535491 - in /zookeeper/trunk: CHANGES.txt src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java

Author: thawan
Date: Thu Oct 24 18:41:12 2013
New Revision: 1535491

URL: http://svn.apache.org/r1535491
Log:
ZOOKEEPER-1798. Fix race condition in testNormalObserverRun (thawan, fpj via thawan)

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

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1535491&r1=1535490&r2=1535491&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Thu Oct 24 18:41:12 2013
@@ -468,6 +468,9 @@ BUGFIXES:
   ZOOKEEPER-1499. clientPort config changes not backwards-compatible
   (Alexander Shraer via phunt, breed)
 
+  ZOOKEEPER-1798. Fix race condition in testNormalObserverRun
+  (thawan, fpj via thawan)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

Modified: zookeeper/trunk/src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java?rev=1535491&r1=1535490&r2=1535491&view=diff
==============================================================================
--- zookeeper/trunk/src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java (original)
+++ zookeeper/trunk/src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java Thu Oct 24 18:41:12 2013
@@ -193,8 +193,15 @@ public class SyncRequestProcessor extend
             if(running){
                 this.join();
             }
+            if (!toFlush.isEmpty()) {
+                flush(toFlush);
+            }
         } catch(InterruptedException e) {
             LOG.warn("Interrupted while wating for " + this + " to finish");
+        } catch (IOException e) {
+            LOG.warn("Got IO exception during shutdown");
+        } catch (RequestProcessorException e) {
+            LOG.warn("Got request processor exception during shutdown");
         }
         if (nextProcessor != null) {
             nextProcessor.shutdown();

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java?rev=1535491&r1=1535490&r2=1535491&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java Thu Oct 24 18:41:12 2013
@@ -1095,6 +1095,10 @@ public class Zab1_0Test {
                     Assert.assertEquals("data2", new String(o.zk
                             .getZKDatabase().getData("/foo2", stat, null)));
 
+                    // Shutdown sequence guarantee that all pending requests
+                    // in sync request processor get flush to disk
+                    o.zk.shutdown();
+
                     zkDb2 = new ZKDatabase(new FileTxnSnapLog(logDir, snapDir));
                     lastZxid = zkDb2.loadDataBase();
                     Assert.assertEquals("data2", new String(zkDb2.getData("/foo1", stat, null)));