diff --git a/core/src/main/java/org/mule/runtime/core/internal/message/ErrorBuilder.java b/core/src/main/java/org/mule/runtime/core/internal/message/ErrorBuilder.java index d0c0589e77d9..b3370bbb2fd0 100644 --- a/core/src/main/java/org/mule/runtime/core/internal/message/ErrorBuilder.java +++ b/core/src/main/java/org/mule/runtime/core/internal/message/ErrorBuilder.java @@ -27,6 +27,7 @@ import org.mule.runtime.core.api.retry.policy.RetryPolicyExhaustedException; import org.mule.runtime.core.privileged.exception.MessagingException; import org.mule.runtime.core.privileged.message.PrivilegedError; +import org.mule.runtime.privileged.exception.SuppressedMuleException; import java.io.ObjectStreamException; import java.util.ArrayList; @@ -127,9 +128,11 @@ private void addSuppressedErrors(MuleException muleException) { List suppressedCauses = muleException.getExceptionInfo().getSuppressedCauses(); if (!suppressedCauses.isEmpty()) { List suppressions = new ArrayList<>(suppressedCauses.size()); - for (MuleException suppressedException : suppressedCauses) { - if (suppressedException instanceof MessagingException) { - ((MessagingException) suppressedException).getEvent().getError().ifPresent(error -> { + for (MuleException suppressedExceptionInfo : suppressedCauses) { + MuleException suppressed = + ((SuppressedMuleException.SuppressedMuleExceptionInfo) suppressedExceptionInfo).obtainSuppressedException(); + if (suppressed instanceof MessagingException) { + ((MessagingException) suppressed).getEvent().getError().ifPresent(error -> { suppressions.add(error); // First suppressed error cause needs to be set in order to maintain backwards compatibility // with the exception of the RetryPolicyExhaustedException, because