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 2012/05/30 17:13:11 UTC

svn commit: r1344301 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java

Author: ivank
Date: Wed May 30 15:13:11 2012
New Revision: 1344301

URL: http://svn.apache.org/viewvc?rev=1344301&view=rev
Log:
BOOKKEEPER-273: LedgerHandle.deleteLedger() should be idempotent (Matteo Merli via ivank)

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

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1344301&r1=1344300&r2=1344301&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed May 30 15:13:11 2012
@@ -118,6 +118,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-258: CompactionTest failed (ivank via sijie)
 
+        BOOKKEEPER-273: LedgerHandle.deleteLedger() should be idempotent (Matteo Merli via ivank)
+
       hedwig-client/
 
         BOOKKEEPER-217: NPE in hedwig client when enable DEBUG (sijie via ivank)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java?rev=1344301&r1=1344300&r2=1344301&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java Wed May 30 15:13:11 2012
@@ -520,6 +520,7 @@ public class BookKeeper {
      * @param lId
      *            ledgerId
      * @throws InterruptedException
+     * @throws BKException.BKNoSuchLedgerExistsException if the ledger doesn't exist
      * @throws BKException
      */
     public void deleteLedger(long lId) throws InterruptedException, BKException {
@@ -529,7 +530,10 @@ public class BookKeeper {
         asyncDeleteLedger(lId, new SyncDeleteCallback(), counter);
         // Wait
         counter.block(0);
-        if (counter.getrc() != KeeperException.Code.OK.intValue()) {
+        if (counter.getrc() == KeeperException.Code.NONODE.intValue()) {
+            LOG.warn("Ledger node does not exist in ZooKeeper: ledgerId={}", lId);
+            throw BKException.create(Code.NoSuchLedgerExistsException);
+        } else if (counter.getrc() != KeeperException.Code.OK.intValue()) {
             LOG.error("ZooKeeper error deleting ledger node: " + counter.getrc());
             throw BKException.create(Code.ZKException);
         }