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 2018/01/30 20:10:24 UTC

[bookkeeper] branch master updated: Lombok doesn't work with groovy

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new a7fcf36  Lombok doesn't work with groovy
a7fcf36 is described below

commit a7fcf36ccf7485e8d169776950102c8a31a513f8
Author: Ivan Kelly <iv...@apache.org>
AuthorDate: Tue Jan 30 12:10:17 2018 -0800

    Lombok doesn't work with groovy
    
    So the Cleanup annotation does nothing. I've changed it in the BC
    test to a traditional try {} finally {} since groovy doesn't do
    try-with-resources either, and its equivalent doesn't do multiple
    objects.
    
    Master Issue: #903
    
    Author: Ivan Kelly <iv...@apache.org>
    
    Reviewers: Enrico Olivelli <eo...@gmail.com>, Sijie Guo <si...@apache.org>
    
    This closes #1084 from ivankelly/lombok-dont-work
---
 .../TestCompatHierarchicalLedgerManager.groovy     |  65 ++++----
 .../TestCompatUpgradeWithHostnameBookieId.groovy   | 106 +++++++------
 ...mpatUpgradeOldServerInClusterWithCookies.groovy |  68 ++++----
 .../TestCompatRecoveryNoPassword.groovy            | 176 +++++++++++----------
 .../backwardcompat/TestCompatUpgradeDirect.groovy  | 120 +++++++-------
 .../tests/backwardcompat/TestCompatUpgrade.groovy  |  81 +++++-----
 6 files changed, 325 insertions(+), 291 deletions(-)

diff --git a/tests/backward-compat/hierarchical-ledger-manager/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatHierarchicalLedgerManager.groovy b/tests/backward-compat/hierarchical-ledger-manager/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatHierarchicalLedgerManager.groovy
index aa9a401..f376144 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatHierarchicalLedgerManager.groovy
+++ b/tests/backward-compat/hierarchical-ledger-manager/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatHierarchicalLedgerManager.groovy
@@ -19,8 +19,6 @@ package org.apache.bookkeeper.tests.backwardcompat
 
 import com.github.dockerjava.api.DockerClient
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.tests.BookKeeperClusterUtils
 import org.apache.bookkeeper.tests.MavenClassLoader
 
@@ -60,35 +58,42 @@ class TestCompatHierarchicalLedgerManager {
         Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, "4.2.0"))
 
         String zookeeper = BookKeeperClusterUtils.zookeeperConnectString(docker)
-        int numEntries = 10
-        @Cleanup def v420CL = MavenClassLoader.forBookKeeperVersion("4.2.0")
-        @Cleanup def v420BK = v420CL.newBookKeeper(zookeeper)
-
-        def ledger0 = v420BK.createLedger(3, 2, v420CL.digestType("CRC32"), PASSWD)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry(("foobar" + i).getBytes())
-        }
-        ledger0.close()
-
-        Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
-
-        BookKeeperClusterUtils.updateAllBookieConf(docker, currentVersion,
-                                                   "ledgerManagerFactoryClass",
-                                                   "org.apache.bookkeeper.meta.HierarchicalLedgerManagerFactory")
-        Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
-
-        @Cleanup def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
-        @Cleanup def currentBK = currentCL.newBookKeeper(zookeeper)
 
