Clebert Suconic wrote:
> You have this scenario:
> - Client is paused for 1 minute (say... a huge GC for example)
> - Server will invalidate that client (and close server side's objects)
> - Client comes back alive... it will then resume pings...
> - Nothing will invalidate the client, and the client became isolated).
This isn't a Remoting bug. What you have described is Remoting behaving correctly, according to the current design.
1. On the server side, the lease mechanism can inform the application that the client is "unavailable".
2. On the client side, the ConnectionValidator can inform the application that the server is "unavailable".
One side or the other could be unavailable either because (1) it died or because (2) the network isn't functioning. In the first case, it doesn't make sense for one side to inform the other side of the failure, because there's no one on the other side to talk to. In the second case, both sides should see and report the same failure.
In the scenario you've described, the client isn't really unavailable - the apparent failure is just a timing artifact. The solution is to change the timing. I.e., extend the lease period.
If leasing is enabled on the server side, org.jboss.remoting.ServerInvoker, which responding to a PING from org.jboss.remoting.ConnectionValidator, should indicate if the lease is still alive.