@Override public long getStoreLimit() { return brokerService.getSystemUsage().getStoreUsage().getLimit(); }
/** * @return the space used by the Message Store as a percentage */ public int getStorePercentUsage() { return brokerService.getSystemUsage().getStoreUsage().getPercentUsage(); }
@Override public int getStorePercentUsage() { return brokerService.getSystemUsage().getStoreUsage().getPercentUsage(); }
@Override public void setStoreLimit(long limit) { brokerService.getSystemUsage().getStoreUsage().setLimit(limit); }
/** * Check that the store usage limit is not greater than max usable * space and adjust if it is */ protected void checkStoreUsageLimits() throws Exception { final SystemUsage usage = getSystemUsage(); if (getPersistenceAdapter() != null) { PersistenceAdapter adapter = getPersistenceAdapter(); checkUsageLimit(adapter.getDirectory(), usage.getStoreUsage(), usage.getStoreUsage().getPercentLimit()); long maxJournalFileSize = 0; long storeLimit = usage.getStoreUsage().getLimit(); if (adapter instanceof JournaledStore) { maxJournalFileSize = ((JournaledStore) adapter).getJournalMaxFileLength(); } if (storeLimit > 0 && storeLimit < maxJournalFileSize) { LOG.error("Store limit is " + storeLimit / (1024 * 1024) + " mb, whilst the max journal file size for the store is: " + maxJournalFileSize / (1024 * 1024) + " mb, " + "the store will not accept any data when used."); } } }
long storeLimit = usage.getStoreUsage().getLimit(); long dirFreeSpace = dir.getUsableSpace();
@Override public void start() throws Exception { if (started.compareAndSet(false, true)) { if (memoryUsage != null) { memoryUsage.start(); } if (systemUsage.getStoreUsage() != null) { systemUsage.getStoreUsage().start(); } if (systemUsage.getTempUsage() != null) { systemUsage.getTempUsage().start(); } systemUsage.getMemoryUsage().addUsageListener(this); messages.start(); if (getExpireMessagesPeriod() > 0) { scheduler.executePeriodically(expireMessagesTask, getExpireMessagesPeriod()); } doPageIn(false); } }
public SystemUsage getSystemUsage() { try { if (systemUsage == null) { systemUsage = new SystemUsage("Main", getPersistenceAdapter(), getTempDataStore(), getJobSchedulerStore()); systemUsage.setExecutor(getExecutor()); systemUsage.getMemoryUsage().setLimit(1024L * 1024 * 1024 * 1); // 1 GB systemUsage.getTempUsage().setLimit(1024L * 1024 * 1024 * 50); // 50 GB systemUsage.getStoreUsage().setLimit(1024L * 1024 * 1024 * 100); // 100 GB systemUsage.getJobSchedulerUsage().setLimit(1024L * 1024 * 1024 * 50); // 50 GB addService(this.systemUsage); } return systemUsage; } catch (IOException e) { LOG.error("Cannot create SystemUsage", e); throw new RuntimeException("Fatally failed to create SystemUsage" + e.getMessage(), e); } }
memoryUsage.stop(); if (systemUsage.getStoreUsage() != null) { systemUsage.getStoreUsage().stop();
private void checkUsage(ConnectionContext context,ProducerBrokerExchange producerBrokerExchange, Message message) throws ResourceAllocationException, IOException, InterruptedException { if (message.isPersistent()) { if (store != null && systemUsage.getStoreUsage().isFull(getStoreUsageHighWaterMark())) { final String logMessage = "Persistent store is Full, " + getStoreUsageHighWaterMark() + "% of " + systemUsage.getStoreUsage().getLimit() + ". Stopping producer (" + message.getProducerId() + ") to prevent flooding " + getActiveMQDestination().getQualifiedName() + "." + " See http://activemq.apache.org/producer-flow-control.html for more info"; waitForSpace(context, producerBrokerExchange, systemUsage.getStoreUsage(), getStoreUsageHighWaterMark(), logMessage); } } else if (messages.getSystemUsage() != null && systemUsage.getTempUsage().isFull()) { final String logMessage = "Temp Store is Full (" + systemUsage.getTempUsage().getPercentUsage() + "% of " + systemUsage.getTempUsage().getLimit() +"). Stopping producer (" + message.getProducerId() + ") to prevent flooding " + getActiveMQDestination().getQualifiedName() + "." + " See http://activemq.apache.org/producer-flow-control.html for more info"; waitForSpace(context, producerBrokerExchange, messages.getSystemUsage().getTempUsage(), logMessage); } }
if (systemUsage.getStoreUsage().isFull(getStoreUsageHighWaterMark())) { final String logMessage = "Persistent store is Full, " + getStoreUsageHighWaterMark() + "% of " + systemUsage.getStoreUsage().getLimit() + ". Stopping producer (" + message.getProducerId() + ") to prevent flooding " + getActiveMQDestination().getQualifiedName() + "." + " See http://activemq.apache.org/producer-flow-control.html for more info"; waitForSpace(context,producerExchange, systemUsage.getStoreUsage(), getStoreUsageHighWaterMark(), logMessage);
@Override public void registerIndexListener(IndexListener indexListener) { getDelegate().registerIndexListener(indexListener); try { if (indexListener instanceof BaseDestination) { // update queue storeUsage Object matchingPersistenceAdapter = multiKahaDBPersistenceAdapter.destinationMap.chooseValue(getDelegate().getDestination()); if (matchingPersistenceAdapter instanceof FilteredKahaDBPersistenceAdapter) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) matchingPersistenceAdapter; if (filteredAdapter.getUsage() != null && filteredAdapter.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter) { StoreUsage storeUsage = filteredAdapter.getUsage(); storeUsage.setStore(filteredAdapter.getPersistenceAdapter()); storeUsage.setParent(multiKahaDBPersistenceAdapter.getBrokerService().getSystemUsage().getStoreUsage()); ((BaseDestination) indexListener).getSystemUsage().setStoreUsage(storeUsage); } } } } catch (Exception ignored) { LOG.warn("Failed to set mKahaDB destination store usage", ignored); } } };
statsMessage.setLong("memoryUsage", systemUsage.getMemoryUsage().getUsage()); statsMessage.setLong("memoryLimit", systemUsage.getMemoryUsage().getLimit()); statsMessage.setInt("storePercentUsage", systemUsage.getStoreUsage().getPercentUsage()); statsMessage.setLong("storeUsage", systemUsage.getStoreUsage().getUsage()); statsMessage.setLong("storeLimit", systemUsage.getStoreUsage().getLimit()); statsMessage.setInt("tempPercentUsage", systemUsage.getTempUsage().getPercentUsage()); statsMessage.setLong("tempUsage", systemUsage.getTempUsage().getUsage());
/** * @return the space used by the Message Store as a percentage */ public int getStorePercentUsage() { return brokerService.getSystemUsage().getStoreUsage().getPercentUsage(); }
@Override public long getStoreLimit() { return brokerService.getSystemUsage().getStoreUsage().getLimit(); }
private void ensureSystemUsageHasStore() throws IOException { SystemUsage usage = getSystemUsage(); if (usage.getStoreUsage().getStore() == null) { usage.getStoreUsage().setStore(getPersistenceAdapter()); } if (usage.getTempUsage().getStore() == null) { usage.getTempUsage().setStore(getTempDataStore()); } }
BrokerService broker = new BrokerService(); broker.addConnector(Constants.ACTIVEMQ_URL); broker.setPersistent(false); SystemUsage systemUsage = brokerService.getSystemUsage(); systemUsage.getStoreUsage().setLimit(1024 * 1024 * 8); systemUsage.getTempUsage().setLimit(1024 * 1024 * 8); broker.start();
private void ensureSystemUsageHasStore() throws IOException { SystemUsage usage = getSystemUsage(); if (usage.getStoreUsage().getStore() == null) { usage.getStoreUsage().setStore(getPersistenceAdapter()); } if (usage.getTempUsage().getStore() == null) { usage.getTempUsage().setStore(getTempDataStore()); } if (usage.getJobSchedulerUsage().getStore() == null) { usage.getJobSchedulerUsage().setStore(getJobSchedulerStore()); } }
private void ensureSystemUsageHasStore() throws IOException { SystemUsage usage = getSystemUsage(); if (usage.getStoreUsage().getStore() == null) { usage.getStoreUsage().setStore(getPersistenceAdapter()); } if (usage.getTempUsage().getStore() == null) { usage.getTempUsage().setStore(getTempDataStore()); } if (usage.getJobSchedulerUsage().getStore() == null) { usage.getJobSchedulerUsage().setStore(getJobSchedulerStore()); } }
private void ensureSystemUsageHasStore() throws IOException { SystemUsage usage = getSystemUsage(); if (usage.getStoreUsage().getStore() == null) { usage.getStoreUsage().setStore(getPersistenceAdapter()); } if (usage.getTempUsage().getStore() == null) { usage.getTempUsage().setStore(getTempDataStore()); } if (usage.getJobSchedulerUsage().getStore() == null) { usage.getJobSchedulerUsage().setStore(getJobSchedulerStore()); } }