-        def ledger1 = currentBK.openLedger(ledger0.getId(), currentCL.digestType("CRC32"), PASSWD)
-        Assert.assertEquals(numEntries, ledger1.getLastAddConfirmed() + 1 /* counts from 0 */)
-        def entries = ledger1.readEntries(0, ledger1.getLastAddConfirmed())
-        int j = 0
-        while (entries.hasMoreElements()) {
-            def e = entries.nextElement()
-            Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
-            j++
+        def v420CL = MavenClassLoader.forBookKeeperVersion("4.2.0")
+        def v420BK = v420CL.newBookKeeper(zookeeper)
+        def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
+        def currentBK = currentCL.newBookKeeper(zookeeper)
+        try {
+            int numEntries = 10
+
+            def ledger0 = v420BK.createLedger(3, 2, v420CL.digestType("CRC32"), PASSWD)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry(("foobar" + i).getBytes())
+            }
+            ledger0.close()
+
+            Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
+
+            BookKeeperClusterUtils.updateAllBookieConf(docker, currentVersion,
+                                                       "ledgerManagerFactoryClass",
+                                                       "org.apache.bookkeeper.meta.HierarchicalLedgerManagerFactory")
+            Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
+
+            def ledger1 = currentBK.openLedger(ledger0.getId(), currentCL.digestType("CRC32"), PASSWD)
+            Assert.assertEquals(numEntries, ledger1.getLastAddConfirmed() + 1 /* counts from 0 */)
+            def entries = ledger1.readEntries(0, ledger1.getLastAddConfirmed())
+            int j = 0
+            while (entries.hasMoreElements()) {
+                def e = entries.nextElement()
+                Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
+                j++
+            }
+            ledger1.close()
+        } finally {
+            currentBK.close()
+            currentCL.close()
+            v420BK.close()
+            v420CL.close()
         }
-        ledger1.close()
     }
 }
diff --git a/tests/backward-compat/hostname-bookieid/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeWithHostnameBookieId.groovy b/tests/backward-compat/hostname-bookieid/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeWithHostnameBookieId.groovy
index c86e7d0..134d057 100644
--- a/tests/backward-compat/hostname-bookieid/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeWithHostnameBookieId.groovy
+++ b/tests/backward-compat/hostname-bookieid/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeWithHostnameBookieId.groovy
@@ -19,8 +19,6 @@ package org.apache.bookkeeper.tests.backwardcompat
 
 import com.github.dockerjava.api.DockerClient
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.tests.BookKeeperClusterUtils
 import org.apache.bookkeeper.tests.MavenClassLoader
 
@@ -80,52 +78,64 @@ class TestCompatUpgradeWithHostnameBookieId {
 
         Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, "4.1.0"))
 
