synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hubert, Eric" <Eric.Hub...@foxmobile.com>
Subject RE: Endless recursion in FaultHandler.handleFault()
Date Sun, 19 Apr 2009 11:39:05 GMT
Hi all,

 

As no one beat me to it, I tracked down this issue to the following change to the onFault()
method of AddressEndpoint:

 

/**

  * This class represents an actual endpoint to send the message. It is responsible for sending
the

@@ -35,22 +31,32 @@

 

     public void onFault(MessageContext synCtx) {

 

-        // is this really a fault or a timeout/connection close etc?

-        if (isTimeout(synCtx)) {

-            getContext().onTimeout();

-        } else if (isSuspendFault(synCtx)) {

-            getContext().onFault();

+        // is this an actual leaf endpoint 

+        if (getParentEndpoint() != null) {

+            // is this really a fault or a timeout/connection close etc?

+            if (isTimeout(synCtx)) {

+                getContext().onTimeout();

+            } else if (isSuspendFault(synCtx)) {

+                getContext().onFault();

+            }

         }

 

The added null-check of the parent endpoint causes this trouble. The parent endpoint of my
address endpoint is always null, thus the EndpointContext.onFault() gets never executed and
we run endless circles.

 

Removing this check, resolves the issue for me, but according to the commit message this seems
to be done on purpose to fix another issue…

 

Here are the details of the change:

 

Revision: 727648

Author: indika

Date: 06:38:32, Thursday, 18. Dec 2008

Message:

Fixed an issue - JMX switch off doesn’t work due to a leaf level endpoint (wsdl / address)
become root endpoint too (when there are only address or wsdl endpoint - no LB or FO endpoint
with address endpoints as children).

 

----

Modified : /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java

Modified : /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java

Modified : /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java

Modified : /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java

Modified : /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java

 

 

Regards,

   Eric

 

 

________________________________

From: Hubert, Eric [mailto:Eric.Hubert@foxmobile.com] 
Sent: Saturday, April 18, 2009 7:20 PM
To: dev@synapse.apache.org
Subject: RE: Endless recursion in FaultHandler.handleFault()

 

Hi all,

 

I'm still facing an issue which looks like a recursion (not the same), if the endpoint url
is a non existing one resulting in a connection refused.

 

Here is my endpoint config:

  <syn:endpoint name="servicename#1.0#lbgroupname#A1###myhost">

    <syn:address uri="some_non_existing_url" statistics="false">

      <syn:timeout>

        <syn:duration>120000</syn:duration>

        <syn:action>fault</syn:action>

      </syn:timeout>

      <syn:markForSuspension>

        <syn:retriesBeforeSuspend>3</syn:retriesBeforeSuspend>

        <syn:retryDelay>500</syn:retryDelay>

      </syn:markForSuspension>

      <syn:suspendOnFailure>

        <syn:initialDuration>100</syn:initialDuration>

        <syn:progressionFactor>3</syn:progressionFactor>

        <syn:maximumDuration>300000</syn:maximumDuration>

      </syn:suspendOnFailure>

    </syn:address>

  </syn:endpoint>

 

[...]

[HttpClientWorker-7] WARN  FaultHandler - ERROR_CODE : 101503 ERROR_MESSAGE : Connection refused
or failed for : myhost:6003 

[HttpClientWorker-7] DEBUG AxisService - Get operation for anonOutInOp 

[HttpClientWorker-7] DEBUG AxisService - Found axis operation:  org.apache.synapse.core.axis2.DynamicAxisOperation@2720f6


[HttpClientWorker-7] DEBUG ConfigurationContext - registerOperationContext (false): org.apache.axis2.context.OperationContext@16a9d0a
with key: urn:uuid:EEC7CAA6BBD62D98F91240074657255 

[HttpClientWorker-7] DEBUG SandeshaModule$1 - Unsetting USE_ASYNC_OPERATIONS and DISABLE_RESPONSE_ACK
for unreliable message 

[HttpClientWorker-7] DEBUG SandeshaModule$1 - Entry: SandeshaModule::resolveTarget 

[HttpClientWorker-7] DEBUG SandeshaUtil - Entry: SandeshaUtil::isMessageUnreliable 

[HttpClientWorker-7] DEBUG SandeshaUtil - Exit: SandeshaUtil::isMessageUnreliable, false 

[HttpClientWorker-7] DEBUG SandeshaModule$1 - Exit: SandeshaModule::resolveTarget 

[HttpClientWorker-7] DEBUG ConfigurationContext - registerOperationContext (false): org.apache.axis2.context.OperationContext@16a9d0a
with key: urn:uuid:EEC7CAA6BBD62D98F91240074657255 

[HttpClientWorker-7] DEBUG ConfigurationContext - msgContext: [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
action:  

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "soapmonitorPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "soapmonitorPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "soapmonitorPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "OperationOutPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "OperationOutPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "OperationOutPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "RMPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "RMPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "RMPhase" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "PolicyDetermination" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "PolicyDetermination" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "PolicyDetermination" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "MessageOut" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "MessageOut" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking Handler 'AddressingOutHandler' in Phase 'MessageOut' 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "MessageOut" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking pre-condition for Phase "Security" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Invoking phase "Security" 

[HttpClientWorker-7] DEBUG Phase - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
Checking post-conditions for phase "Security" 

[HttpClientWorker-7] DEBUG AddressingHelper - [MessageContext: logID=urn:uuid:EEC7CAA6BBD62D98F91240074679600]
isReplyRedirected: ReplyTo is null. Returning false 

[HttpClientWorker-10] DEBUG SandeshaModule$1 - Unsetting USE_ASYNC_OPERATIONS and DISABLE_RESPONSE_ACK
for unreliable message 

[HttpClientWorker-10] DEBUG SandeshaModule$1 - Entry: SandeshaModule::resolveTarget 

[HttpClientWorker-10] DEBUG SandeshaUtil - Entry: SandeshaUtil::isMessageUnreliable 

[HttpClientWorker-10] DEBUG SandeshaUtil - Exit: SandeshaUtil::isMessageUnreliable, false


[HttpClientWorker-10] DEBUG SandeshaModule$1 - Exit: SandeshaModule::resolveTarget 

[HttpClientWorker-10] DEBUG OMNodeImpl - Builder is already complete. 

[HttpClientWorker-10] WARN  FaultHandler - ERROR_CODE : 101503 ERROR_MESSAGE : Connection
refused or failed for : pls-svc-2.uat.jamba.net:6003 

[HttpClientWorker-10] DEBUG AxisService - Get operation for anonOutInOp

[...]

 

Any ideas? Otherwise I will try to dig into this if I find the time.

 

Regards,

   Eric

Mime
View raw message