You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.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