[jboss-user] [Remoting] - Re: Race condition in ConnectionValidator

ron.sigal@jboss.com do-not-reply at jboss.com
Mon Mar 9 21:41:28 EDT 2009


"thammoud" wrote : 
  | if we restart the server from under the client and the server comes back in less time than the ping period (Very possible), then the client's JMS connection listener does not get called yet the connection is invalid. 
  | 

Hmmm.  I think what you're seeing is due to the fact that the socket transport uses a connection pool.  If you shut down the server gracefully, the client should detect that existing connections are stale, and the next invocation by ConnectionValidator should get a new connection to the new server and, since the invocation succeeds, there's no notification.

But the JBM client should experience the same behavior.  Are you actually seeing a case where "the client's JMS connection listener does not get called yet the connection is invalid" ?

By the way, I have a couple of problems with your proposed fix.

"thammoud" wrote : 
  | Make the tt (WaitOnConnectionCheckTimerTask) a class member (Must be volatile).
  | 

There could be multiple instances of ConnectionValidator in the same JVM, each connected to a different server.

"thammoud" wrote : 
  | Add while(tt != null) {} 
  | 

NO BUSY WAITS!!! :)

Anyway, if you set validatorPingPeriod to be longer than validatorPingTimeout, I don't think that would be necessary.

-Ron

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4216412#4216412

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4216412



More information about the jboss-user mailing list