@Override public void setStoreLimit(long limit) { brokerService.getSystemUsage().getStoreUsage().setLimit(limit); }
public void setStoreUsage(StoreUsage storeUsage) { if (storeUsage.getStore() == null) { storeUsage.setStore(this.storeUsage.getStore()); } if (storeUsage.getName() == null) { storeUsage.setName(this.storeUsage.getName()); } if (parent != null) { storeUsage.setParent(parent.storeUsage); } this.storeUsage = storeUsage; this.storeUsage.setExecutor(executor); }
public SystemUsage(String name, PersistenceAdapter adapter, PListStore tempStore, JobSchedulerStore jobSchedulerStore) { this.parent = null; this.name = name; this.memoryUsage = new MemoryUsage(name + ":memory"); this.storeUsage = new StoreUsage(name + ":store", adapter); this.tempUsage = new TempUsage(name + ":temp", tempStore); this.jobSchedulerUsage = new JobSchedulerUsage(name + ":jobScheduler", jobSchedulerStore); this.memoryUsage.setExecutor(getExecutor()); this.storeUsage.setExecutor(getExecutor()); this.tempUsage.setExecutor(getExecutor()); }
public StoreUsage copy() { StoreUsage storeUsage = new StoreUsage(); storeUsage.name = name; storeUsage.parent = parent; storeUsage.total = total; storeUsage.percentLimit = percentLimit; storeUsage.getLimiter().setLimit(getLimiter().getLimit()); return storeUsage; } }
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());
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); } }
@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); } } };
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()); } }
/** * 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."); } } }
@Override public int getStorePercentUsage() { return brokerService.getSystemUsage().getStoreUsage().getPercentUsage(); }
@Override public long getStoreLimit() { return brokerService.getSystemUsage().getStoreUsage().getLimit(); }
@Override public int getPercentUsage() { usageLock.writeLock().lock(); try { percentUsage = caclPercentUsage(); return super.getPercentUsage(); } finally { usageLock.writeLock().unlock(); } }
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());
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";
@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); } } };
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()); } }
public StoreUsage copy() { StoreUsage storeUsage = new StoreUsage(); storeUsage.name = name; storeUsage.parent = parent; storeUsage.total = total; storeUsage.percentLimit = percentLimit; storeUsage.getLimiter().setLimit(getLimiter().getLimit()); return storeUsage; } }
/** * 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."); } } }
/** * @return the space used by the Message Store as a percentage */ public int getStorePercentUsage() { return brokerService.getSystemUsage().getStoreUsage().getPercentUsage(); }
long storeLimit = usage.getStoreUsage().getLimit(); long dirFreeSpace = dir.getUsableSpace();