mirror of https://github.com/apache/activemq.git
additional fix for: https://issues.apache.org/jira/browse/AMQ-3573
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1235325 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dbc661fd9b
commit
7b90f4178f
|
@ -440,16 +440,16 @@ public class BrokerService implements Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Forces a start of the broker.
|
* Forces a start of the broker.
|
||||||
* By default a BrokerService instance that was
|
* By default a BrokerService instance that was
|
||||||
* previously stopped using BrokerService.stop() cannot be restarted
|
* previously stopped using BrokerService.stop() cannot be restarted
|
||||||
* using BrokerService.start().
|
* using BrokerService.start().
|
||||||
* This method enforces a restart.
|
* This method enforces a restart.
|
||||||
* It is not recommended to force a restart of the broker and will not work
|
* It is not recommended to force a restart of the broker and will not work
|
||||||
* for most but some very trivial broker configurations.
|
* for most but some very trivial broker configurations.
|
||||||
* For restarting a broker instance we recommend to first call stop() on
|
* For restarting a broker instance we recommend to first call stop() on
|
||||||
* the old instance and then recreate a new BrokerService instance.
|
* the old instance and then recreate a new BrokerService instance.
|
||||||
*
|
*
|
||||||
* @param force - if true enforces a restart.
|
* @param force - if true enforces a restart.
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
|
@ -1673,34 +1673,45 @@ public class BrokerService implements Service {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void checkSystemUsageLimits() throws IOException {
|
protected void checkSystemUsageLimits() throws IOException {
|
||||||
SystemUsage usage = getSystemUsage();
|
SystemUsage usage = getSystemUsage();
|
||||||
long memLimit = usage.getMemoryUsage().getLimit();
|
long memLimit = usage.getMemoryUsage().getLimit();
|
||||||
long jvmLimit = Runtime.getRuntime().maxMemory();
|
long jvmLimit = Runtime.getRuntime().maxMemory();
|
||||||
if (memLimit > jvmLimit){
|
if (memLimit > jvmLimit) {
|
||||||
LOG.error("Memory Usage for the Broker (" + memLimit/(1024*1024) + " mb) is more than the maximum available for the JVM: " + jvmLimit/(1024*1024) + " mb" );
|
LOG.error("Memory Usage for the Broker (" + memLimit / (1024 * 1024) +
|
||||||
|
" mb) is more than the maximum available for the JVM: " +
|
||||||
|
jvmLimit / (1024 * 1024) + " mb");
|
||||||
}
|
}
|
||||||
if (getPersistenceAdapter() != null){
|
if (getPersistenceAdapter() != null) {
|
||||||
File dir = getPersistenceAdapter().getDirectory();
|
File dir = getPersistenceAdapter().getDirectory();
|
||||||
if (dir != null){
|
if (dir != null) {
|
||||||
long storeLimit = usage.getStoreUsage().getLimit();
|
long storeLimit = usage.getStoreUsage().getLimit();
|
||||||
long dirFreeSpace = dir.getFreeSpace();
|
long dirFreeSpace = dir.getFreeSpace();
|
||||||
if (storeLimit > dirFreeSpace){
|
if (storeLimit > dirFreeSpace) {
|
||||||
LOG.warn("Store limit is " + storeLimit/(1024*1024) + " mb, whilst the data directory: " + dir.getAbsolutePath() + " only has " + dirFreeSpace/(1024*1024) + " mb of free space");
|
LOG.warn("Store limit is " + storeLimit / (1024 * 1024) +
|
||||||
|
" mb, whilst the data directory: " + dir.getAbsolutePath() +
|
||||||
|
" only has " + dirFreeSpace / (1024 * 1024) + " mb of free space");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File tmpDir = getTmpDataDirectory();
|
File tmpDir = getTmpDataDirectory();
|
||||||
if (tmpDir != null){
|
if (tmpDir != null) {
|
||||||
|
|
||||||
String tmpDirPath = tmpDir.getAbsolutePath();
|
String tmpDirPath = tmpDir.getAbsolutePath();
|
||||||
|
if (!tmpDir.isAbsolute()) {
|
||||||
|
tmpDir = new File(tmpDirPath);
|
||||||
|
}
|
||||||
|
|
||||||
long storeLimit = usage.getTempUsage().getLimit();
|
long storeLimit = usage.getTempUsage().getLimit();
|
||||||
while (tmpDir != null && tmpDir.isDirectory()== false){
|
while (tmpDir != null && tmpDir.isDirectory() == false) {
|
||||||
tmpDir = tmpDir.getParentFile();
|
tmpDir = tmpDir.getParentFile();
|
||||||
}
|
}
|
||||||
long dirFreeSpace = tmpDir.getUsableSpace();
|
long dirFreeSpace = tmpDir.getUsableSpace();
|
||||||
if (storeLimit > dirFreeSpace){
|
if (storeLimit > dirFreeSpace) {
|
||||||
LOG.error("Temporary Store limit is " + storeLimit/(1024*1024) + " mb, whilst the temporary data directory: " + tmpDirPath + " only has " + dirFreeSpace/(1024*1024) + " mb of free space");
|
LOG.error("Temporary Store limit is " + storeLimit / (1024 * 1024) +
|
||||||
|
" mb, whilst the temporary data directory: " + tmpDirPath +
|
||||||
|
" only has " + dirFreeSpace / (1024 * 1024) + " mb of free space");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue