Author: azeez
Date: Mon Jan 14 13:15:38 2008
New Revision: 611937

URL: http://svn.apache.org/viewvc?rev=611937&view=rev
Log:
The cleanup thread should not take up too much time, and should be a low 
priority thread


Modified:
    
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java

Modified: 
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java?rev=611937&r1=611936&r2=611937&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java
 Mon Jan 14 13:15:38 2008
@@ -37,7 +37,7 @@
     /**
      * The time a message lives in the receivedMessages Map
      */
-    private static final int TIMEOUT = 60 * 1000;
+    private static final int TIMEOUT = 5 * 60 * 1000;
 
     public AtMostOnceInterceptor() {
         Thread cleanupThread = new Thread(new MessageCleanupTask());
@@ -67,6 +67,7 @@
                 }
                 try {
                     List toBeRemoved = new ArrayList();
+                    Thread.yield();
                     synchronized (receivedMessages) {
                         for (Iterator iterator = 
receivedMessages.keySet().iterator();
                              iterator.hasNext();) {
@@ -74,17 +75,16 @@
                             long arrivalTime = ((Long) 
receivedMessages.get(msg)).longValue();
                             if (System.currentTimeMillis() - arrivalTime >= 
TIMEOUT) {
                                 toBeRemoved.add(msg);
+                                if(toBeRemoved.size() > 10000){ // Do not 
allow this thread to run for too long
+                                    break;
+                                }
                             }
                         }
-                        long start = System.currentTimeMillis();
                         for (Iterator iterator = toBeRemoved.iterator(); 
iterator.hasNext();) {
                             ChannelMessage msg = (ChannelMessage) 
iterator.next();
                             receivedMessages.remove(msg);
                             if (log.isDebugEnabled()) {
                                 log.debug("Cleaned up message ");
-                            }
-                            if(System.currentTimeMillis() - start > 30000){
-                                break;
                             }
                         }
                     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to