You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by az...@apache.org on 2008/01/14 22:15:40 UTC

svn commit: r611937 - /webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AtMostOnceInterceptor.java

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: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org