From 6db92b5169d9332a03275497bf85ff21632b8c47 Mon Sep 17 00:00:00 2001 From: rdhabalia Date: Wed, 26 Jun 2019 16:11:57 -0700 Subject: [PATCH] [pulsar-broker] fix deadlock on get-status rest-api call --- .../broker/admin/impl/PersistentTopicsBase.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java index 29dc789ca5bb0..5ed35cf84bab6 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java @@ -39,7 +39,6 @@ import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -1339,8 +1338,15 @@ public static CompletableFuture getPartitionedTopicMet * Get the Topic object reference from the Pulsar broker */ private Topic getTopicReference(TopicName topicName) { - return pulsar().getBrokerService().getTopicIfExists(topicName.toString()).join() - .orElseThrow(() -> topicNotFoundReason(topicName)); + try { + return pulsar().getBrokerService().getTopicIfExists(topicName.toString()) + .get(pulsar().getConfiguration().getZooKeeperSessionTimeoutMillis(), TimeUnit.MILLISECONDS) + .orElseThrow(() -> topicNotFoundReason(topicName)); + } catch (RestException e) { + throw e; + } catch (Exception e) { + throw new RestException(e); + } } private RestException topicNotFoundReason(TopicName topicName) {