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