[ 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to