From a26e491ca1279a07bb70ba5f1f559103ec487081 Mon Sep 17 00:00:00 2001 From: Justin Bertram Date: Fri, 20 Sep 2024 15:24:57 -0500 Subject: [PATCH] ARTEMIS-5042 don't throw Exception when clearing cluster-connection bindings Throwing an exception when clearing the bindings when a cluster-connection is closed short-circuits the clearing (and closing) process. This commit fixes that by simply logging the failure to clear and continues on. No new tests are added with this commit. It relies on existing tests. --- .../artemis/core/server/ActiveMQServerLogger.java | 3 +++ .../core/server/cluster/impl/ClusterConnectionImpl.java | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java index 5a88f632447..3b43f6ebbb0 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java @@ -1621,4 +1621,7 @@ void noQueueIdDefined(org.apache.activemq.artemis.api.core.Message message, @LogMessage(id = 224139, value = "Failed to stop bridge: {}", level = LogMessage.Level.ERROR) void errorStoppingBridge(String bridgeName, Exception e); + + @LogMessage(id = 224140, value = "Clearing bindings on cluster-connection {} failed to remove binding {}: {}", level = LogMessage.Level.WARN) + void clusterConnectionFailedToRemovingBindingOnClear(String clusterConnection, String binding, String exceptionMessage); } diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java index 2b0f2b2d751..68afbe9d121 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java @@ -1245,10 +1245,14 @@ private synchronized void doProposalResponseReceived(final ClientMessage message server.getGroupingHandler().sendProposalResponse(response, hops + 1); } - private synchronized void clearBindings() throws Exception { + private synchronized void clearBindings() { logger.debug("{} clearing bindings", ClusterConnectionImpl.this); for (RemoteQueueBinding binding : new HashSet<>(bindings.values())) { - removeBinding(binding.getClusterName()); + try { + removeBinding(binding.getClusterName()); + } catch (Exception e) { + ActiveMQServerLogger.LOGGER.clusterConnectionFailedToRemovingBindingOnClear(getName().toString(), binding.getClusterName().toString(), e.getMessage()); + } } }