[jboss-remoting-issues] [JBoss JIRA] Updated: (JBREM-956) Client side does not detect connection drop when LeasePinger is active, therefore remaining blocked.
Guy Nir (JIRA)
jira-events at lists.jboss.org
Thu Apr 3 04:24:29 EDT 2008
[ http://jira.jboss.com/jira/browse/JBREM-956?page=all ]
Guy Nir updated JBREM-956:
--------------------------
Summary: Client side does not detect connection drop when LeasePinger is active, therefore remaining blocked. (was: Client side does not detect connection drop when LeasePinger is active.)
> Client side does not detect connection drop when LeasePinger is active, therefore remaining blocked.
> ----------------------------------------------------------------------------------------------------
>
> Key: JBREM-956
> URL: http://jira.jboss.com/jira/browse/JBREM-956
> Project: JBoss Remoting
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: transport
> Affects Versions: 2.2.0.GA (Bluto), 2.2.1.GA, 2.2.2.GA, 2.2.2.SP1, 2.2.2.SP2
> Environment: JBoss 4.2.1, Windows XP SP2, Redhat Enterprise Linux 3.0
> Reporter: Guy Nir
>
> When a client and server resides on different machines and server suddenly disconnected from the network (i.e.: cable disconnected or host is cord-reseted/power down brutely) the client side does not recognize this situation and remains blocking.
> The main reason for this behavior is that TCP does not provide direct indication that a connection is dropped (unless a probe such as KeepAlive is activated).
> The LeasePinger class should resolve this issue, however, the invocation of sendClientPing() method remains blocking as well.
> A different shorter timeout should be placed for sendClientPing() (perhaps timeout-per-invocation approach ?).
> For example, instead of using the following implementation (taken from sendClientPing) :
> Map clientsClone = new ConcurrentHashMap(clients);
> Map requestClients = new ConcurrentHashMap();
> requestClients.put(ClientHolder.CLIENT_HOLDER_KEY, clientsClone);
> InvocationRequest ir = new InvocationRequest(invokerSessionID, null, "$PING$", requestClients, null, null);
> invoker.invoke(ir);
> It is possible to use:
> int clientPingLeaseTimeout = ......;
> Map clientsClone = new ConcurrentHashMap(clients);
> Map requestClients = new ConcurrentHashMap();
> requestClients.put(ClientHolder.CLIENT_HOLDER_KEY, clientsClone);
> requestClients.put(ServerInvoker.TIMEOUT, clientPingLeaseTimeout);
> InvocationRequest ir = new InvocationRequest(invokerSessionID, null, "$PING$", requestClients, null, null);
> invoker.invoke(ir);
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-remoting-issues
mailing list