[
https://issues.apache.org/jira/browse/SYNAPSE-540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jarosław Bałut updated SYNAPSE-540:
-----------------------------------
Attachment: client.zip
.NET based client of the Axis2 Version service
> A race condition between Axis2HttpRequest and ClientHandler nhttp transport
> classes causes unreliable message delivery
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: SYNAPSE-540
> URL: https://issues.apache.org/jira/browse/SYNAPSE-540
> Project: Synapse
> Issue Type: Bug
> Components: Transports
> Affects Versions: 1.2, NIGHTLY
> Environment: Seen on: Windows XP, Windows Vista, Sun Java 5 update
> 18, Sun Java 6 update 13, .NET framework 3.5, Tomcat 6.0.18
> Reporter: Jarosław Bałut
> Attachments: client.zip
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> Environment
> 1. Service "Version" from the axis2.war taken from the 1.4.1 release deployed
> in Tomcat 6.0.18.
> 2. Proxy service configured in the Synapse 1.2 release.
> 3. Client implemented using .NET 3.5 WCF.
> Symptoms
> From time to time the client invoking a method of the "Version" service hangs
> until the timeout occurs.
> Analysis
> When a request arriving at the proxy service in Synapse is transmitted over
> the nhttp transport a race condition occurs between a thread executing the
> Axis2HttpRequest.streamMessageContents method and a thread executing the
> ClientHandler.responseReceived method. After HTTP headers are transmitted to
> Tomcat the server replies with the "100 Continue" message. This response is
> handled by the ClientHandler.responseReceived method, which (regardless of
> the status code) sets the "completed" flag of the handled request to "true".
> If this happens before the Axis2HttpRequest.streamMessageContents method in
> the sending thread
> actually sends the request, the server never gets it. It waits until a
> timeout occurs and sends the "500 Internal Server Error" message. This causes
> the proxy in Synapse to wait until the keep-alive connection is closed and
> reply with a fault.
> I provide the .NET based client for testing purposes (calling the proxy
> service from an Axis2 based client causes the problem to appear much less
> frequently).
> I attach the trace log from Synapse 1.2 (built from the 662321 revision of
> the ClientHandler.java) and from WSO2 ESB 2.0.2 (which is based on a build of
> Synapse including the slightly modified 708800 revision of the
> ClientHandler.java).
> I also suggest patches for the 662321 revision and for the so far latest
> revision in the trunk - 761507.
> This problem applies to the 1.2 release and to the trunk version.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]