From 1b51848a89074a0ba4659740ee3f0780322a4e4e Mon Sep 17 00:00:00 2001 From: xvrl Date: Thu, 7 Mar 2013 10:38:41 -0800 Subject: [PATCH] add cache errorCount --- .../com/metamx/druid/client/cache/CacheMonitor.java | 1 + .../com/metamx/druid/client/cache/CacheStats.java | 13 +++++++++++-- .../com/metamx/druid/client/cache/MapCache.java | 1 + .../metamx/druid/client/cache/MemcachedCache.java | 10 ++++++++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/client/src/main/java/com/metamx/druid/client/cache/CacheMonitor.java b/client/src/main/java/com/metamx/druid/client/cache/CacheMonitor.java index b0c36629e89..e89c1113e8d 100644 --- a/client/src/main/java/com/metamx/druid/client/cache/CacheMonitor.java +++ b/client/src/main/java/com/metamx/druid/client/cache/CacheMonitor.java @@ -67,5 +67,6 @@ public class CacheMonitor extends AbstractMonitor emitter.emit(builder.build(String.format("%s/hitRate", metricPrefix), cacheStats.hitRate())); emitter.emit(builder.build(String.format("%s/averageBytes", metricPrefix), cacheStats.averageBytes())); emitter.emit(builder.build(String.format("%s/timeouts", metricPrefix), cacheStats.getNumTimeouts())); + emitter.emit(builder.build(String.format("%s/errors", metricPrefix), cacheStats.getNumErrors())); } } diff --git a/client/src/main/java/com/metamx/druid/client/cache/CacheStats.java b/client/src/main/java/com/metamx/druid/client/cache/CacheStats.java index 1a9950c8698..33f0a145082 100644 --- a/client/src/main/java/com/metamx/druid/client/cache/CacheStats.java +++ b/client/src/main/java/com/metamx/druid/client/cache/CacheStats.java @@ -29,6 +29,7 @@ public class CacheStats private final long sizeInBytes; private final long numEvictions; private final long numTimeouts; + private final long numErrors; public CacheStats( long numHits, @@ -36,7 +37,8 @@ public class CacheStats long size, long sizeInBytes, long numEvictions, - long numTimeouts + long numTimeouts, + long numErrors ) { this.numHits = numHits; @@ -45,6 +47,7 @@ public class CacheStats this.sizeInBytes = sizeInBytes; this.numEvictions = numEvictions; this.numTimeouts = numTimeouts; + this.numErrors = numErrors; } public long getNumHits() @@ -77,6 +80,11 @@ public class CacheStats return numTimeouts; } + public long getNumErrors() + { + return numErrors; + } + public long numLookups() { return numHits + numMisses; @@ -104,7 +112,8 @@ public class CacheStats size - oldStats.size, sizeInBytes - oldStats.sizeInBytes, numEvictions - oldStats.numEvictions, - numTimeouts - oldStats.numTimeouts + numTimeouts - oldStats.numTimeouts, + numErrors - oldStats.numErrors ); } } diff --git a/client/src/main/java/com/metamx/druid/client/cache/MapCache.java b/client/src/main/java/com/metamx/druid/client/cache/MapCache.java index 53e1e20280a..bf549ec31b9 100644 --- a/client/src/main/java/com/metamx/druid/client/cache/MapCache.java +++ b/client/src/main/java/com/metamx/druid/client/cache/MapCache.java @@ -76,6 +76,7 @@ public class MapCache implements Cache byteCountingLRUMap.size(), byteCountingLRUMap.getNumBytes(), byteCountingLRUMap.getEvictionCount(), + 0, 0 ); } diff --git a/client/src/main/java/com/metamx/druid/client/cache/MemcachedCache.java b/client/src/main/java/com/metamx/druid/client/cache/MemcachedCache.java index c2b6c32247c..436c606d496 100644 --- a/client/src/main/java/com/metamx/druid/client/cache/MemcachedCache.java +++ b/client/src/main/java/com/metamx/druid/client/cache/MemcachedCache.java @@ -91,6 +91,7 @@ public class MemcachedCache implements Cache private final AtomicLong hitCount = new AtomicLong(0); private final AtomicLong missCount = new AtomicLong(0); private final AtomicLong timeoutCount = new AtomicLong(0); + private final AtomicLong errorCount = new AtomicLong(0); MemcachedCache(MemcachedClientIF client, String memcachedPrefix, int timeout, int expiration) { Preconditions.checkArgument(memcachedPrefix.length() <= MAX_PREFIX_LENGTH, @@ -112,7 +113,8 @@ public class MemcachedCache implements Cache 0, 0, 0, - timeoutCount.get() + timeoutCount.get(), + errorCount.get() ); } @@ -124,6 +126,7 @@ public class MemcachedCache implements Cache future = client.asyncGet(computeKeyHash(memcachedPrefix, key)); } catch(IllegalStateException e) { // operation did not get queued in time (queue is full) + errorCount.incrementAndGet(); log.warn(e, "Unable to queue cache operation"); return null; } @@ -147,6 +150,7 @@ public class MemcachedCache implements Cache throw Throwables.propagate(e); } catch(ExecutionException e) { + errorCount.incrementAndGet(); log.warn(e, "Exception pulling item from cache"); return null; } @@ -159,6 +163,7 @@ public class MemcachedCache implements Cache client.set(computeKeyHash(memcachedPrefix, key), expiration, serializeValue(key, value)); } catch(IllegalStateException e) { // operation did not get queued in time (queue is full) + errorCount.incrementAndGet(); log.warn(e, "Unable to queue cache operation"); } } @@ -209,8 +214,8 @@ public class MemcachedCache implements Cache try { future = client.asyncGetBulk(keyLookup.keySet()); } catch(IllegalStateException e) { - timeoutCount.incrementAndGet(); // operation did not get queued in time (queue is full) + errorCount.incrementAndGet(); log.warn(e, "Unable to queue cache operation"); return results; } @@ -241,6 +246,7 @@ public class MemcachedCache implements Cache throw Throwables.propagate(e); } catch(ExecutionException e) { + errorCount.incrementAndGet(); log.warn(e, "Exception pulling item from cache"); return results; }