Author: heshan Date: Tue Jul 19 11:27:17 2011 New Revision: 1148275 URL: http://svn.apache.org/viewvc?rev=1148275&view=rev Log: Fixing an issue where, if a timeout action is not set, it will cause some issues at server restart. A sample configuration to reproduce the issue can be found below. This patch fixes this issue.
eg. <endpoint xmlns="http://ws.apache.org/ns/synapse" name="FindService"> <address uri="http://localhost:9443/services/search/FindingService/v1" format="rest"> <timeout> <duration>60000</duration> </timeout> <suspendOnFailure> <errorCodes>101509,101503,101507,101508</errorCodes> <initialDuration>1000</initialDuration> <progressionFactor>2.0</progressionFactor> <maximumDuration>64000</maximumDuration> </suspendOnFailure> <markForSuspension> <retriesBeforeSuspension>10</retriesBeforeSuspension> <retryDelay>2</retryDelay> </markForSuspension> </address> </endpoint> Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionSerializer.java Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java?rev=1148275&r1=1148274&r2=1148275&view=diff ============================================================================== --- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java (original) +++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java Tue Jul 19 11:27:17 2011 @@ -179,6 +179,14 @@ public class EndpointDefinitionFactory i if (definition.getTimeoutDuration() == 0) { definition.setTimeoutDuration(30000); } + } else if ("".equalsIgnoreCase(actionString.trim())) { + // if the timeout action is empty, then the action is set to DISCARD_AND_FAULT + definition.setTimeoutAction(SynapseConstants.DISCARD_AND_FAULT); + + // set timeout duration to 30 seconds, if it is not set explicitly + if (definition.getTimeoutDuration() == 0) { + definition.setTimeoutDuration(30000); + } } else { handleException("Invalid timeout action, action : " + actionString + " is not supported"); Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionSerializer.java URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionSerializer.java?rev=1148275&r1=1148274&r2=1148275&view=diff ============================================================================== --- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionSerializer.java (original) +++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionSerializer.java Tue Jul 19 11:27:17 2011 @@ -121,11 +121,12 @@ public class EndpointDefinitionSerialize OMElement action = fac.createOMElement("responseAction", SynapseConstants.SYNAPSE_OMNAMESPACE); if (endpointDefinition.getTimeoutAction() == SynapseConstants.DISCARD) { action.setText("discard"); + timeout.addChild(action); } else if (endpointDefinition.getTimeoutAction() == SynapseConstants.DISCARD_AND_FAULT) { action.setText("fault"); + timeout.addChild(action); } - timeout.addChild(action); } if (endpointDefinition.getInitialSuspendDuration() != -1 ||
