yjshen opened a new issue #4573: [managed-ledger] create bookkeeper client during ManagedLedger shutdown URL: https://github.com/apache/pulsar/issues/4573 During `ManagedLedgerFactoryImpl.shutdown()`, the zookeeper client is closed first and when `isBookkeeperManager`, it will get a bookkeeper from `bookkeeperFactory.get()` which result in creating new BookKeeper client using closed zk client, which caused this bug. ``` java.lang.IllegalStateException: java.io.IOException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.lambda$new$0(ManagedLedgerFactoryImpl.java:125) at org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl$BookkeeperFactoryForCustomEnsemblePlacementPolicy.get(ManagedLedgerFactoryImpl.java:614) at org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.shutdown(ManagedLedgerFactoryImpl.java:431) at org.apache.pulsar.segment.pulsar.PulsarSegmentSourceBuilder.build(PulsarSegmentSourceBuilder.java:143) at org.apache.pulsar.segment.impl.SegmentEntryReaderImplTest.getNonPartitionedTopicSegments(SegmentEntryReaderImplTest.java:137) at org.apache.pulsar.segment.impl.SegmentEntryReaderImplTest.testReadEntriesFromCompleteLogSegment(SegmentEntryReaderImplTest.java:151) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: java.io.IOException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.bookkeeper.client.BookKeeper.validateZooKeeper(BookKeeper.java:342) at org.apache.bookkeeper.client.BookKeeper.<init>(BookKeeper.java:368) at org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.lambda$new$0(ManagedLedgerFactoryImpl.java:123) ... 33 more Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:102) ... 36 more ```
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