-        // Write a ledger with v4.1.0 client
-        @Cleanup def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
-        @Cleanup def v410BK = v410CL.newBookKeeper(zookeeper)
-
-        def ledger410 = v410BK.createLedger(3, 2, v410CL.digestType("CRC32"), PASSWD)
-        writeEntries(ledger410, numEntries)
-        ledger410.close()
-
-        // Write a ledger with v4.2.0 client
-        @Cleanup def v420CL = MavenClassLoader.forBookKeeperVersion("4.2.0")
-        @Cleanup def v420BK = v420CL.newBookKeeper(zookeeper)
-
-        def ledger420 = v420BK.createLedger(3, 2, v420CL.digestType("CRC32"), PASSWD)
-        writeEntries(ledger420, numEntries)
-        ledger420.close()
-
-        // Stop bookies, change config to use hostname as id, restart with latest version
-        Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
-        BookKeeperClusterUtils.updateAllBookieConf(docker, currentVersion, "useHostNameAsBookieID", "true")
-        Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
-
-        // Ensure we can read ledger with v4.1.0 client
-        def ledger410r = v410BK.openLedger(ledger410.getId(), v410CL.digestType("CRC32"), PASSWD)
-        assertHasEntries(ledger410r, numEntries)
-        ledger410r.close()
-
-        // Ensure we can read ledger with v4.2.0 client
-        def ledger420r = v420BK.openLedger(ledger420.getId(), v420CL.digestType("CRC32"), PASSWD)
-        assertHasEntries(ledger420r, numEntries)
-        ledger420r.close()
-
-        // Ensure we can write and read new ledgers with all client versions
-        @Cleanup def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
-        @Cleanup def currentBK = currentCL.newBookKeeper(zookeeper)
-        oldClientVersions.each{
-            LOG.info("Testing ledger creation for version {}", it)
-            @Cleanup def oldCL = MavenClassLoader.forBookKeeperVersion(it)
-            @Cleanup def oldBK = oldCL.newBookKeeper(zookeeper)
-
-            def ledger0 = oldBK.createLedger(3, 2, oldCL.digestType("CRC32"), PASSWD)
-            writeEntries(ledger0, numEntries)
-            ledger0.close()
-
-            def ledger1 = currentBK.openLedger(ledger0.getId(), currentCL.digestType("CRC32"), PASSWD)
-            assertHasEntries(ledger1, numEntries)
-            ledger1.close()
+        def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
+        def v410BK = v410CL.newBookKeeper(zookeeper)
+        def v420CL = MavenClassLoader.forBookKeeperVersion("4.2.0")
+        def v420BK = v420CL.newBookKeeper(zookeeper)
+        def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
+        def currentBK = currentCL.newBookKeeper(zookeeper)
+
+        try {
+            // Write a ledger with v4.1.0 client
+            def ledger410 = v410BK.createLedger(3, 2, v410CL.digestType("CRC32"), PASSWD)
+            writeEntries(ledger410, numEntries)
+            ledger410.close()
+
+            // Write a ledger with v4.2.0 client
+            def ledger420 = v420BK.createLedger(3, 2, v420CL.digestType("CRC32"), PASSWD)
+            writeEntries(ledger420, numEntries)
+            ledger420.close()
+
+            // Stop bookies, change config to use hostname as id, restart with latest version
+            Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
+            BookKeeperClusterUtils.updateAllBookieConf(docker, currentVersion, "useHostNameAsBookieID", "true")
+            Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
+
+            // Ensure we can read ledger with v4.1.0 client
+            def ledger410r = v410BK.openLedger(ledger410.getId(), v410CL.digestType("CRC32"), PASSWD)
+            assertHasEntries(ledger410r, numEntries)
+            ledger410r.close()
+
+            // Ensure we can read ledger with v4.2.0 client
+            def ledger420r = v420BK.openLedger(ledger420.getId(), v420CL.digestType("CRC32"), PASSWD)
+            assertHasEntries(ledger420r, numEntries)
+            ledger420r.close()
+
+            // Ensure we can write and read new ledgers with all client versions
+            oldClientVersions.each{
+                LOG.info("Testing ledger creation for version {}", it)
+                def oldCL = MavenClassLoader.forBookKeeperVersion(it)
+                def oldBK = oldCL.newBookKeeper(zookeeper)
+                try {
+                    def ledger0 = oldBK.createLedger(3, 2, oldCL.digestType("CRC32"), PASSWD)
+                    writeEntries(ledger0, numEntries)
+                    ledger0.close()
+
+                    def ledger1 = currentBK.openLedger(ledger0.getId(), currentCL.digestType("CRC32"), PASSWD)
+                    assertHasEntries(ledger1, numEntries)
+                    ledger1.close()
+                } finally {
+                    oldBK.close()
+                    oldCL.close()
+                }
+            }
+        } finally {
+            currentBK.close()
+            currentCL.close()
+            v420BK.close()
+            v420CL.close()
+            v410BK.close()
+            v410CL.close()
         }
     }
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeOldServerInClusterWithCookies.groovy b/tests/backward-compat/old-cookie-new-cluster/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeOldServerInClusterWithCookies.groovy
index 2756f70..c2d7263 100644
--- a/tests/backward-compat/old-cookie-new-cluster/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeOldServerInClusterWithCookies.groovy
+++ b/tests/backward-compat/old-cookie-new-cluster/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeOldServerInClusterWithCookies.groovy
@@ -19,8 +19,6 @@ package org.apache.bookkeeper.tests.backwardcompat
 
 import com.github.dockerjava.api.DockerClient
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.tests.BookKeeperClusterUtils
 import org.apache.bookkeeper.tests.MavenClassLoader
 
@@ -51,38 +49,42 @@ class TestCompatUpgradeOldServerInClusterWithCookies {
         int numEntries = 10
 
         Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, "4.1.0"))
