From 6966bf80497f5b4644db474babf661b226d11de5 Mon Sep 17 00:00:00 2001 From: Markus Spann Date: Fri, 9 Jul 2021 16:08:18 +0200 Subject: [PATCH 1/3] LOG4J2-3121: log4j2 config modified at run-time may trigger incomplete MBean re-initialization due to InstanceAlreadyExistsException --- .../java/org/apache/logging/log4j/core/jmx/Server.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java index 04eaa3d411b..441573e915d 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java @@ -389,7 +389,15 @@ private static void registerAppenders(final LoggerContext ctx, final MBeanServer private static void register(final MBeanServer mbs, final Object mbean, final ObjectName objectName) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException { + if (mbs.isRegistered(objectName)) { + try { + mbs.unregisterMBean(objectName); + } catch (MBeanRegistrationException | InstanceNotFoundException _ex) { + LOGGER.trace("Failed to unregister MBean {}", objectName); + } + } LOGGER.debug("Registering MBean {}", objectName); mbs.registerMBean(mbean, objectName); } + } From d263b183f65a53f762aaae724cf67c73b4d4b3c1 Mon Sep 17 00:00:00 2001 From: Markus Spann Date: Fri, 9 Jul 2021 16:57:46 +0200 Subject: [PATCH 2/3] LOG4J2-3121: Update for codestyle --- .../src/main/java/org/apache/logging/log4j/core/jmx/Server.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java index 441573e915d..baf1f96f5fa 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java @@ -392,7 +392,7 @@ private static void register(final MBeanServer mbs, final Object mbean, final Ob if (mbs.isRegistered(objectName)) { try { mbs.unregisterMBean(objectName); - } catch (MBeanRegistrationException | InstanceNotFoundException _ex) { + } catch (MBeanRegistrationException | InstanceNotFoundException ex) { LOGGER.trace("Failed to unregister MBean {}", objectName); } } From 131cfa7d86e269ec3e7fd301dc3768dc385e1ad8 Mon Sep 17 00:00:00 2001 From: Markus Spann Date: Fri, 9 Jul 2021 17:22:20 +0200 Subject: [PATCH 3/3] LOG4J2-3121: Updated changes.xml with bugfix info --- src/changes/changes.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 3a787518b13..e29389c1123 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -69,6 +69,9 @@ Allow a PatternSelector to be specified on GelfLayout. + + log4j2 config modified at run-time may trigger incomplete MBean re-initialization due to InstanceAlreadyExistsException. + Use SimpleMessage in Log4j 1 Category whenever possible.