Multithreading bug: getBody sporadically returns null
-----------------------------------------------------
Key: CAMEL-2692
URL: https://issues.apache.org/activemq/browse/CAMEL-2692
Project: Apache Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.3.0
Environment: JDK 6
Reporter: Roland Knight
Note that the only workaround for this bug is to remove the
parallelProcessing() call in the builder.
I have a simple route that processes a file by splitting on a tag and
processing the DOM of each split message. The problem is that getBody is
randomly returning null but ONLY when using the parallelProcessing feature of
split. For some runs of the same XML file, the error does not occur at all (the
file is about 2MB of data), others it will happen once or twice. I am currently
using the latest 2.3-SNAPSHOT.
Also note, that after detecting the null, I tried calling getBody(String.class)
- this also may return null. Sometimes it does return the proper XML.
Route configuration that reproduces the problem (my input XML is about 2MB with
about 500 article tags):
public void configure() throws Exception {
from("file:D:/inbox")
.split(new XPathBuilder("//article"))
.parallelProcessing() // remove this line
getBody below never returns null
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message inMessage = exchange.getIn();
org.w3c.dom.Document domDocument =
inMessage.getBody(org.w3c.dom.Document.class);
if (domDocument == null) {
log("Null body");
} else {
// process DOM here
}
}
})
.end()
}
});
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.