You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Bodor Maria Mihaela (JIRA)" <ji...@apache.org> on 2018/04/13 08:01:00 UTC

[jira] [Created] (CAMEL-12441) MulticastProcessor doProcessParallel blocks indefinitly if exception occurs in it.next()

Bodor Maria Mihaela created CAMEL-12441:
-------------------------------------------

             Summary: MulticastProcessor doProcessParallel blocks indefinitly if exception occurs in it.next()
                 Key: CAMEL-12441
                 URL: https://issues.apache.org/jira/browse/CAMEL-12441
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 2.21.0, 2.20.3, 2.20.2, 2.20.1, 2.20.0, 2.19.5
         Environment: Windows 8, java 1.8.0_162, camel 2.21.0
            Reporter: Bodor Maria Mihaela
             Fix For: 2.21.1


After upgrading from camel 2.17.5 to 2.21.0 the following problem was encountered:

Context:
A camel RouteBuilder with a split :

{code:title=MyRouteBuilder.java|borderStyle=solid}
public class MyRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
         from("direct:in")
                 .split()
                      .xtokenize("//someTocken", 'i', NAMESPACES)
                      .aggregationStrategy(nw UseLatestAggregationStrategy())
                      .stopOnException()
                      .parallelAggregate()
                      .parallelProcessing()
                      .executorServiceRef("splitExecutorService").stopOnException()
                      .streaming().stopOnException()
                      .id("xml-splitter")
                .to("direct:out")
                .routeId(getClass().getSimpleName());
    } 
}
{code}

Problem encountered:
A malformed xml arrives on this route. it.hasNext() returns true but it.next() throws an exception. This causes an indefinite wait in MulticastProcessor at line 374.

Reason:
A call to countDown on aggregationOnTheFlyDone is never performed and thus the latch waits indefinitely.

Possible solution:
A call to aggregationOnTheFlyDone .countDown inside the catch corresponding to the try surrounding the while.





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)