-        @Cleanup def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
-        @Cleanup def v410BK = v410CL.newBookKeeper(zookeeper)
-
-        def ledger0 = v410BK.createLedger(3, 2, v410CL.digestType("CRC32"), PASSWD)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry(("foobar" + i).getBytes())
-        }
-        ledger0.close()
-
-        Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
-
-        // format metadata
-        String bookieScript = "/opt/bookkeeper/" + currentVersion + "/bin/bookkeeper"
-        Assert.assertTrue(
-            BookKeeperClusterUtils.runOnAnyBookie(docker, bookieScript,
-                                                  "shell", "metaformat", "-nonInteractive", "-force"))
-
-        // bookies shouldn't come up because the cookie doesn't have instance id
-        Assert.assertFalse(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
-
-        // format bookie
-        BookKeeperClusterUtils.runOnAllBookies(docker, bookieScript,
-                                               "shell", "bookieformat", "-nonInteractive", "-force")
-
-        // bookies should come up
-        Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
-
-        // but data has been lost of course, we formatted everything
+        def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
+        def v410BK = v410CL.newBookKeeper(zookeeper)
         try {
-            v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
-        } catch (Exception e) {
-            // correct behaviour
+            def ledger0 = v410BK.createLedger(3, 2, v410CL.digestType("CRC32"), PASSWD)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry(("foobar" + i).getBytes())
+            }
+            ledger0.close()
+
+            Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
+
+            // format metadata
+            String bookieScript = "/opt/bookkeeper/" + currentVersion + "/bin/bookkeeper"
+            Assert.assertTrue(
+                BookKeeperClusterUtils.runOnAnyBookie(docker, bookieScript,
+                                                      "shell", "metaformat", "-nonInteractive", "-force"))
+
+            // bookies shouldn't come up because the cookie doesn't have instance id
+            Assert.assertFalse(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
+
+            // format bookie
+            BookKeeperClusterUtils.runOnAllBookies(docker, bookieScript,
+                                                   "shell", "bookieformat", "-nonInteractive", "-force")
+
+            // bookies should come up
+            Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
+
+            // but data has been lost of course, we formatted everything
+            try {
+                v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
+            } catch (Exception e) {
+                // correct behaviour
+            }
+        } finally {
+            v410BK.close()
+            v410CL.close()
         }
     }
 }
diff --git a/tests/backward-compat/recovery-no-password/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatRecoveryNoPassword.groovy b/tests/backward-compat/recovery-no-password/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatRecoveryNoPassword.groovy
index 908c178..d24a890 100644
--- a/tests/backward-compat/recovery-no-password/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatRecoveryNoPassword.groovy
+++ b/tests/backward-compat/recovery-no-password/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatRecoveryNoPassword.groovy
@@ -27,8 +27,6 @@ import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicLong
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.client.BKException
 import org.apache.bookkeeper.client.BookKeeper
 import org.apache.bookkeeper.client.BookKeeperAdmin
