Antoine DESSAIGNE created CAMEL-21400:
-----------------------------------------

             Summary: StackOverflowError when processing files
                 Key: CAMEL-21400
                 URL: https://issues.apache.org/jira/browse/CAMEL-21400
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 4.7.0
            Reporter: Antoine DESSAIGNE


Hello everyone,

I just discovered a {{StackOverflowError}} when using reading files. Here's the 
smallest reprocase I could find.

{code:java}
// Create a temp directory with a CSV file
Path tempDirectory = Files.createTempDirectory("camel-test");
try (BufferedWriter writer = 
Files.newBufferedWriter(tempDirectory.resolve("file1.csv"))) {
    writer.write("fieldA,fieldB,fieldC,fieldD\n");
    for (int i = 0; i < 20000; i++) {
        writer.write("fieldA" + i + ",fieldB" + i + ",fieldC" + i + ",fieldD" + 
i + "\n");
    }
}

// Seems to fail if the target producer extends DefaultProducer and works if it 
extends DefaultAsyncProducer
String target = "file://output"; // this fails
//String target = "log://speed?groupSize=1000"; // this works

DefaultCamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
    @Override
    public void configure() {
        from("file://" + tempDirectory.toAbsolutePath() + 
"?noop=true").to("direct:read").log("Done!");
        from("direct:read").unmarshal().csv().split(body()).to("direct:agg");
         from("direct:agg").aggregate(constant("SINGLE_GROUP"), new 
GroupedExchangeAggregationStrategy())
                .completionSize(1)
                .setBody((Exchange exchange) -> {
                    List<Exchange> list = (List<Exchange>) 
exchange.getMessage().getBody();
                    return list.stream().map(e -> 
e.getMessage().getBody().toString()).collect(joining("\n"));
                })
                .to(target);
    }
});
context.start();
{code}

As mentioned in the example, it only seems to fail if the processor in the 
aggregation is a {{DefaultProcessor}} and not a {{DefaultAsyncProcessor}}.

Can you have a look? Thank you



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to