From d04f2ac0566bc80633bf27cbec3734fbeb3c634d Mon Sep 17 00:00:00 2001 From: Sun Dapeng Date: Fri, 10 Jan 2020 09:23:05 +0800 Subject: [PATCH 1/3] Create ledgersRootPath recursively for 'bookkeeper shell metaformat' --- .../org/apache/bookkeeper/discover/ZKRegistrationManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/ZKRegistrationManager.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/ZKRegistrationManager.java index a2a3e7c62a8..e9bd7849807 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/ZKRegistrationManager.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/ZKRegistrationManager.java @@ -400,7 +400,8 @@ public boolean prepareFormat() throws Exception { boolean availableNodeExists = null != zk.exists(bookieRegistrationPath, false); // Create ledgers root node if not exists if (!ledgerRootExists) { - zk.create(ledgersRootPath, "".getBytes(Charsets.UTF_8), zkAcls, CreateMode.PERSISTENT); + ZkUtils.createFullPathOptimistic(zk, ledgersRootPath, "".getBytes(Charsets.UTF_8), zkAcls, + CreateMode.PERSISTENT); } // create available bookies node if not exists if (!availableNodeExists) { From e3cc7ea92d6ae00bd7314e9e1c8593290521fe9b Mon Sep 17 00:00:00 2001 From: Sun Dapeng Date: Mon, 13 Jan 2020 10:10:07 +0800 Subject: [PATCH 2/3] Junit of zkRegistrationManager.prepareFormat() --- .../discover/TestZkRegistrationManager.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java index ff1b7ea555b..01a9120874e 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java @@ -18,8 +18,51 @@ */ package org.apache.bookkeeper.discover; +import org.apache.bookkeeper.conf.ServerConfiguration; +import org.apache.bookkeeper.conf.TestBKConfiguration; +import org.apache.bookkeeper.test.ZooKeeperCluster; +import org.apache.bookkeeper.test.ZooKeeperUtil; +import org.apache.zookeeper.ZooKeeper; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + + /** * Unit test of {@link RegistrationManager}. */ public class TestZkRegistrationManager { + + private ZooKeeperCluster localZkServer; + private ZooKeeper zkc; + + @Before + public void setup() throws Exception { + localZkServer = new ZooKeeperUtil(); + localZkServer.startCluster(); + } + + @After + public void teardown() throws Exception { + localZkServer.stopCluster(); + } + + @Test + public void testPrepareFormat () throws Exception{ + try { + ServerConfiguration conf = TestBKConfiguration.newServerConfiguration(); + conf.setZkLedgersRootPath("/test/ledgers"); + zkc = localZkServer.getZooKeeperClient(); + ZKRegistrationManager zkRegistrationManager = new ZKRegistrationManager(conf, zkc,() -> {} ); + zkRegistrationManager.prepareFormat(); + assertTrue(zkc.exists("/test/ledgers",false) != null); + } finally { + if (zkc != null) { + zkc.close(); + } + } + } + } From 27e61e9bfbeb4b42ea492836ba24392ecb2545bc Mon Sep 17 00:00:00 2001 From: Sun Dapeng Date: Sun, 19 Jan 2020 13:44:45 +0800 Subject: [PATCH 3/3] In TestZkRegistrationManager, Use metadataServiceUri instead of zkLedgersRootPath --- .../apache/bookkeeper/discover/TestZkRegistrationManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java index 01a9120874e..8949e12bb08 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/TestZkRegistrationManager.java @@ -53,7 +53,7 @@ public void teardown() throws Exception { public void testPrepareFormat () throws Exception{ try { ServerConfiguration conf = TestBKConfiguration.newServerConfiguration(); - conf.setZkLedgersRootPath("/test/ledgers"); + conf.setMetadataServiceUri("zk+hierarchical://localhost:2181/test/ledgers"); zkc = localZkServer.getZooKeeperClient(); ZKRegistrationManager zkRegistrationManager = new ZKRegistrationManager(conf, zkc,() -> {} ); zkRegistrationManager.prepareFormat();