@@ -158,96 +156,100 @@ class TestCompatRecoveryNoPassword {
         BookKeeperClusterUtils.legacyMetadataFormat(docker)
 
         // Create a 4.1.0 client, will update /ledgers/LAYOUT
-        @Cleanup def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
-        def v410Conf = v410CL.newInstance("org.apache.bookkeeper.conf.ClientConfiguration")
-        v410Conf.setZkServers(zookeeper).setLedgerManagerType("hierarchical")
-        def v410BK = v410CL.newInstance("org.apache.bookkeeper.client.BookKeeper", v410Conf)
-
-        // Start bookies
-        def bookieContainers = new ArrayList<>(DockerUtils.cubeIdsMatching("bookkeeper"))
-        Assert.assertTrue(bookieContainers.size() >= 3)
-        Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
-                docker, bookieContainers.get(0), currentVersion))
-        Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
-                docker, bookieContainers.get(1), currentVersion))
-
-        // recreate bk client so that it reads bookie list
-        v410BK.close()
-        v410BK = v410CL.newBookKeeper(zookeeper)
-
-        // Write a ledger
-        def ledger0 = v410BK.createLedger(2, 2,
-                                          v410CL.digestType("MAC"), passwdCorrect)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry("foobar".getBytes())
-        }
-        ledger0.close()
-        v410BK.close()
-
-        // start a new bookie, and kill one of the initial 2
-        def failedBookieId = new BookieSocketAddress(
-            DockerUtils.getContainerIP(docker, bookieContainers.get(0)), 3181)
-        Assert.assertTrue(BookKeeperClusterUtils.stopBookie(
-                docker, bookieContainers.get(0)))
-        Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
-                docker, bookieContainers.get(2), currentVersion))
-
-        def bkCur = new BookKeeper(zookeeper)
-
-        LedgerHandle lh = bkCur.openLedgerNoRecovery(
-            ledger0.getId(), BookKeeper.DigestType.MAC, passwdCorrect)
-        Assert.assertFalse("Should be entries missing",
-                           verifyFullyReplicated(bkCur, lh, numEntries))
-        lh.close()
-
-        ClientConfiguration adminConf = new ClientConfiguration()
-        adminConf.setZkServers(zookeeper)
-        adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.MAC)
-        adminConf.setBookieRecoveryPasswd(passwdBad)
-
-        def bka = new BookKeeperAdmin(adminConf)
+        def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
         try {
-            bka.recoverBookieData(failedBookieId)
-            Assert.fail("Shouldn't be able to recover with wrong password")
-        } catch (BKException bke) {
-            // correct behaviour
-        } finally {
-            bka.close();
-        }
-
-        adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.CRC32)
-        adminConf.setBookieRecoveryPasswd(passwdCorrect)
-
-        bka = new BookKeeperAdmin(adminConf)
-        try {
-            bka.recoverBookieData(failedBookieId)
-            Assert.fail("Shouldn't be able to recover with wrong digest")
-        } catch (BKException bke) {
-            // correct behaviour
-        } finally {
-            bka.close();
-        }
+            def v410Conf = v410CL.newInstance("org.apache.bookkeeper.conf.ClientConfiguration")
+            v410Conf.setZkServers(zookeeper).setLedgerManagerType("hierarchical")
+            def v410BK = v410CL.newInstance("org.apache.bookkeeper.client.BookKeeper", v410Conf)
+
+            // Start bookies
+            def bookieContainers = new ArrayList<>(DockerUtils.cubeIdsMatching("bookkeeper"))
+            Assert.assertTrue(bookieContainers.size() >= 3)
+            Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
+                    docker, bookieContainers.get(0), currentVersion))
+            Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
+                    docker, bookieContainers.get(1), currentVersion))
+
+            // recreate bk client so that it reads bookie list
+            v410BK.close()
+            v410BK = v410CL.newBookKeeper(zookeeper)
+
+            // Write a ledger
+            def ledger0 = v410BK.createLedger(2, 2,
+                                              v410CL.digestType("MAC"), passwdCorrect)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry("foobar".getBytes())
+            }
+            ledger0.close()
+            v410BK.close()
+
+            // start a new bookie, and kill one of the initial 2
+            def failedBookieId = new BookieSocketAddress(
+                DockerUtils.getContainerIP(docker, bookieContainers.get(0)), 3181)
+            Assert.assertTrue(BookKeeperClusterUtils.stopBookie(
+                    docker, bookieContainers.get(0)))
+            Assert.assertTrue(BookKeeperClusterUtils.startBookieWithVersion(
+                    docker, bookieContainers.get(2), currentVersion))
+
+            def bkCur = new BookKeeper(zookeeper)
+            LedgerHandle lh = bkCur.openLedgerNoRecovery(
+                ledger0.getId(), BookKeeper.DigestType.MAC, passwdCorrect)
+            Assert.assertFalse("Should be entries missing",
+                               verifyFullyReplicated(bkCur, lh, numEntries))
+            lh.close()
+
+            ClientConfiguration adminConf = new ClientConfiguration()
+            adminConf.setZkServers(zookeeper)
+            adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.MAC)
+            adminConf.setBookieRecoveryPasswd(passwdBad)
+
+            def bka = new BookKeeperAdmin(adminConf)
+            try {
+                bka.recoverBookieData(failedBookieId)
+                Assert.fail("Shouldn't be able to recover with wrong password")
+            } catch (BKException bke) {
+                // correct behaviour
+            } finally {
+                bka.close();
+            }
 
