BrokerService brokerService = broker.getBrokerService();
if (brokerService != null && brokerService.getPersistenceAdapter() != null) {
PersistenceAdapter adapter = brokerService.getPersistenceAdapter();
File dir = adapter.getDirectory();
if (brokerService.isPersistent()) {
SystemUsage usage = brokerService.getSystemUsage();
if (dir != null && usage != null) {
String dirPath = dir.getAbsolutePath();
if (!dir.isAbsolute()) {
dir = new File(dirPath);
}
while (dir != null && !dir.isDirectory()) {
dir = dir.getParentFile();
}
long storeSize = adapter.size();
long storeLimit = usage.getStoreUsage().getLimit();
long dirFreeSpace = dir.getUsableSpace();
if (storeSize != 0) {
int val = (int) ((storeSize * 100) / storeLimit);
if (val > 90) {
answer.add(new HealthStatus("org.apache.activemq.StoreLimit", "WARNING", "Message Store size is within " + val + "% of its limit", adapter.toString()));
}
}
if ((storeLimit - storeSize) > dirFreeSpace) {
String message = "Store limit is " + storeLimit / (1024 * 1024) +
" mb, whilst the data directory: " + dir.getAbsolutePath() +
" only has " + dirFreeSpace / (1024 * 1024) + " mb of usable space";
answer.add(new HealthStatus("org.apache.activemq.FreeDiskSpaceLeft", "WARNING", message, adapter.toString()));
}
}
File tmpDir = brokerService.getTmpDataDirectory();
if (tmpDir != null) {
String tmpDirPath = tmpDir.getAbsolutePath();
if (!tmpDir.isAbsolute()) {
tmpDir = new File(tmpDirPath);
}
long storeSize = usage.getTempUsage().getUsage();
long storeLimit = usage.getTempUsage().getLimit();
while (tmpDir != null && !tmpDir.isDirectory()) {
tmpDir = tmpDir.getParentFile();
}
int val = (int) ((storeSize * 100) / storeLimit);
if (val > 90) {
answer.add(new HealthStatus("org.apache.activemq.TempStoreLimit", "WARNING", "TempMessage Store size is within " + val + "% of its limit", adapter.toString()));
}
}
}
}
if (brokerService != null && brokerService.getJobSchedulerStore() != null) {
JobSchedulerStore scheduler = brokerService.getJobSchedulerStore();
File dir = scheduler.getDirectory();
if (brokerService.isPersistent()) {
SystemUsage usage = brokerService.getSystemUsage();
if (dir != null && usage != null) {
String dirPath = dir.getAbsolutePath();
if (!dir.isAbsolute()) {
dir = new File(dirPath);
}
while (dir != null && !dir.isDirectory()) {
dir = dir.getParentFile();
}
long storeSize = scheduler.size();
long storeLimit = usage.getJobSchedulerUsage().getLimit();
long dirFreeSpace = dir.getUsableSpace();
if (storeSize != 0) {
int val = (int) ((storeSize * 100) / storeLimit);
if (val > 90) {