https://issues.apache.org/jira/browse/AMQ-4832 - apply patch from Matthew 
Walker with thanks


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/8a9ea481
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/8a9ea481
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/8a9ea481

Branch: refs/heads/activemq-5.9
Commit: 8a9ea481fda02ae2cc2e80595e47d536a8f64542
Parents: 7ec13f2
Author: gtully <[email protected]>
Authored: Thu Oct 31 21:16:17 2013 +0000
Committer: Hadrian Zbarcea <[email protected]>
Committed: Tue Mar 11 21:19:23 2014 -0400

----------------------------------------------------------------------
 .../java/org/apache/activemq/broker/BrokerService.java    | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/8a9ea481/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
----------------------------------------------------------------------
diff --git 
a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java 
b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
index eecab9d..575e313 100644
--- 
a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
+++ 
b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
@@ -1908,14 +1908,16 @@ public class BrokerService implements Service {
                     dir = dir.getParentFile();
                 }
                 long storeLimit = usage.getStoreUsage().getLimit();
+                long storeCurrent = usage.getStoreUsage().getUsage();
                 long dirFreeSpace = dir.getUsableSpace();
-                if (storeLimit > dirFreeSpace) {
+                if (storeLimit > (dirFreeSpace + storeCurrent)) {
                     LOG.warn("Store limit is " + storeLimit / (1024 * 1024) +
-                             " mb, whilst the data directory: " + 
dir.getAbsolutePath() +
+                             " mb (current store usage is " + storeCurrent / 
(1024 * 1024) +
+                             " mb). The data directory: " + 
dir.getAbsolutePath() +
                              " only has " + dirFreeSpace / (1024 * 1024) +
                              " mb of usable space - resetting to maximum 
available disk space: " +
-                            dirFreeSpace / (1024 * 1024) + " mb");
-                    usage.getStoreUsage().setLimit(dirFreeSpace);
+                            (dirFreeSpace + storeCurrent) / (1024 * 1024) + " 
mb");
+                    usage.getStoreUsage().setLimit(dirFreeSpace + 
storeCurrent);
                 }
             }
 

Reply via email to