Hello everyone,

We are experiencing issue in our project after upgrading Apache Camel from 
version 3.10.0 to 3.11.0. The same route which worked without any problems in 
previous versions, does not work now. We managed to simplify the route from our 
project and simulate the problem on this simplified route.

Route looks like this:

// HTTP Input
from("servlet:///httpIssue?httpMethodRestrict=GET&servletName=CamelServlet")
        .log("Http request received")
        .process(new CorrelationIdGenerator())
        .to(parallelSplitterEndpoint);

// Parallel Splitter
from(parallelSplitterEndpoint)
        .log("Parallel Splitter")
        .multicast()
        .executorService(executorService)
        .parallelProcessing()
        .to(new String[]{synchronizerEndpoint});

// Parallel Synchronizer
from(synchronizerEndpoint)
        .log("Parallel Synchronizer")
        .setHeader("scaler-sync-correlation", correlationExpression)
        .aggregate(correlationExpression, new MyRoutesAggregator())
        .completionSize(1)
        .to(httpOutputEndpoint);

// HTTP Output
from(httpOutputEndpoint)
        .log("HTTP Output")
        .process(new ProcessHttpOutput());


In ProcessHttpOutput processor we are writing the response into the 
OutputStream:


private static class ProcessHttpOutput implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        HttpServletResponse response = 
exchange.getMessage().getBody(HttpMessage.class).getResponse();
        response.setStatus(200);
        try (ServletOutputStream outputStream = response.getOutputStream()) {
            outputStream.write(("Response").getBytes(StandardCharsets.UTF_8));
            outputStream.flush();
        }
    }
}

If we run this route on Camel version 3.11.0. We are getting 
NullPointerException during flushing / closing the stream. It works without any 
problems on 3.10.0.

The problem is only when using multicast and subsequent aggregation in the 
route (without aggregation it works fine). After aggregation, it is not 
possible to write to the output stream.


Here is the repository with the simplified route (branch camel-minimal-sample):
https://github.com/bugs84/springboot-camel-httpoutput-issue/tree/camel-minimal-sample

Steps to reproduce:
1.      Run Application.java
2.      Route configuration is located in HttpOutputIssue.java
3.      Make GET request to http://localhost:8080/camel/httpIssue


Can you please confirm that this is a bug? Or is it misconfiguration? We will 
be grateful for any help with this issue.

Thank you
Michael

Reply via email to