I have encountered the following issue when I updated from camel-3.12.0 to camel-3.13.0 (and all newer releases)
If a transactional route calls another route using "direct:" and this route contains a split(), the route never completes. The last log in "route2" is never written, and the context never stops. Regards Erik Svendsen Lead Architect package camel.test; import java.util.Arrays; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionException; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.SimpleTransactionStatus; public class CamelTest { public static void main(String[] args) throws Exception { try (CamelContext context = new DefaultCamelContext()) { context.getRegistry().bind("transactionManager", createTransactionManager()); context.addRoutes(createRoute()); ProducerTemplate template = context.createProducerTemplate(); context.start(); // Works in 3.12.0 but not in 3.13.0 template.sendBody("direct:route1", Arrays.asList("A", "B")); // Works in a versions // template.sendBody("direct:route3", Arrays.asList("A","B")); } } public static RouteBuilder createRoute() { return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:route1") .transacted() .to("direct:route2"); from("direct:route2") .log("before: ${body}") .split(body()) .log("split: ${body}") .end() .log("after: ${body}"); from("direct:route3") .transacted() .log("before: ${body}") .split(body()) .log("split: ${body}") .end() .log("after: ${body}"); } }; } public static PlatformTransactionManager createTransactionManager() { return new PlatformTransactionManager() { @Override public TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException { return new SimpleTransactionStatus(); } @Override public void commit(TransactionStatus status) throws TransactionException { } @Override public void rollback(TransactionStatus status) throws TransactionException { } }; } } Erik Svendsen Lead Architect Lyngsoe Systems Erik Svendsen Lead Architect D: +45 9698 0926 M: +45 2320 2630 E: e...@lyngsoesystems.com W: www.lyngsoesystems.com This email is subject to our Company E-mail Terms and Conditions
<<attachment: camel_split_test.zip>>