You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by "Asankha C. Perera (JIRA)" <ji...@apache.org> on 2008/03/11 13:30:47 UTC
[jira] Resolved: (SYNAPSE-247) Network exception caused
Synapse-Http-Transport Stop working
[ https://issues.apache.org/jira/browse/SYNAPSE-247?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Asankha C. Perera resolved SYNAPSE-247.
---------------------------------------
Resolution: Fixed
Fix Version/s: NIGHTLY
Assignee: Asankha C. Perera
Applied patch from https://issues.apache.org/jira/browse/SYNAPSE-248 with some minor changes
Thanks xuhongbo, can you please verify that everything works as expected now?
> Network exception caused Synapse-Http-Transport Stop working
> ------------------------------------------------------------
>
> Key: SYNAPSE-247
> URL: https://issues.apache.org/jira/browse/SYNAPSE-247
> Project: Synapse
> Issue Type: Bug
> Components: Transports
> Affects Versions: 1.1.1
> Reporter: xuhongbo
> Assignee: Asankha C. Perera
> Priority: Critical
> Fix For: NIGHTLY
>
>
> Test:
> axisClient-->Synapse--->axisServer(not started)
> Appearance:
> If running synapse in debugging mode, we will see once a axisClient connect to synapse,
> a new HttpServerWorker-Thread will be created, but never stop, and soon the thread-pool will be exhaused;
> Step:
> 1) axisClient send a request to synapse (the request's content must be large enough( etc exceed 1024 character))
> 2) synapse relay the request from axisClient to a not started axisServer
> 3) then synapse will blocked while axis2Req.streamContents(), and the thread will be blocked
>
>
> Description:
> /*
> axisReq using a internal Channel to transfer streamed data of axis request to Http underlying encoder for transport
> so if the request content is larger than channel's internal buffer, streamMessageContents() will blocked and
> waiting the successfully http-connection to read the data from channel.
> */
> Axis2HttpRequest.streamMessageContents(){
> OutputStream out = Channels.newOutputStream(pipe.sink()); //pipe is
> ...
> }
> ClientHandler.outputReady(...){
> //read data from channel
> //write readed data to http-core-nio's underlying encoder
> }
> /*
> But if http-connection failed, ClientHandler's callback cactch it and just shutdown httpConnection only.
> the streamMessageContents() will blocked for ever
> */
> ClientHandler:
> public void exception(final NHttpClientConnection conn, final IOException e) {
> shutdownConnection(conn);
> }
> HttpCoreNIOSender:
> private void sendAsyncRequest(EndpointReference epr, MessageContext msgContext) throws AxisFault {
> ...............
> axis2Req.streamMessageContents();
> ....
> }
--
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: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org