Looking at the code I think that the short answer is "yes" https://github.com/apache/bookkeeper/blob/2f996dcf0159f945f7ec97ce7402e5d293009444/bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/ZKRegistrationManager.java#L403
we are using ZooKeeper#create, that does not recursively create all the hierarchy. I feel this is due to the fact that usually a BooKeeper cluster stores metadata in /ledgers, as a direct child of '/' IIRC in some product of my company we had the same problem and we simply pre-created the znode structure before '/ledgers' Maybe you can give it a try. I also think it is worth to submit a simply patch in order to change the behaviour and create the full hierarchy (the change is really simple) Hope that helprs Enrico Il giorno gio 10 ott 2019 alle ore 10:28 <[email protected]> ha scritto: > Does that need to be created manually? > > > > *From:* Enrico Olivelli <[email protected]> > *Sent:* Thursday, October 10, 2019 12:25 PM > *To:* user > *Cc:* Flavio Junqueira > *Subject:* Re: Error starting bookie using Apache Bookkeeper 4.9.1 > > > > [EXTERNAL EMAIL] > > I see your base path is /pravega/pravega/bookkeeper/ledgers > > > > Maybe the root path does not yet exist, I mean /pravega/pravega/bookkeeper > > > > Enrico > > > > Il giorno gio 10 ott 2019 alle ore 08:20 <[email protected]> ha > scritto: > > Thanks for your response, Enrico. > > > > I tried using both `metaformat` and `initnewcluster` shell commands to > initialize zookeeper before starting the bookie. > > But both failed with similar exceptions…. > > > > Using `bin/bookkeeper shell metaformat -nonInteractive -force` I see … > > “ > > Exception in thread "main" java.util.concurrent.ExecutionException: > KeeperErrorCode = NoNode for /pravega/pravega/bookkeeper/ledgers > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:378) > at > org.apache.bookkeeper.client.BookKeeperAdmin.format(BookKeeperAdmin.java:1150) > at > org.apache.bookkeeper.bookie.BookieShell$MetaFormatCmd.runCmd(BookieShell.java:328) > at > org.apache.bookkeeper.bookie.BookieShell$MyCommand.runCmd(BookieShell.java:277) > at org.apache.bookkeeper.bookie.BookieShell.run(BookieShell.java:3081) > at org.apache.bookkeeper.bookie.BookieShell.main(BookieShell.java:3172) > Caused by: org.apache.zookeeper.KeeperException$NoNodeException: > KeeperErrorCode = NoNode for /pravega/pravega/bookkeeper/ledgers > at > org.apache.zookeeper.KeeperException.create(KeeperException.java:114) > at org.apache.zookeeper.KeeperException.create(KeeperException.java:54) > at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:792) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.access$1901(ZooKeeperClient.java:70) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$9.call(ZooKeeperClient.java:711) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$9.call(ZooKeeperClient.java:705) > at > org.apache.bookkeeper.zookeeper.ZooWorker.syncCallWithRetries(ZooWorker.java:140) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.create(ZooKeeperClient.java:705) > at > org.apache.bookkeeper.discover.ZKRegistrationManager.prepareFormat(ZKRegistrationManager.java:403) > at > org.apache.bookkeeper.client.BookKeeperAdmin.lambda$format$2(BookKeeperAdmin.java:1152) > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:373) > > > > “ > > Using ` bin/bookkeeper shell initnewcluster` I see: > > “ > > Exception in thread "main" java.util.concurrent.ExecutionException: > KeeperErrorCode = NoNode > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:378) > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithRegistrationManager(MetadataDrivers.java:398) > at > org.apache.bookkeeper.client.BookKeeperAdmin.initNewCluster(BookKeeperAdmin.java:1197) > at > org.apache.bookkeeper.bookie.BookieShell$InitNewCluster.runCmd(BookieShell.java:368) > at > org.apache.bookkeeper.bookie.BookieShell$MyCommand.runCmd(BookieShell.java:277) > at org.apache.bookkeeper.bookie.BookieShell.run(BookieShell.java:3081) > at org.apache.bookkeeper.bookie.BookieShell.main(BookieShell.java:3172) > Caused by: org.apache.zookeeper.KeeperException$NoNodeException: > KeeperErrorCode = NoNode > at > org.apache.zookeeper.KeeperException.create(KeeperException.java:114) > at org.apache.zookeeper.ZooKeeper.multiInternal(ZooKeeper.java:1015) > at org.apache.zookeeper.ZooKeeper.multi(ZooKeeper.java:919) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.access$801(ZooKeeperClient.java:70) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$2.call(ZooKeeperClient.java:466) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$2.call(ZooKeeperClient.java:455) > at > org.apache.bookkeeper.zookeeper.ZooWorker.syncCallWithRetries(ZooWorker.java:140) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.multi(ZooKeeperClient.java:455) > at > org.apache.bookkeeper.discover.ZKRegistrationManager.initNewCluster(ZKRegistrationManager.java:453) > at > org.apache.bookkeeper.client.BookKeeperAdmin.lambda$initNewCluster$3(BookKeeperAdmin.java:1199) > at > org.apache.bookkeeper.meta.MetadataDrivers.lambda$runFunctionWithRegistrationManager$1(MetadataDrivers.java:398) > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:373) > > “ > > What initialization step am I missing that needs to be done before > invoking: ` /opt/bookkeeper/scripts/entrypoint.sh bookie` ?? > > > > -Thanks, > > Prajakta > > > > *From:* Enrico Olivelli <[email protected]> > *Sent:* Friday, October 4, 2019 9:09 PM > *To:* [email protected] > *Cc:* [email protected] > *Subject:* Re: Error starting bookie using Apache Bookkeeper 4.9.1 > > > > [EXTERNAL EMAIL] > > Did you format/init the cluster? > > > > Enrico > > > > Il ven 4 ott 2019, 16:33 <[email protected]> ha scritto: > > Hi Bookkeeper Team, > > > > I’m a Pravega developer and I’m currently trying to use the recent > Bookkeeper version `4.9.1` with Pravega (docker image > apache/bookkeeper:4.9.1 <https://hub.docker.com/r/apache/bookkeeper/tags>) > > However, when starting a new bookie, I see this exception: > > “ > > 2019-10-03 14:53:43,836 - INFO - > [main-EventThread:ZooKeeperWatcherBase@130] - ZooKeeper client is > connected now. > 2019-10-03 14:53:43,860 - ERROR - [main:ZKRegistrationManager@379] - > BookKeeper metadata doesn't exist in zookeeper. Has the cluster been > initialized? Try running bin/bookkeeper shell metaformat > 2019-10-03 14:53:43,861 - INFO - [main:BookieNettyServer@424] - Shutting > down BookieNettyServer > 2019-10-03 14:53:43,875 - ERROR - [main:Main@223] - Failed to build > bookie server > org.apache.bookkeeper.bookie.BookieException$MetadataStoreException: > Failed to get cluster instance id > at > org.apache.bookkeeper.discover.ZKRegistrationManager.getClusterInstanceId(ZKRegistrationManager.java:392) > at > org.apache.bookkeeper.bookie.Bookie.checkEnvironmentWithStorageExpansion(Bookie.java:408) > at org.apache.bookkeeper.bookie.Bookie.checkEnvironment(Bookie.java:252) > at org.apache.bookkeeper.bookie.Bookie.<init>(Bookie.java:691) > at > org.apache.bookkeeper.proto.BookieServer.newBookie(BookieServer.java:137) > at > org.apache.bookkeeper.proto.BookieServer.<init>(BookieServer.java:106) > at > org.apache.bookkeeper.server.service.BookieService.<init>(BookieService.java:43) > at org.apache.bookkeeper.server.Main.buildBookieServer(Main.java:301) > at org.apache.bookkeeper.server.Main.doMain(Main.java:221) > at org.apache.bookkeeper.server.Main.main(Main.java:203) > Caused by: org.apache.zookeeper.KeeperException$NoNodeException: > KeeperErrorCode = NoNode for BookKeeper metadata > at > org.apache.bookkeeper.discover.ZKRegistrationManager.getClusterInstanceId(ZKRegistrationManager.java:382) > > “ > > > > If I try to run `metaformat` or `initnewCluster` using the bookkeeper > shell, before starting the new bookie, that too fails because the expected > znode is not present… > > Error with `metaformat`: > > “ > > Exception in thread "main" java.util.concurrent.ExecutionException: > KeeperErrorCode = NoNode for /pravega/pravega/bookkeeper/ledgers > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:378) > at > org.apache.bookkeeper.client.BookKeeperAdmin.format(BookKeeperAdmin.java:1150) > at > org.apache.bookkeeper.bookie.BookieShell$MetaFormatCmd.runCmd(BookieShell.java:328) > at > org.apache.bookkeeper.bookie.BookieShell$MyCommand.runCmd(BookieShell.java:277) > at org.apache.bookkeeper.bookie.BookieShell.run(BookieShell.java:3081) > at org.apache.bookkeeper.bookie.BookieShell.main(BookieShell.java:3172) > Caused by: org.apache.zookeeper.KeeperException$NoNodeException: > KeeperErrorCode = NoNode for /pravega/pravega/bookkeeper/ledgers > at org.apache.zookeeper.KeeperException.create(KeeperException.java:114) > at org.apache.zookeeper.KeeperException.create(KeeperException.java:54) > at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:792) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.access$1901(ZooKeeperClient.java:70) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$9.call(ZooKeeperClient.java:711) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient$9.call(ZooKeeperClient.java:705) > at > org.apache.bookkeeper.zookeeper.ZooWorker.syncCallWithRetries(ZooWorker.java:140) > at > org.apache.bookkeeper.zookeeper.ZooKeeperClient.create(ZooKeeperClient.java:705) > at > org.apache.bookkeeper.discover.ZKRegistrationManager.prepareFormat(ZKRegistrationManager.java:403) > at > org.apache.bookkeeper.client.BookKeeperAdmin.lambda$format$2(BookKeeperAdmin.java:1152) > at > org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver(MetadataDrivers.java:373 > > ” > > > > Could you please help me understand what could be causing this? > > > > -Thanks, > > Prajakta > > > > > > > > > >
