diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/web/ZookeeperCacheLoader.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/web/ZookeeperCacheLoader.java index e1a2cd7927bdc3914a1ceea3dc70bdc0d6f19c99..1a6944a2cc6bfeb561f47df53df19e4e47f8aa46 100644 --- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/web/ZookeeperCacheLoader.java +++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/web/ZookeeperCacheLoader.java @@ -28,6 +28,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import org.apache.bookkeeper.common.util.OrderedScheduler; +import org.apache.commons.collections4.CollectionUtils; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -124,6 +125,13 @@ public class ZookeeperCacheLoader implements Closeable { } public List getAvailableBrokers() { + if (CollectionUtils.isEmpty(availableBrokers)) { + try { + updateBrokerList(availableBrokersCache.get()); + } catch (Exception e) { + log.warn("Error updating broker from zookeeper.", e); + } + } return availableBrokers; }