gaozhangmin opened a new issue, #13584:
URL: https://github.com/apache/pulsar/issues/13584

   Pulsar version:2.9.1
   ```
   2021-12-29 14:37:37.641 [metadata-store-6-1] WARN  
org.apache.pulsar.broker.lookup.TopicLookupBase - Failed to lookup null for 
topic persistent://public/data-channel/tet-partition-30 with error 
org.apache.pulsar.broker.PulsarServerException: Failed to acquire ownership for 
namespace bundle public/data-channel/0xebf3b108_0xf0000000
   java.util.concurrent.CompletionException: 
org.apache.pulsar.broker.PulsarServerException: Failed to acquire ownership for 
namespace bundle public/data-channel/0xebf3b108_0xf0000000
           at 
java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
 ~[?:1.8.0_102]
           at 
org.apache.pulsar.broker.namespace.NamespaceService.lambda$searchForCandidateBroker$15(NamespaceService.java:577)
 ~[org.apache.pulsar-pulsar-broker-2.9.1.jar:2.9.1]
           at 
java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
 ~[?:1.8.0_102]
           at 
org.apache.pulsar.metadata.coordination.impl.LockManagerImpl.lambda$acquireLock$2(LockManagerImpl.java:111)
 ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
           at 
java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
 ~[?:1.8.0_102]
           at 
org.apache.pulsar.metadata.coordination.impl.ResourceLockImpl.lambda$acquire$4(ResourceLockImpl.java:134)
 ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
           at 
java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) 
~[?:1.8.0_102]
           at 
org.apache.pulsar.metadata.impl.ZKMetadataStore.lambda$get$7(ZKMetadataStore.java:139)
 ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[?:1.8.0_102]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[?:1.8.0_102]
           at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 [io.netty-netty-common-4.1.72.Final.jar:4.1.72.Final]
           at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
   Caused by: org.apache.pulsar.broker.PulsarServerException: Failed to acquire 
ownership for namespace bundle public/data-channel/0xebf3b108_0xf0000000
           ... 20 more
   Caused by: java.util.concurrent.CompletionException: 
org.apache.pulsar.metadata.api.MetadataStoreException$LockBusyException: 
Resource at /namespace/public/data-channel/0xebf3b108_0xf0000000 is already 
locked
           at 
java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
 ~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
 ~[?:1.8.0_102]
           ... 17 more
   Caused by: 
org.apache.pulsar.metadata.api.MetadataStoreException$LockBusyException: 
Resource at /namespace/public/data-channel/0xebf3b108_0xf0000000 is already 
locked
           at 
org.apache.pulsar.metadata.coordination.impl.ResourceLockImpl.lambda$doRevalidate$20(ResourceLockImpl.java:297)
 ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
           at 
java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952) 
~[?:1.8.0_102]
           at 
java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
 ~[?:1.8.0_102]
           ... 7 more
   ```
   The error logs said  the resource is already locked, this means, the ZNODE 
of this namespace bundle created by previous broker was not removed yet.
   Normally, broker would firstly query the bundle owner before tried to 
acquire it.
   
   ```
   public CompletableFuture<Optional<NamespaceEphemeralData>> 
getOwnerAsync(NamespaceBundle suName) {
           CompletableFuture<OwnedBundle> ownedBundleFuture = 
ownedBundlesCache.getIfPresent(suName);
           if (ownedBundleFuture != null) {
               // Either we're the owners or we're trying to become the owner.
               return ownedBundleFuture.thenApply(serviceUnit -> {
                   // We are the owner of the service unit
                   return Optional.of(serviceUnit.isActive() ? selfOwnerInfo : 
selfOwnerInfoDisabled);
               });
           }
   
           // If we're not the owner, we need to check if anybody else is
           String path = ServiceUnitUtils.path(suName);
           return lockManager.readLock(path);
       }
   ```
   
   If the ZNODE created by previous broker was not removed yet. Why 
`lockManager.readLock(path)` returned none owner of this bundle. 
   
   #### Reproduce step.
   
   It's hard to reproduce, since i just unloaded  some bundle during the 
consumer and producer exists,.


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to