From 6a817ecfe47d509102885ef469720d183ad376c9 Mon Sep 17 00:00:00 2001 From: fsgonz Date: Wed, 10 Jul 2024 18:23:46 -0300 Subject: [PATCH] Poc classloader in policies problem --- .../internal/processor/LoggerMessageProcessor.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/modules/core-components/src/main/java/org/mule/runtime/core/internal/processor/LoggerMessageProcessor.java b/modules/core-components/src/main/java/org/mule/runtime/core/internal/processor/LoggerMessageProcessor.java index 7486db199077..50f685b67697 100755 --- a/modules/core-components/src/main/java/org/mule/runtime/core/internal/processor/LoggerMessageProcessor.java +++ b/modules/core-components/src/main/java/org/mule/runtime/core/internal/processor/LoggerMessageProcessor.java @@ -10,6 +10,7 @@ import static org.mule.runtime.api.util.MuleSystemProperties.MULE_LOGGING_BLOCKING_CATEGORIES; import static org.mule.runtime.core.api.processor.ReactiveProcessor.ProcessingType.BLOCKING; import static org.mule.runtime.core.api.processor.ReactiveProcessor.ProcessingType.CPU_LITE; +import static org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader; import static org.mule.runtime.core.api.util.StringUtils.EMPTY; import static java.util.Arrays.asList; @@ -23,6 +24,7 @@ import org.mule.runtime.core.api.el.ExtendedExpressionManager; import org.mule.runtime.core.api.event.CoreEvent; import org.mule.runtime.core.api.processor.Processor; +import org.mule.runtime.core.api.util.ClassUtils; import org.mule.runtime.core.api.util.StringUtils; import org.mule.runtime.core.internal.interception.HasParamsAsTemplateProcessor; @@ -56,6 +58,7 @@ public class LoggerMessageProcessor extends AbstractComponent ExtendedExpressionManager expressionManager; private volatile ProcessingType processingType; + private transient ClassLoader loggerExecutionClassloader; @Override public void initialise() throws InitialisationException { @@ -65,6 +68,7 @@ public void initialise() throws InitialisationException { } protected void initLogger() { + this.loggerExecutionClassloader = Thread.currentThread().getContextClassLoader(); if (category != null) { logger = LoggerFactory.getLogger(category); } else { @@ -104,6 +108,14 @@ private boolean isBlocking(String category) { } protected void log(CoreEvent event) { + if (loggerExecutionClassloader != null) { + withContextClassLoader(loggerExecutionClassloader, () -> doLog(event)); + } else { + doLog(event); + } + } + + private void doLog(CoreEvent event) { if (event == null) { logWithLevel(null); } else {