You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2017/04/11 18:19:28 UTC

bookkeeper git commit: BOOKKEEPER-1022: Make BookKeeperAdmin implement AutoCloseable

Repository: bookkeeper
Updated Branches:
  refs/heads/master 0f155f38b -> 12bb13cdb


BOOKKEEPER-1022: Make BookKeeperAdmin implement AutoCloseable

Author: eolivelli <eo...@apache.org>

Reviewers: Robert (Bobby) Evans <None>, Sijie Guo <si...@apache.org>, Matteo Merli <mm...@apache.org>

Closes #128 from eolivelli/BOOKKEEPER-1022-bkadmin-autocloseable


Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/12bb13cd
Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/12bb13cd
Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/12bb13cd

Branch: refs/heads/master
Commit: 12bb13cdb1feca0fa6739f8e6287c326fb5fdb94
Parents: 0f155f3
Author: eolivelli <eo...@apache.org>
Authored: Tue Apr 11 11:19:22 2017 -0700
Committer: Sijie Guo <si...@apache.org>
Committed: Tue Apr 11 11:19:22 2017 -0700

----------------------------------------------------------------------
 .../bookkeeper/client/BookKeeperAdmin.java      |   3 +-
 .../bookkeeper/client/BookKeeperCloseTest.java  | 103 ++++++++++---------
 2 files changed, 54 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/12bb13cd/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
index d4d8d1f..e7e9cf4 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Admin client for BookKeeper clusters
  */
-public class BookKeeperAdmin {
+public class BookKeeperAdmin implements AutoCloseable {
     private final static Logger LOG = LoggerFactory.getLogger(BookKeeperAdmin.class);
     // ZK client instance
     private ZooKeeper zk;
@@ -175,6 +175,7 @@ public class BookKeeperAdmin {
      *             if there is an error shutting down the clients that this
      *             class uses.
      */
+    @Override
     public void close() throws InterruptedException, BKException {
         if (ownsBK) {
             bkc.close();

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/12bb13cd/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookKeeperCloseTest.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookKeeperCloseTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookKeeperCloseTest.java
index 13ccfe5..d781d5d 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookKeeperCloseTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookKeeperCloseTest.java
@@ -467,60 +467,61 @@ public class BookKeeperCloseTest extends BookKeeperClusterTestCase {
     @Test(timeout = 60000)
     public void testBookKeeperAdmin() throws Exception {
         BookKeeper bk = new BookKeeper(baseClientConf, zkc);
-        BookKeeperAdmin bkadmin = new BookKeeperAdmin(bk);
-
-        LOG.info("Create ledger and add entries to it");
-        LedgerHandle lh1 = createLedgerWithEntries(bk, 100);
-        LedgerHandle lh2 = createLedgerWithEntries(bk, 100);
-        LedgerHandle lh3 = createLedgerWithEntries(bk, 100);
-        lh3.close();
-
-        BookieSocketAddress bookieToKill = getBookie(0);
-        killBookie(bookieToKill);
-        startNewBookie();
-        BookieSocketAddress newBookie = getBookie(2);
-
-        CheckerCb checkercb = new CheckerCb();
-        LedgerChecker lc = new LedgerChecker(bk);
-        lc.checkLedger(lh3, checkercb);
-        assertEquals("Should have completed",
-                     checkercb.getRc(30, TimeUnit.SECONDS), BKException.Code.OK);
-        assertEquals("Should have a missing fragment",
-                     1, checkercb.getResult(30, TimeUnit.SECONDS).size());
-
-        // make sure a bookie in each quorum is slow
-        restartBookieSlow();
-        restartBookieSlow();
-
-        bk.close();
-
-        try {
-            bkadmin.openLedger(lh1.getId());
-            fail("Shouldn't be able to open with a closed client");
-        } catch (BKException.BKClientClosedException cce) {
-            // correct behaviour
-        }
+        try (BookKeeperAdmin bkadmin = new BookKeeperAdmin(bk);) {
+
+            LOG.info("Create ledger and add entries to it");
+            LedgerHandle lh1 = createLedgerWithEntries(bk, 100);
+            LedgerHandle lh2 = createLedgerWithEntries(bk, 100);
+            LedgerHandle lh3 = createLedgerWithEntries(bk, 100);
+            lh3.close();
+
+            BookieSocketAddress bookieToKill = getBookie(0);
+            killBookie(bookieToKill);
+            startNewBookie();
+            BookieSocketAddress newBookie = getBookie(2);
+
+            CheckerCb checkercb = new CheckerCb();
+            LedgerChecker lc = new LedgerChecker(bk);
+            lc.checkLedger(lh3, checkercb);
+            assertEquals("Should have completed",
+                         checkercb.getRc(30, TimeUnit.SECONDS), BKException.Code.OK);
+            assertEquals("Should have a missing fragment",
+                         1, checkercb.getResult(30, TimeUnit.SECONDS).size());
+
+            // make sure a bookie in each quorum is slow
+            restartBookieSlow();
+            restartBookieSlow();
+
+            bk.close();
+
+            try {
+                bkadmin.openLedger(lh1.getId());
+                fail("Shouldn't be able to open with a closed client");
+            } catch (BKException.BKClientClosedException cce) {
+                // correct behaviour
+            }
 
-        try {
-            bkadmin.openLedgerNoRecovery(lh1.getId());
-            fail("Shouldn't be able to open with a closed client");
-        } catch (BKException.BKClientClosedException cce) {
-            // correct behaviour
-        }
+            try {
+                bkadmin.openLedgerNoRecovery(lh1.getId());
+                fail("Shouldn't be able to open with a closed client");
+            } catch (BKException.BKClientClosedException cce) {
+                // correct behaviour
+            }
 
-        try {
-            bkadmin.recoverBookieData(bookieToKill, newBookie);
-            fail("Shouldn't be able to recover with a closed client");
-        } catch (BKException.BKClientClosedException cce) {
-            // correct behaviour
-        }
+            try {
+                bkadmin.recoverBookieData(bookieToKill, newBookie);
+                fail("Shouldn't be able to recover with a closed client");
+            } catch (BKException.BKClientClosedException cce) {
+                // correct behaviour
+            }
 
-        try {
-            bkadmin.replicateLedgerFragment(lh3,
-                    checkercb.getResult(10, TimeUnit.SECONDS).iterator().next(), newBookie);
-            fail("Shouldn't be able to replicate with a closed client");
-        } catch (BKException.BKClientClosedException cce) {
-            // correct behaviour
+            try {
+                bkadmin.replicateLedgerFragment(lh3,
+                        checkercb.getResult(10, TimeUnit.SECONDS).iterator().next(), newBookie);
+                fail("Shouldn't be able to replicate with a closed client");
+            } catch (BKException.BKClientClosedException cce) {
+                // correct behaviour
+            }
         }
     }