You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/04/03 12:46:50 UTC
svn commit: r930505 - in
/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine:
BpelRuntimeContextImpl.java PartnerRoleMessageExchangeImpl.java
Author: rr
Date: Sat Apr 3 10:46:50 2010
New Revision: 930505
URL: http://svn.apache.org/viewvc?rev=930505&view=rev
Log:
ODE-798: Job failed on REPLY in P2P communication fix
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=930505&r1=930504&r2=930505&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Sat Apr 3 10:46:50 2010
@@ -69,6 +69,7 @@ import org.apache.ode.bpel.iapi.PartnerR
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
+import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
@@ -522,35 +523,40 @@ public class BpelRuntimeContextImpl impl
if (BpelProcess.__log.isDebugEnabled()) {
__log.debug("Replying to a p2p mex, myrole " + m + " - partnerole " + pmex);
}
- try {
- switch (m.getStatus()) {
- case FAILURE:
- // We can't seem to get the failure out of the myrole mex?
- pmex.replyWithFailure(MessageExchange.FailureType.OTHER, "operation failed", null);
- break;
- case FAULT:
- Fault fault = pmex.getOperation().getFault(m.getFault().getLocalPart());
- if (fault == null) {
- __log.error("process " + _bpelProcess + " instance " + _iid + " thrown unmapped fault in p2p communication " + m.getFault() + " " + m.getFaultExplanation() + " - converted to failure");
- pmex.replyWithFailure(MessageExchange.FailureType.OTHER, "process thrown unmapped fault in p2p communication " + m.getFault() + " " + m.getFaultExplanation() + " - converted to failure", m.getFaultResponse().getMessage());
- } else {
- Message faultRes = pmex.createMessage(pmex.getOperation().getFault(m.getFault().getLocalPart())
- .getMessage().getQName());
- faultRes.setMessage(m.getResponse().getMessage());
- pmex.replyWithFault(m.getFault(), faultRes);
- }
- break;
- case RESPONSE:
- Message response = pmex.createMessage(pmex.getOperation().getOutput().getMessage().getQName());
- response.setMessage(m.getResponse().getMessage());
- pmex.reply(response);
- break;
- default:
- __log.warn("Unexpected state: " + m.getStatus());
- break;
+
+ if (pmex.getStatus() == Status.ASYNC || pmex.getStatus() == Status.REQUEST) {
+ try {
+ switch (m.getStatus()) {
+ case FAILURE:
+ // We can't seem to get the failure out of the myrole mex?
+ pmex.replyWithFailure(MessageExchange.FailureType.OTHER, "operation failed", null);
+ break;
+ case FAULT:
+ Fault fault = pmex.getOperation().getFault(m.getFault().getLocalPart());
+ if (fault == null) {
+ __log.error("process " + _bpelProcess + " instance " + _iid + " thrown unmapped fault in p2p communication " + m.getFault() + " " + m.getFaultExplanation() + " - converted to failure");
+ pmex.replyWithFailure(MessageExchange.FailureType.OTHER, "process thrown unmapped fault in p2p communication " + m.getFault() + " " + m.getFaultExplanation() + " - converted to failure", m.getFaultResponse().getMessage());
+ } else {
+ Message faultRes = pmex.createMessage(pmex.getOperation().getFault(m.getFault().getLocalPart())
+ .getMessage().getQName());
+ faultRes.setMessage(m.getResponse().getMessage());
+ pmex.replyWithFault(m.getFault(), faultRes);
+ }
+ break;
+ case RESPONSE:
+ Message response = pmex.createMessage(pmex.getOperation().getOutput().getMessage().getQName());
+ response.setMessage(m.getResponse().getMessage());
+ pmex.reply(response);
+ break;
+ default:
+ __log.warn("Unexpected state: " + m.getStatus());
+ break;
+ }
+ } finally {
+ mex.release(_bpelProcess.isCleanupCategoryEnabled(m.getStatus() == MessageExchange.Status.RESPONSE, CLEANUP_CATEGORY.MESSAGES));
}
- } finally {
- mex.release(_bpelProcess.isCleanupCategoryEnabled(m.getStatus() == MessageExchange.Status.RESPONSE, CLEANUP_CATEGORY.MESSAGES));
+ } else {
+ __log.warn("Can't send response to a p2p mex: " + mex + " partner mex: " + pmex);
}
} else {
checkInvokeExternalPermission();
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java?rev=930505&r1=930504&r2=930505&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java Sat Apr 3 10:46:50 2010
@@ -165,7 +165,7 @@ public class PartnerRoleMessageExchangeI
public String toString() {
try {
return "{PartnerRoleMex#" + getMessageExchangeId() + " [PID " + getCaller() + "] calling " + _epr + "."
- + getOperationName() + "(...)}";
+ + getOperationName() + "(...) Status " + getStatus() + "}";
} catch (Throwable t) {
return "{PartnerRoleMex#????}";