You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Matthieu Riou (JIRA)" <ji...@apache.org> on 2007/12/05 01:43:43 UTC
[jira] Resolved: (ODE-214) MEX error property is not set when MEX
status is ERROR
[ https://issues.apache.org/jira/browse/ODE-214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthieu Riou resolved ODE-214.
-------------------------------
Resolution: Fixed
Fixed for IN_OUT.
> MEX error property is not set when MEX status is ERROR
> ------------------------------------------------------
>
> Key: ODE-214
> URL: https://issues.apache.org/jira/browse/ODE-214
> Project: ODE
> Issue Type: Bug
> Components: BPEL Runtime
> Affects Versions: 1.1
> Environment: Fuse 3.3.0.2 + ODE 1.1
> Reporter: Mateusz Nowakowski
> Assignee: Matthieu Riou
> Priority: Critical
> Fix For: 1.2
>
>
> When there's exception thrown in the OdeService.invokeOde:
> org.apache.ode.jbi.msgmap.MessageTranslationException: Could not find a mapper for request message for JBI MEX ID:10.136.44.164- 11681241c72-4:7; ODE MEX 4611686018427387904 is failed.
> at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:240)
> at
> org.apache.ode.jbi.OdeService.onJbiMessageExchange(OdeService.java:148)
> at
> org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(Jb
> iMessageExchangeEventRouter.java:47)
> at org.apache.ode.jbi.Receiver$1.run(Receiver.java:179)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
> at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
> r.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
> va:675)
> at java.lang.Thread.run(Thread.java:595)
> The exception is caught in onJbiMessageExchange, by the following code:
> try {
> invokeOde(jbiMex, ((InOut) jbiMex).getInMessage());
> success = true;
> } catch (Exception ex) {
> __log.error("Error invoking ODE.", ex);
> err = ex;
> } catch (Throwable t) {
> __log.error("Unexpected error invoking ODE.", t);
> err = new RuntimeException(t);
> } finally {
> // If we got an error that wasn't sent.
> if (jbiMex.getStatus() == ExchangeStatus.ACTIVE &&
> !success) {
> if (err != null && jbiMex.getError() != null) {
> jbiMex.setError(err);
> }
> jbiMex.setStatus(ExchangeStatus.ERROR);
> _ode.getChannel().send(jbiMex);
> }
> }
> The condition (err != null && jbiMex.getError() != null) leads to a
> situation,
> that the status of the MEX is set to ExchangeStatus.ERROR, but the error of the MEX is not set (!)
> At the end of the day, the endpoint that invoked ODE, gets following
> error:
> java.lang.Exception: Unkown error (exchange aborted ?)
> at
> org.apache.servicemix.http.endpoints.HttpConsumerEndpoint.process(HttpCo
> nsumerEndpoint.java:263)
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.ja
> va:71)
> because it cannot find the error in the MEX.
> --
> Regards
> Mateusz Nowakowski
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.