mattisonchao opened a new pull request, #18914:
URL: https://github.com/apache/pulsar/pull/18914

   ### Motivation
   
   Avoid using the `get()` or `join()` methods to wait forever for the future.
   
   ```
   "main-EventThread" #16 daemon prio=5 os_prio=0 cpu=6971.42ms 
elapsed=23304.42s tid=0x00007f85118b7ca0 nid=0xa4 waiting on condition  
[0x00007f84a39ea000]
      java.lang.Thread.State: WAITING (parking)
           at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
           - parking to wait for  <0x00001000a0001970> (a 
java.util.concurrent.CompletableFuture$Signaller)
           at 
java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
           at 
java.util.concurrent.CompletableFuture$Signaller.block([email protected]/CompletableFuture.java:1796)
           at 
java.util.concurrent.ForkJoinPool.managedBlock([email protected]/ForkJoinPool.java:3128)
           at 
java.util.concurrent.CompletableFuture.waitingGet([email protected]/CompletableFuture.java:1823)
           at 
java.util.concurrent.CompletableFuture.get([email protected]/CompletableFuture.java:1998)
           at 
org.apache.pulsar.broker.web.PulsarWebResource.validateTopicOperation(PulsarWebResource.java:1223)
           at 
org.apache.pulsar.broker.web.PulsarWebResource.validateTopicOperation(PulsarWebResource.java:1218)
           at 
org.apache.pulsar.broker.admin.AdminResource.lambda$getPartitionedTopicMetadataAsync$7(AdminResource.java:448)
           at 
org.apache.pulsar.broker.admin.AdminResource$$Lambda$1056/0x00007f84761220b0.run(Unknown
 Source)
           at 
java.util.concurrent.CompletableFuture.uniRunNow([email protected]/CompletableFuture.java:815)
           at 
java.util.concurrent.CompletableFuture.uniRunStage([email protected]/CompletableFuture.java:799)
           at 
java.util.concurrent.CompletableFuture.thenRun([email protected]/CompletableFuture.java:2121)
           at 
org.apache.pulsar.broker.admin.AdminResource.getPartitionedTopicMetadataAsync(AdminResource.java:447)
           at 
org.apache.pulsar.broker.admin.impl.PersistentTopicsBase.lambda$preValidation$251(PersistentTopicsBase.java:3363)
           at 
org.apache.pulsar.broker.admin.impl.PersistentTopicsBase$$Lambda$1485/0x00007f8471b100b0.apply(Unknown
 Source)
           at 
java.util.concurrent.CompletableFuture$UniCompose.tryFire([email protected]/CompletableFuture.java:1072)
           at 
java.util.concurrent.CompletableFuture.postComplete([email protected]/CompletableFuture.java:506)
           at 
java.util.concurrent.CompletableFuture.complete([email protected]/CompletableFuture.java:2073)
           at 
org.apache.pulsar.metadata.impl.ZKMetadataStore.handleGetChildrenResult(ZKMetadataStore.java:260)
           at 
org.apache.pulsar.metadata.impl.ZKMetadataStore.lambda$batchOperation$7(ZKMetadataStore.java:191)
           at 
org.apache.pulsar.metadata.impl.ZKMetadataStore$$Lambda$167/0x00007f84a3be48c8.processResult(Unknown
 Source)
           at 
org.apache.pulsar.metadata.impl.PulsarZooKeeperClient$3$1.processResult(PulsarZooKeeperClient.java:490)
           at 
org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:722)
           at 
org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:563)
   ```
   
   ### Modifications
   
   - Use async instead of blocking calls.
   - Avoid use `get()` or `join()` methods.
   
   ### Verifying this change
   
   - [x] Make sure that the change passes the CI checks.
   
   ### Documentation
   
   - [x] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   


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