-        // Check that entries are still missing
-        lh = bkCur.openLedgerNoRecovery(ledger0.getId(),
-                                        BookKeeper.DigestType.MAC, passwdCorrect)
-        Assert.assertFalse("Should be entries missing",
-                           verifyFullyReplicated(bkCur, lh, numEntries))
-        lh.close()
+            adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.CRC32)
+            adminConf.setBookieRecoveryPasswd(passwdCorrect)
+
+            bka = new BookKeeperAdmin(adminConf)
+            try {
+                bka.recoverBookieData(failedBookieId)
+                Assert.fail("Shouldn't be able to recover with wrong digest")
+            } catch (BKException bke) {
+                // correct behaviour
+            } finally {
+                bka.close();
+            }
 
+            // Check that entries are still missing
+            lh = bkCur.openLedgerNoRecovery(ledger0.getId(),
+                                            BookKeeper.DigestType.MAC, passwdCorrect)
+            Assert.assertFalse("Should be entries missing",
+                               verifyFullyReplicated(bkCur, lh, numEntries))
+            lh.close()
 
-        // Set correct password and mac, recovery will work
-        adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.MAC)
-        adminConf.setBookieRecoveryPasswd(passwdCorrect)
 
-        bka = new BookKeeperAdmin(adminConf)
-        bka.recoverBookieData(failedBookieId)
-        bka.close()
+            // Set correct password and mac, recovery will work
+            adminConf.setBookieRecoveryDigestType(BookKeeper.DigestType.MAC)
+            adminConf.setBookieRecoveryPasswd(passwdCorrect)
 
-        lh = bkCur.openLedgerNoRecovery(ledger0.getId(),
-                                        BookKeeper.DigestType.MAC, passwdCorrect)
-        Assert.assertTrue("Should have recovered everything",
-                          verifyFullyReplicated(bkCur, lh, numEntries))
-        lh.close()
+            bka = new BookKeeperAdmin(adminConf)
+            bka.recoverBookieData(failedBookieId)
+            bka.close()
+
+            lh = bkCur.openLedgerNoRecovery(ledger0.getId(),
+                                            BookKeeper.DigestType.MAC, passwdCorrect)
+            Assert.assertTrue("Should have recovered everything",
+                              verifyFullyReplicated(bkCur, lh, numEntries))
+            lh.close()
+            bkCur.close()
+        } finally {
+            v410CL.close()
+        }
     }
 }
diff --git a/tests/backward-compat/upgrade-direct/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeDirect.groovy b/tests/backward-compat/upgrade-direct/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeDirect.groovy
index 1a81326..2fe675e 100644
--- a/tests/backward-compat/upgrade-direct/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeDirect.groovy
+++ b/tests/backward-compat/upgrade-direct/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgradeDirect.groovy
@@ -19,8 +19,6 @@ package org.apache.bookkeeper.tests.backwardcompat
 
 import com.github.dockerjava.api.DockerClient
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.tests.BookKeeperClusterUtils
 import org.apache.bookkeeper.tests.MavenClassLoader
 
@@ -52,43 +50,49 @@ class TestCompatUpgradeDirect {
         int numEntries = 10
 
         Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, "4.1.0"))
