You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by xuhongbo <xu...@tongtech.com> on 2008/02/26 05:13:01 UTC

network break down doesn't immediately cause Client request failure

Recently , I found out that while synapse relaying the request from client to another axis server, if the network break down, client will never received failure immediatly. It always failed while it's own timeout exceed or synapse's internal timeout exceed;

scenarios:

Using http porotocol;
axisClient<-->synapse <--> axisServer

1) axisClient send request to synapse
2) syanpse relay request to axisServer
3) network between synapse and axisServer breakdown(or just shutdown axisServer)
4) axisClient doens't failure immediatly, It's alway's failure when it's timeout exceed;


The more details reson I have find out is:

When network breakdown(or axisServer shutdown),  org.apache.synapse.transport.nhttp.ClientHandler's corresponding callback handler is invoked (onClose(), or onException(),...) . and the callback only just shutdown the connection.

But the sessionRequestCallback(HttpCoreNIOSender.sessionRequestCallback) registed when establish http connection(ioreactor.connect(...)) will never be called. so the failure response will not be generated and send back to axisClient.

And is there any other things could I do to avoid this situation?



Re: network break down doesn't immediately cause Client request failure

Posted by "Asankha C. Perera" <as...@wso2.com>.
Hi xuhongbo

Let us know when you are subscribed to the dev and/or user lists of
Synapse, since otherwise you will not receive our replies

asankha

xuhongbo wrote:
> Recently ,I found out that while synapse relaying the request from
> client to another axis server, if the network break down, client will
> never received failure immediatly. It always failed while it's own
> timeout exceed or synapse's internal timeout exceed;
> scenarios:
> Using http porotocol;
> axisClient<-->synapse <--> axisServer
> 1) axisClient send request to synapse
> 2) syanpse relay request to axisServer
> 3) network between synapse and axisServer breakdown(or just shutdown
> axisServer)
> 4) axisClient doens't failure immediatly, It's alway's failure when
> it's timeout exceed;
> The more details reson I have find out is:
> When network breakdown(or axisServer shutdown),
> org.apache.synapse.transport.nhttp.ClientHandler's corresponding
> callback handler is invoked (onClose(), oronException(),...) . and the
> callback only just shutdown the connection.
> But the
> sessionRequestCallback(HttpCoreNIOSender.sessionRequestCallback)
> registed when establish http connection(ioreactor.connect(...)) will
> never be called. so the failure response will not be generated and
> send back to axisClient.
> And is there any other things could I do to avoid this situation?