-
Feature Request
-
Resolution: Done
-
Major
-
None
-
None
When we have virtualized instances, powering them down means in some cases that the instance is simply stopped, and no shutdown scripts (e.g. in /etc/rc0.d) are run. Examples are vmware ("power off") and EC2 ("terminate"). Another example is a hung client.
This is the equivalent of pulling the plug on a physical box: no TCP connections will be closed.
This poses a problem for the GossipRouter because it only removes clients when they close their sockets.
I suggest we re-introduce pinging, similar to what we used to do for older versions.
RouterStub:
- When connected, periodically send a PING request (this already exists (GossipRouter.PING)); this could be scheduled as a task
- When disconnected and the reconnector task is running, don't send the PING
GossipRouter:
- When a PING is received, update the ConnectionHandler's timestamp
- Run a periodic task which iterates over all connections and closes connections which are older than TIMEOUT milliseconds
Adding this functionality to GossipRouter is important, as GossipRouter is used together with TCPGOSSIP to run JBoss AS in cloud environments, where virtualized instances are regularly powered down or terminated without running shutdown scripts or closing sockets.