-        @Cleanup def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
-        @Cleanup def v410BK = v410CL.newBookKeeper(zookeeper)
-
-        def ledger0 = v410BK.createLedger(3, 2,
-                                          v410CL.digestType("CRC32"),
-                                          PASSWD)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry(("foobar" + i).getBytes())
-        }
-        ledger0.close()
-
-        // Current client shouldn't be able to write to 4.1.0 server
-        @Cleanup def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
-        @Cleanup def currentBK = currentCL.newBookKeeper(zookeeper)
-        def ledger1 = currentBK.createLedger(3, 2, currentCL.digestType("CRC32"), PASSWD)
+        def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
+        def v410BK = v410CL.newBookKeeper(zookeeper)
+        def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
+        def currentBK = currentCL.newBookKeeper(zookeeper)
         try {
-            ledger1.addEntry("foobar".getBytes())
-
-            Assert.fail("Shouldn't have been able to write")
-        } catch (Exception e) {
-            // correct behaviour
+            def ledger0 = v410BK.createLedger(3, 2,
+                                              v410CL.digestType("CRC32"),
+                                              PASSWD)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry(("foobar" + i).getBytes())
+            }
+            ledger0.close()
+
+            // Current client shouldn't be able to write to 4.1.0 server
+            def ledger1 = currentBK.createLedger(3, 2, currentCL.digestType("CRC32"), PASSWD)
+            try {
+                ledger1.addEntry("foobar".getBytes())
+
+                Assert.fail("Shouldn't have been able to write")
+            } catch (Exception e) {
+                // correct behaviour
+            }
+
+            Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
+            Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
+
+            // check that old client can read its old ledgers on new server
+            def ledger2 = v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
+            Assert.assertEquals(numEntries, ledger2.getLastAddConfirmed() + 1 /* counts from 0 */)
+            def entries = ledger2.readEntries(0, ledger2.getLastAddConfirmed())
+            int j = 0
+            while (entries.hasMoreElements()) {
+                def e = entries.nextElement()
+                Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
+                j++
+            }
+            ledger2.close()
+        } finally {
+            currentBK.close()
+            currentCL.close()
+            v410BK.close()
+            v410CL.close()
         }
-
-        Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
-        Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, currentVersion))
-
-        // check that old client can read its old ledgers on new server
-        def ledger2 = v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
-        Assert.assertEquals(numEntries, ledger2.getLastAddConfirmed() + 1 /* counts from 0 */)
-        def entries = ledger2.readEntries(0, ledger2.getLastAddConfirmed())
-        int j = 0
-        while (entries.hasMoreElements()) {
-            def e = entries.nextElement()
-            Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
-            j++
-        }
-        ledger2.close()
     }
 
     @Test
@@ -96,26 +100,32 @@ class TestCompatUpgradeDirect {
         String currentVersion = System.getProperty("currentVersion")
         String zookeeper = BookKeeperClusterUtils.zookeeperConnectString(docker)
 
-        @Cleanup def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
-        @Cleanup def currentBK = currentCL.newBookKeeper(zookeeper)
-
-        def numEntries = 5
-        def ledger0 = currentBK.createLedger(3, 2,
-                                             currentCL.digestType("CRC32"),
-                                             PASSWD)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry(("foobar" + i).getBytes())
-        }
-        ledger0.close()
-
-        @Cleanup def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
-        @Cleanup def v410BK = v410CL.newBookKeeper(zookeeper)
+        def currentCL = MavenClassLoader.forBookKeeperVersion(currentVersion)
+        def currentBK = currentCL.newBookKeeper(zookeeper)
+        def v410CL = MavenClassLoader.forBookKeeperVersion("4.1.0")
+        def v410BK = v410CL.newBookKeeper(zookeeper)
 
         try {
-            def ledger1 = v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
-            Assert.fail("Shouldn't have been able to open")
-        } catch (Exception e) {
-            // correct behaviour
+            def numEntries = 5
+            def ledger0 = currentBK.createLedger(3, 2,
+                                                 currentCL.digestType("CRC32"),
+                                                 PASSWD)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry(("foobar" + i).getBytes())
+            }
+            ledger0.close()
+
+            try {
+                def ledger1 = v410BK.openLedger(ledger0.getId(), v410CL.digestType("CRC32"), PASSWD)
+                Assert.fail("Shouldn't have been able to open")
+            } catch (Exception e) {
+                // correct behaviour
+            }
+        } finally {
+            v410BK.close()
+            v410CL.close()
+            currentBK.close()
+            currentCL.close()
         }
     }
 }
diff --git a/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy b/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
index 76b02d8..7933c2f 100644
--- a/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
+++ b/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
@@ -19,8 +19,6 @@ package org.apache.bookkeeper.tests.backwardcompat
 
 import com.github.dockerjava.api.DockerClient
 
-import lombok.Cleanup
-
 import org.apache.bookkeeper.tests.BookKeeperClusterUtils
 import org.apache.bookkeeper.tests.MavenClassLoader
 
