diff --git a/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java b/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java index f22f22a12bd..93d48de1dd9 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java @@ -775,29 +775,33 @@ private void stopCheckSyncStateSet() { } private void scanAvailableControllerAddresses() { - if (controllerAddresses == null) { - LOGGER.warn("scanAvailableControllerAddresses addresses of controller is null!"); - return; - } + try { + if (controllerAddresses == null) { + LOGGER.warn("scanAvailableControllerAddresses addresses of controller is null!"); + return; + } - for (String address : availableControllerAddresses.keySet()) { - if (!controllerAddresses.contains(address)) { - LOGGER.warn("scanAvailableControllerAddresses remove invalid address {}", address); - availableControllerAddresses.remove(address); + for (String address : availableControllerAddresses.keySet()) { + if (!controllerAddresses.contains(address)) { + LOGGER.warn("scanAvailableControllerAddresses remove invalid address {}", address); + availableControllerAddresses.remove(address); + } } - } - for (String address : controllerAddresses) { - scanExecutor.submit(() -> { - if (brokerOuterAPI.checkAddressReachable(address)) { - availableControllerAddresses.putIfAbsent(address, true); - } else { - Boolean value = availableControllerAddresses.remove(address); - if (value != null) { - LOGGER.warn("scanAvailableControllerAddresses remove unconnected address {}", address); + for (String address : controllerAddresses) { + scanExecutor.submit(() -> { + if (brokerOuterAPI.checkAddressReachable(address)) { + availableControllerAddresses.putIfAbsent(address, true); + } else { + Boolean value = availableControllerAddresses.remove(address); + if (value != null) { + LOGGER.warn("scanAvailableControllerAddresses remove unconnected address {}", address); + } } - } - }); + }); + } + } catch (final Throwable t) { + LOGGER.error("scanAvailableControllerAddresses unexpected exception", t); } }