Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.7.4, 3.7.2, 3.7.3, 3.8.0, 3.10.0
-
None
-
Unknown
Description
When migrating to Camel 3.7.2 I've noticed that there is a problem with the recipient list in transacted routes.
Recipient list does not wait for processing an exchange by recipients and ignores aggregation strategy when :
- route is transacted,
- doTry()...doCatch() is used,
- processing by the recipient takes longer.
The bug was discovered in version 3.7.2 but it's also present in the newest versions 3.10.0 and 3.7.4 (LTS).
Here is a test, which reproduces the problem:
public class TransactedRecipientListTest extends TransactionClientDataSourceSupport { @Test public void testRecipientList() throws Exception { System.out.println("Running on version : " + context.getVersion()); String response = template.requestBody("direct:start", "Hello World", String.class); assertEquals("Hi !!!", response); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { // NOTE commenting transacted(), doTry() or delay() make this test green in Camel 3.7.4 and above // however commenting delay() doest not make this test green in Camel 3.7.2 from("direct:start") .transacted() .doTry() .recipientList(constant("direct:a")) .endDoTry(); // NOTE doCatch() skipped here to keep test as simple as possible from("direct:a") .delay(1000) .transform(constant("Hi !!!")); } }; } }
This test is passing with Camel 3.7.1 and below, but it's failing with Camel 3.7.2 and above.
However it's also passing with Camel 3.9.0 !
It's also passing on 'main' and '3.7.x' branches after reverting commit b1b5b7d0 : "CAMEL-16550: camel-core - Split and Aggregate with Transacted may cause thread to stuck".
I've checked a history of MulticastProcessor class and it looks that:
CAMEL-16103introduced the problem.CAMEL-16295fixed the problem.CAMEL-16550introduced this problem again.
Attachments
Attachments
Issue Links
- relates to
-
CAMEL-16737 camel-core - Transacted vs reactive routing engine
- Open