You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by iv...@apache.org on 2013/08/23 18:48:38 UTC

svn commit: r1516929 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java

Author: ivank
Date: Fri Aug 23 16:48:37 2013
New Revision: 1516929

URL: http://svn.apache.org/r1516929
Log:
BOOKKEEPER-580: improve close logic (sijie & ivank via ivank)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1516929&r1=1516928&r2=1516929&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Fri Aug 23 16:48:37 2013
@@ -96,6 +96,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-649: Race condition in sync ZKUtils.createFullPathOptimistic() (ivank)
 
+        BOOKKEEPER-580: improve close logic (sijie & ivank via ivank)
+
       hedwig-server:
 
         BOOKKEEPER-601: readahead cache size isn't updated correctly (sijie via fpj)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java?rev=1516929&r1=1516928&r2=1516929&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java Fri Aug 23 16:48:37 2013
@@ -248,6 +248,12 @@ public class LedgerHandle {
                 final State prevState;
 
                 synchronized(LedgerHandle.this) {
+                    // if the metadata is already closed, we don't need to proceed the process
+                    // otherwise, it might end up encountering bad version error log messages when updating metadata
+                    if (metadata.isClosed()) {
+                        cb.closeComplete(BKException.Code.OK, LedgerHandle.this, ctx);
+                        return;
+                    }
                     prevState = metadata.getState();
                     prevLastEntryId = metadata.getLastEntryId();
                     prevLength = metadata.getLength();
@@ -257,8 +263,6 @@ public class LedgerHandle {
                     // is closed. 
                     metadata.setLength(length);
 
-                    // Close operation is idempotent, so no need to check if we are
-                    // already closed
                     metadata.close(lastAddConfirmed);
                     errorOutPendingAdds(rc);
                     lastAddPushed = lastAddConfirmed;

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java?rev=1516929&r1=1516928&r2=1516929&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestFencing.java Fri Aug 23 16:48:37 2013
@@ -292,12 +292,7 @@ public class TestFencing extends BaseTes
         }
 
         readlh.close();
-        try {
-            writelh.close();
-            fail("Should fail trying to update metadata");
-        } catch (BKException.BKMetadataVersionException e) {
-            // correct behaviour
-        }
+        writelh.close();
     }
 
     /**
@@ -338,13 +333,7 @@ public class TestFencing extends BaseTes
         }
 
         readlh.close();
-
-        try {
-            writelh.close();
-            fail("Should fail trying to update metadata");
-        } catch (BKException.BKMetadataVersionException e) {
-            // correct behaviour
-        }
+        writelh.close();
     }
 
     /**