This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.11.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit a51d927ea32779c54d9d5dd6663ecb98a07e52c7 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Nov 13 12:50:32 2021 +0100 CAMEL-17174: fixed issue where exchange UnitOfWork was not being cleared upon completion. --- .../org/apache/camel/impl/engine/MDCUnitOfWork.java | 6 ++++++ .../apache/camel/processor/UnitOfWorkHelperTest.java | 19 +++++++++---------- .../org/apache/camel/support/UnitOfWorkHelper.java | 1 - 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java index a8e1683..123bc83 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java @@ -195,6 +195,12 @@ public class MDCUnitOfWork extends DefaultUnitOfWork { } } + protected void onDone() { + super.onDone(); + // clear MDC, so we do not leak as Camel is done using this UoW + clear(); + } + @Override public void reset() { super.reset(); diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkHelperTest.java index 23f36b9..855d7b9 100644 --- a/core/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkHelperTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkHelperTest.java @@ -14,19 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.camel.processor; import org.apache.camel.ContextTestSupport; -import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; import org.apache.camel.ExtendedExchange; import org.apache.camel.Message; -import org.apache.camel.component.direct.DirectEndpoint; import org.apache.camel.component.file.FileComponent; import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.file.GenericFileMessage; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.component.seda.SedaEndpoint; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent; import org.apache.camel.support.DefaultExchange; @@ -39,21 +37,22 @@ public class UnitOfWorkHelperTest extends ContextTestSupport { private static final String FILE_CONTENT = "Lorem ipsum dolor sit amet"; - @EndpointInject(value = "mock:result") - protected MockEndpoint resultEndpoint; - private DirectEndpoint fromEndpoint; - + private MockEndpoint resultEndpoint; + private SedaEndpoint fromEndpoint; private CustomEventNotifier eventNotifier; private int numberOfExchangeCreatedEvents; @Test void testUoWShouldBeClearedOnJobDone() throws Exception { + resultEndpoint = context.getEndpoint("mock:result", MockEndpoint.class); + fromEndpoint = context.getEndpoint("seda:from", SedaEndpoint.class); + eventNotifier = new CustomEventNotifier(); context.getManagementStrategy().addEventNotifier(eventNotifier); Exchange testExchange = createExchange("testFile"); - template.send("direct:from", testExchange); - template.send("direct:from", testExchange); + template.send(fromEndpoint, testExchange); + template.send(fromEndpoint, testExchange); assertEquals(2, numberOfExchangeCreatedEvents); } @@ -62,7 +61,7 @@ public class UnitOfWorkHelperTest extends ContextTestSupport { Exchange testExchange = new DefaultExchange(context); GenericFile<String> testFile = createFile(fileName); - Message testMessage = new GenericFileMessage<String>(testExchange, testFile); + Message testMessage = new GenericFileMessage<>(testExchange, testFile); testMessage.setBody(testFile); testExchange.setIn(testMessage); diff --git a/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java index 34b5d32..47309a4 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java @@ -21,7 +21,6 @@ import java.util.Collections; import java.util.List; import org.apache.camel.Exchange; -import org.apache.camel.ExtendedExchange; import org.apache.camel.Route; import org.apache.camel.spi.Synchronization; import org.apache.camel.spi.SynchronizationRouteAware;