synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruwan Linton <ruwan.lin...@gmail.com>
Subject Re: Endless recursion in FaultHandler.handleFault()
Date Mon, 20 Apr 2009 05:27:15 GMT
Seems like a missing case, in the Indika's commit he is considering either
an LB or FO group child as endpoint where as, this case also is a valid root
level endpoint.

I will have a further look at this.

Thanks,
Ruwan

On Sun, Apr 19, 2009 at 5:09 PM, Hubert, Eric <Eric.Hubert@foxmobile.com>wrote:

>  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
>



-- 
Ruwan Linton
Senior Software Engineer & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com

Mime
View raw message