Author: rajdavies
Date: Tue Feb 20 06:26:27 2007
New Revision: 509575

URL: http://svn.apache.org/viewvc?view=rev&rev=509575
Log:
Add some additional crude throttling. With cursors being limited by how much 
they can
can page into memory as well as the producer, you can get live locks around 
space usage -
if the allocation reaches 100%

Modified:
    
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java

Modified: 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java?view=diff&rev=509575&r1=509574&r2=509575
==============================================================================
--- 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
 (original)
+++ 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
 Tue Feb 20 06:26:27 2007
@@ -90,6 +90,9 @@
             for( int i=0; percentUsage >= 100 ; i++) {
                 usageMutex.wait();
             }
+            for( int i=0; percentUsage > 90 ; i++) {
+                usageMutex.wait(100);
+            }
         }
     }
     
@@ -246,15 +249,16 @@
         // Switching from being full to not being full..
         if( oldPercentUsage >= 100 && newPercentUsage < 100 ) {
             synchronized (usageMutex) {
+                System.err.println("Memory usage change.  from: 
"+oldPercentUsage+", to: "+newPercentUsage);
                 usageMutex.notifyAll();
             }            
         }
-        
-        // Let the listeners know
+//      Let the listeners know
         for (Iterator iter = listeners.iterator(); iter.hasNext();) {
             UsageListener l = (UsageListener) iter.next();
             l.onMemoryUseChanged(this, oldPercentUsage, newPercentUsage);
         }
+       
     }
 
     public String toString() {


Reply via email to