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?


Reply via email to