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#????}";