Drools component attempts to process message twice
--------------------------------------------------
Key: SMXCOMP-682
URL: https://issues.apache.org/activemq/browse/SMXCOMP-682
Project: ServiceMix Components
Issue Type: Bug
Components: servicemix-drools
Reporter: Greg Lucas
The simple drools component in the loan-broker-bpel-example tries to process
the incoming message exchange twice, resulting in an exception (see below).
Running the example once produces the expected result but with this error in
the log; running it again fails.
The stack trace below is from SMX 4.1 (see patch for SMX4-437 with updated
README for running this). On SMX 3.3 the error is different but the underlying
issue of the same exchange being dispatched back to the drools component is the
same.
01:44:51,794 | ERROR | -drools-thread-3 | DroolsComponent |
icemix.common.AsyncBaseLifeCycle 480 | Error processing exchange
org.apache.servicemix.jbi.runtime.impl.inouti...@61e285
org.drools.spi.ConsequenceException: javax.jbi.messaging.MessagingException:
Out message already set
at
org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:13)
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:558)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:518)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:475)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:439)
at
org.apache.servicemix.drools.DroolsExecutionContext.start(DroolsExecutionContext.java:77)
at
org.apache.servicemix.drools.DroolsEndpoint.startDroolsExecutionContext(DroolsEndpoint.java:319)
at
org.apache.servicemix.drools.DroolsEndpoint.drools(DroolsEndpoint.java:276)
at
org.apache.servicemix.drools.DroolsEndpoint.handleProviderExchange(DroolsEndpoint.java:259)
at
org.apache.servicemix.drools.DroolsEndpoint.process(DroolsEndpoint.java:222)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:478)
at
org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:347)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.jbi.messaging.MessagingException: Out message already set
at
org.apache.servicemix.jbi.runtime.impl.MessageExchangeImpl.setOutMessage(MessageExchangeImpl.java:188)
at
org.apache.servicemix.jbi.runtime.impl.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:152)
at
org.apache.servicemix.drools.model.JbiHelper.answer(JbiHelper.java:201)
at
org.apache.servicemix.drools.model.JbiHelper.answer(JbiHelper.java:188)
at
org.apache.servicemix.drools.Rule_CreditHistory_0.consequence(Rule_CreditHistory_0.java:7)
at
org.apache.servicemix.drools.Rule_CreditHistory_0ConsequenceInvoker.evaluate(Rule_CreditHistory_0ConsequenceInvoker.java:20)
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554)
... 15 more
I've replaced the drools component with a camel component and the example runs
fine, so this does not seem specific to BPEL. I'll see if I can come up with a
simpler test case though.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.