[
http://jira.jboss.com/jira/browse/JBREM-947?page=comments#action_12409702 ]
Ron Sigal commented on JBREM-947:
---------------------------------
ConnectionValidator has been changed so that (1) the invocation whose result is expected
and (2) the test that the result has arrived are performed on separate threads. For
example, before ConnectionValidator.run() makes the invocation, it schedules a
WaitOnConnectionCheckTimerTask, which will wait for up to the configured timeout
milliseconds. One of two things will happen:
1. The invocation returns within the configured timeout window,
WaitOnConnectionCheckTimerTask is notified, and it quietly ends.
2. The invocation does not return within the configured timeout window (and possibly
does not return at all), in which case WaitOnConnectionCheckTimerTask informs all
listeners that a problem has been detected.
ConnectionValidator hangs when server dies
------------------------------------------
Key: JBREM-947
URL:
http://jira.jboss.com/jira/browse/JBREM-947
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 2.2.2.SP7
Reporter: Tim Fox
Assigned To: Ron Sigal
Fix For: 2.4.0.GA
If the connection between client and server is pulled (pull the real cable) or the entire
server suddenly dies, then the connection won't be closed from the server (unlike a
kill -9 of the server where the OS will terminate that processses connections), so the
client making the write() or read() on the socket won't receive an exception.
In the eyes of TCP the connection is still alive and the read/write will block until the
socket timeout is reached.
Typically the socket timeout will be much higher than the desired failure detection time
(the validation interval), but currently failure will never be detected in this situation
before the socket timeout time.
Remoting should not be dependent on the socket timeout for failure detection, the
connetion validation and socket timeout should be possible to be configured separately.
E.g. you might want to configure a socket timeout of 60 seconds, but a connection
validation frequency (ping) of 5 seconds. Currently this is not possible.
The current implementation gives inconsistent behaviour depending on how the server died
- i.e. whether the process died (e.g. kill -9) or the cable was pulled or the entire
server disappeared.
--
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