[jboss-dev-forums] [Design of JBoss Remoting, Unified Invokers] - Re: Bisocket server invoker NPE

ron.sigal@jboss.com do-not-reply at jboss.com
Thu Mar 15 02:26:11 EDT 2007


anonymous wrote : 
  | So you just need to add a sychronized stop() method to the TimerTask which calls cancel() and make sure you call this from your code - take a look at org.jboss.messaging.core.plugin.postoffice.cluster.StatsSender which does something very similar. 
  | 

Coincidentally, I added just this sort of thing when I was working on the memory leaks over the weekend, but, now that you brought it up again, I realize that it's not a good idea, in this particular case.  ControlMonitorTimerTask.shutdown() is called indirectly from Client.removeListener(), and if ControlMonitorTimerTask.run() were synchronized, shutdown could get hung up waiting for run() to do network i/o on failed servers, undermining the "quick removeListener()" facility.  I think the right strategy is just to accept the possibility of a race and handle it gracefully.  So I've put just enough synchronization in run() to avoid NPE's.

anonymous wrote : 
  | Is a warning message really appropriate? A warning would imply something wrong or strange - but this is to be expected. 
  | 

Fair enough.  Now that races are anticipated, I've downgraded the "missing client invoker" messages to DEBUG.

anonymous wrote : 
  | FailoverValve is not currently used so I wouldn't worry too much about this. We need to address this in the test suite.
  | 

Now you tell me :-)  Good, I feel better now.

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

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



More information about the jboss-dev-forums mailing list