@@ -49,48 +47,55 @@ class TestCompatUpgrade {
         String zookeeper = BookKeeperClusterUtils.zookeeperConnectString(docker)
         LOG.info("Upgrading from {} to {}", currentlyRunning, upgradeTo)
         int numEntries = 10
-        @Cleanup def currentRunningCL = MavenClassLoader.forBookKeeperVersion(currentlyRunning)
-        @Cleanup def currentRunningBK = currentRunningCL.newBookKeeper(zookeeper)
-
-        def ledger0 = currentRunningBK.createLedger(3, 2,
-                                                    currentRunningCL.digestType("CRC32"),
-                                                    PASSWD)
-        for (int i = 0; i < numEntries; i++) {
-            ledger0.addEntry(("foobar" + i).getBytes())
-        }
-        ledger0.close()
+        def currentRunningCL = MavenClassLoader.forBookKeeperVersion(currentlyRunning)
+        def currentRunningBK = currentRunningCL.newBookKeeper(zookeeper)
+        def upgradedCL = MavenClassLoader.forBookKeeperVersion(upgradeTo)
+        def upgradedBK = upgradedCL.newBookKeeper(zookeeper)
 
-        // Check whether current client can write to old server
-        @Cleanup def upgradedCL = MavenClassLoader.forBookKeeperVersion(upgradeTo)
-        @Cleanup def upgradedBK = upgradedCL.newBookKeeper(zookeeper)
-        def ledger1 = upgradedBK.createLedger(3, 2, upgradedCL.digestType("CRC32"), PASSWD)
         try {
-            ledger1.addEntry("foobar".getBytes())
-
-            if (clientCompatBroken) {
-                Assert.fail("Shouldn't have been able to write")
+            def ledger0 = currentRunningBK.createLedger(3, 2,
+                                                        currentRunningCL.digestType("CRC32"),
+                                                        PASSWD)
+            for (int i = 0; i < numEntries; i++) {
+                ledger0.addEntry(("foobar" + i).getBytes())
             }
-        } catch (Exception e) {
-            if (!clientCompatBroken) {
-                throw e;
+            ledger0.close()
+
+            // Check whether current client can write to old server
+            def ledger1 = upgradedBK.createLedger(3, 2, upgradedCL.digestType("CRC32"), PASSWD)
+            try {
+                ledger1.addEntry("foobar".getBytes())
+
+                if (clientCompatBroken) {
+                    Assert.fail("Shouldn't have been able to write")
+                }
+            } catch (Exception e) {
+                if (!clientCompatBroken) {
+                    throw e;
+                }
             }
-        }
 
-        Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
-        Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, upgradeTo))
-
-        // check that old client can read its old ledgers on new server
-        def ledger2 = currentRunningBK.openLedger(ledger0.getId(), currentRunningCL.digestType("CRC32"),
-                                                  PASSWD)
-        Assert.assertEquals(numEntries, ledger2.getLastAddConfirmed() + 1 /* counts from 0 */)
-        def entries = ledger2.readEntries(0, ledger2.getLastAddConfirmed())
-        int j = 0
-        while (entries.hasMoreElements()) {
-            def e = entries.nextElement()
-            Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
-            j++
+            Assert.assertTrue(BookKeeperClusterUtils.stopAllBookies(docker))
+            Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, upgradeTo))
+
+            // check that old client can read its old ledgers on new server
+            def ledger2 = currentRunningBK.openLedger(ledger0.getId(), currentRunningCL.digestType("CRC32"),
+                                                      PASSWD)
+            Assert.assertEquals(numEntries, ledger2.getLastAddConfirmed() + 1 /* counts from 0 */)
+            def entries = ledger2.readEntries(0, ledger2.getLastAddConfirmed())
+            int j = 0
+            while (entries.hasMoreElements()) {
+                def e = entries.nextElement()
+                Assert.assertEquals(new String(e.getEntry()), "foobar"+ j)
+                j++
+            }
+            ledger2.close()
+        } finally {
+            upgradedBK.close()
+            upgradedCL.close()
+            currentRunningBK.close()
+            currentRunningCL.close()
         }
-        ledger2.close()
     }
 
     @Test

-- 
To stop receiving notification emails like this one, please contact
sijie@apache.org.