[
https://issues.apache.org/jira/browse/SYNAPSE-344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12602308#action_12602308
]
Asankha C. Perera commented on SYNAPSE-344:
-------------------------------------------
Jake
Can you test this against the latest codebase set to be released shortly..
steps and any material to recreate would always be good to have
asankha
> Race condition on connection reuse causes 'Request already submitted'
> exception
> -------------------------------------------------------------------------------
>
> Key: SYNAPSE-344
> URL: https://issues.apache.org/jira/browse/SYNAPSE-344
> Project: Synapse
> Issue Type: Bug
> Components: Transports
> Affects Versions: 1.1.1
> Environment: All environments
> Reporter: Jake Lambert
> Priority: Critical
>
> When using a proxy service and HTTP-NIO with a moderate number of concurrent
> requests some requests fail with the following error:
> HttpServerWorker-25: Unexpected HTTP protocol error: Request already submitted
> org.apache.http.HttpException: Request already submitted
> at
> org.apache.http.impl.nio.DefaultNHttpClientConnection.submitRequest(DefaultNHttpClientConnection.java:203)
> at
> org.apache.synapse.transport.nhttp.ClientHandler.submitRequest(ClientHandler.java:142)
> at
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.sendAsyncRequest(HttpCoreNIOSender.java:340)
> at
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.invoke(HttpCoreNIOSender.java:256)
> at
> com.alcatel.grizzly.mw.transport.WSGHttpTransportSender.invoke(WSGHttpTransportSender.java:171)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
> at
> org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:190)
> at
> org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:174)
> at
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
> at
> com.alcatel.grizzly.synapse.custom.WsgFlexibleMEPClient.send(WsgFlexibleMEPClient.java:284)
> at
> com.alcatel.grizzly.synapse.custom.WsgSynapseEnvironment.send(WsgSynapseEnvironment.java:34)
> at
> org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:195)
> at
> com.alcatel.grizzly.synapse.custom.WsgAddressEndpoint.send(WsgAddressEndpoint.java:68)
> at
> org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:157)
> at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
> at
> org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:158)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
> at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
> at
> org.apache.synapse.transport.nhttp.ServerWorker.processPost(ServerWorker.java:238)
> at
> org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:194)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> This can occur in a situation similar to that in SYNAPSE-341 (remote WS
> returns its response before the request is fully written). It's due to a
> race condition when reusing a connection between a client I/O dispatcher
> thread calling NHttpClientConnection.resetOutput() when the request writing
> is complete and an HttpServerWorker thread calling
> NHttpClientConnection.submitRequest() on the same pooled connection after it
> has been released when the response reading is complete.
--
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]