[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/callback ...

Ron Sigal ron_sigal at yahoo.com
Sat Oct 28 15:15:20 EDT 2006


  User: rsigal  
  Date: 06/10/28 15:15:20

  Modified:    src/main/org/jboss/remoting/callback  CallbackPoller.java
  Log:
  JBREM-605, JBREM-610, JBREM-617:
  
  (1) [JBREM-605, JBREM-610] Changed call to Client.acknowledgeCallback() to Client.acknowledgeCallbacks().  Also, added a continue to AcknowledgeThread.run() to prevent a possible NullPointerException.
  (2) [JBREM-617] Changed to use separate Timer thread.
  
  Revision  Changes    Path
  1.5       +25 -6     JBossRemoting/src/main/org/jboss/remoting/callback/CallbackPoller.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CallbackPoller.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/callback/CallbackPoller.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- CallbackPoller.java	12 Oct 2006 05:04:50 -0000	1.4
  +++ CallbackPoller.java	28 Oct 2006 19:15:20 -0000	1.5
  @@ -24,6 +24,7 @@
   import java.util.ArrayList;
   import java.util.List;
   import java.util.Map;
  +import java.util.Timer;
   import java.util.TimerTask;
   
   import org.jboss.logging.Logger;
  @@ -52,6 +53,7 @@
      private Map metadata = null;
      private Object callbackHandlerObject = null;
      private long pollPeriod = DEFAULT_POLL_PERIOD;
  +   private Timer timer;
      
      private ArrayList toHandleList = new ArrayList();
      private ArrayList toAcknowledgeList = new ArrayList();
  @@ -111,7 +113,12 @@
         handleThread = new HandleThread();
         handleThread.start();
   
  -      TimerUtil.schedule(this, pollPeriod);
  +      timer = new Timer(true);
  +      
  +      // If CallbackPoller is getting behind, it's probably because it's getting a burst
  +      // of callbacks.  Calling scheduleAtFixedRate() will cause the task to be run
  +      // extra times to accomodate the increase load.  See JBREM-618.
  +      timer.scheduleAtFixedRate(this, pollPeriod, pollPeriod);
   
      }
   
  @@ -143,13 +150,21 @@
         cancel();
         client = null;
         callbackHandler = null;
  +      if (handleThread != null)
  +      {
         handleThread.shutdown();
         handleThread = null;
  +      }
         if (acknowledgeThread != null)
         {
            acknowledgeThread.shutdown();
            acknowledgeThread = null;
         }
  +      if (timer != null)
  +      {
  +         timer.cancel();
  +         timer = null;
  +      }
      }
      
      class HandleThread extends Thread
  @@ -172,6 +187,7 @@
                     catch (InterruptedException e)
                     {
                        log.warn("unexpected interrupt");
  +                     continue;
                     }
                  }
                  callback = (Callback) toHandleList.remove(0);
  @@ -201,6 +217,7 @@
      {
         boolean running = true;
         Callback callback;
  +      ArrayList callbacksCopy = new ArrayList();
         
         public void run()
         {
  @@ -220,12 +237,14 @@
                        continue;
                     }
                  }
  -               callback = (Callback) toAcknowledgeList.remove(0);
  +               callbacksCopy.addAll(toAcknowledgeList);
  +               toAcknowledgeList.clear();
               }
               
               try
               {
  -               client.acknowledgeCallback(callbackHandler, callback);
  +               client.acknowledgeCallbacks(callbackHandler, callbacksCopy);
  +               callbacksCopy.clear();
               }
               catch (Throwable t)
               {
  
  
  



More information about the jboss-cvs-commits mailing list