Updated Branches: refs/heads/master 9fd52855a -> 82222bc91
CAMEL-6476: Introducing StreamCachingStrategy SPI to make it easier to configure and allow 3rd party to plugin custom strategies. Work in progress. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/82222bc9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/82222bc9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/82222bc9 Branch: refs/heads/master Commit: 82222bc9193f805cbd449d4286a640ca7c3fc5a8 Parents: 9fd5285 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Jul 21 22:48:53 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Jul 21 22:48:53 2013 +0200 ---------------------------------------------------------------------- .../impl/DefaultStreamCachingStrategy.java | 31 +++++++++++++++++--- .../apache/camel/spi/StreamCachingStrategy.java | 18 +++++++++--- .../camel/karaf/commands/ContextInfo.java | 11 ++++--- 3 files changed, 48 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java index f32c0e7..1f7925b 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java @@ -239,6 +239,10 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi FileUtil.removeDir(spoolDirectory); } + if (LOG.isDebugEnabled() && statistics.isStatisticsEnabled()) { + LOG.debug("Stopping StreamCachingStrategy with statistics: {}", statistics.toString()); + } + statistics.reset(); } @@ -259,40 +263,54 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi private boolean statisticsEnabled; private volatile long memoryCounter; private volatile long memorySize; + private volatile long memoryAverageSize; private volatile long spoolCounter; private volatile long spoolSize; + private volatile long spoolAverageSize; void updateMemory(long size) { memoryCounter++; memorySize += size; + memoryAverageSize = memorySize / memoryCounter; } void updateSpool(long size) { spoolCounter++; spoolSize += size; + spoolAverageSize = spoolSize / spoolCounter; } public long getCacheMemoryCounter() { return memoryCounter; } - public long getCacheSpoolCounter() { - return spoolCounter; - } - public long getCacheMemorySize() { return memorySize; } + public long getCacheMemoryAverageSize() { + return memoryAverageSize; + } + + public long getCacheSpoolCounter() { + return spoolCounter; + } + public long getCacheSpoolSize() { return spoolSize; } + public long getCacheSpoolAverageSize() { + return spoolAverageSize; + } + public void reset() { memoryCounter = 0; memorySize = 0; + memoryAverageSize = 0; spoolCounter = 0; spoolSize = 0; + spoolAverageSize = 0; } public boolean isStatisticsEnabled() { @@ -302,6 +320,11 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi public void setStatisticsEnabled(boolean statisticsEnabled) { this.statisticsEnabled = statisticsEnabled; } + + public String toString() { + return String.format("[memoryCounter=%s, memorySize=%s, memoryAverageSize=%s, spoolCounter=%s, spoolSize=%s, spoolAverageSize=%s]", + memoryCounter, memorySize, memoryAverageSize, spoolCounter, spoolSize, spoolAverageSize); + } } } http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java index 7bc2d22..630d340 100644 --- a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java +++ b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java @@ -38,14 +38,19 @@ public interface StreamCachingStrategy extends Service { long getCacheMemoryCounter(); /** - * Gets the counter for number of spooled (not in-memory) {@link StreamCache} created. + * Gets the total accumulated number of bytes which has been stream cached for in-memory stream caches. */ - long getCacheSpoolCounter(); + long getCacheMemorySize(); /** - * Gets the total accumulated number of bytes which has been stream cached for in-memory stream caches. + * Gets the average number of bytes per cached stream for in-memory stream caches. */ - long getCacheMemorySize(); + long getCacheMemoryAverageSize(); + + /** + * Gets the counter for number of spooled (not in-memory) {@link StreamCache} created. + */ + long getCacheSpoolCounter(); /** * Gets the total accumulated number of bytes which has been stream cached for spooled stream caches. @@ -53,6 +58,11 @@ public interface StreamCachingStrategy extends Service { long getCacheSpoolSize(); /** + * Gets the average number of bytes per cached stream for spooled (not in-memory) stream caches. + */ + long getCacheSpoolAverageSize(); + + /** * Reset the counters */ void reset(); http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java ---------------------------------------------------------------------- diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java index 6e77b7f..316ed33 100644 --- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java +++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java @@ -146,19 +146,22 @@ public class ContextInfo extends OsgiCommandSupport { // add stream caching details if enabled if (camelContext.getStreamCachingStrategy().isEnabled()) { - System.out.println(StringEscapeUtils.unescapeJava(String.format("\tStreamCachingStrategy: [spoolDirectory=%s, spoolThreshold=%s, spoolChiper=%s, bufferSize=%s, removeSpoolDirectoryWhenStopping=%s]", + System.out.println(StringEscapeUtils.unescapeJava(String.format("\tStreamCachingStrategy: [spoolDirectory=%s, spoolThreshold=%s, spoolChiper=%s, bufferSize=%s, removeSpoolDirectoryWhenStopping=%s, statisticsEnabled=%s]", camelContext.getStreamCachingStrategy().getSpoolDirectory(), camelContext.getStreamCachingStrategy().getSpoolThreshold(), camelContext.getStreamCachingStrategy().getSpoolChiper(), camelContext.getStreamCachingStrategy().getBufferSize(), - camelContext.getStreamCachingStrategy().isRemoveSpoolDirectoryWhenStopping()))); + camelContext.getStreamCachingStrategy().isRemoveSpoolDirectoryWhenStopping(), + camelContext.getStreamCachingStrategy().getStatistics().isStatisticsEnabled()))); if (camelContext.getStreamCachingStrategy().getStatistics().isStatisticsEnabled()) { - System.out.println(StringEscapeUtils.unescapeJava(String.format("\t [cacheMemoryCounter=%s, cacheMemorySize=%s, cacheSpoolCounter=%s, cacheSpoolSize=%s]", + System.out.println(StringEscapeUtils.unescapeJava(String.format("\t [cacheMemoryCounter=%s, cacheMemorySize=%s, cacheMemoryAverageSize=%s, cacheSpoolCounter=%s, cacheSpoolSize=%s, cacheSpoolAverageSize=%s]", camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryCounter(), camelContext.getStreamCachingStrategy().getStatistics().getCacheMemorySize(), + camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryAverageSize(), camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolCounter(), - camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize()))); + camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize(), + camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolAverageSize()))); } }