fix timeout reporting to dsnitch patch by vijay; reviewed by jbellis for CASSANDRA-2819
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f422b981 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f422b981 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f422b981 Branch: refs/heads/trunk Commit: f422b98140dcec99d93858148415d43f01fa70d1 Parents: f17fbac Author: Jonathan Ellis <[email protected]> Authored: Fri Jun 22 12:31:52 2012 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Fri Jun 22 12:33:50 2012 -0500 ---------------------------------------------------------------------- .../org/apache/cassandra/net/MessagingService.java | 8 ++-- .../org/apache/cassandra/utils/ExpiringMap.java | 24 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f422b981/src/java/org/apache/cassandra/net/MessagingService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 18f3baa..e4e59cb 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -318,12 +318,12 @@ public final class MessagingService implements MessagingServiceMBean }; StorageService.scheduledTasks.scheduleWithFixedDelay(logDropped, LOG_DROPPED_INTERVAL_IN_MS, LOG_DROPPED_INTERVAL_IN_MS, TimeUnit.MILLISECONDS); - Function<Pair<String, CallbackInfo>, ?> timeoutReporter = new Function<Pair<String, CallbackInfo>, Object>() + Function<Pair<String, ExpiringMap.CacheableObject<CallbackInfo>>, ?> timeoutReporter = new Function<Pair<String, ExpiringMap.CacheableObject<CallbackInfo>>, Object>() { - public Object apply(Pair<String, CallbackInfo> pair) + public Object apply(Pair<String, ExpiringMap.CacheableObject<CallbackInfo>> pair) { - CallbackInfo expiredCallbackInfo = pair.right; - maybeAddLatency(expiredCallbackInfo.callback, expiredCallbackInfo.target, (double) expiredCallbackInfo.sentMessage.getTimeout()); + CallbackInfo expiredCallbackInfo = pair.right.getValue(); + maybeAddLatency(expiredCallbackInfo.callback, expiredCallbackInfo.target, (double) pair.right.timeout); totalTimeouts++; String ip = expiredCallbackInfo.target.getHostAddress(); AtomicLong c = timeoutsPerHost.get(ip); http://git-wip-us.apache.org/repos/asf/cassandra/blob/f422b981/src/java/org/apache/cassandra/utils/ExpiringMap.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/ExpiringMap.java b/src/java/org/apache/cassandra/utils/ExpiringMap.java index 6503b54..9b34bb8 100644 --- a/src/java/org/apache/cassandra/utils/ExpiringMap.java +++ b/src/java/org/apache/cassandra/utils/ExpiringMap.java @@ -34,28 +34,28 @@ public class ExpiringMap<K, V> private static final Logger logger = LoggerFactory.getLogger(ExpiringMap.class); private volatile boolean shutdown; - private static class CacheableObject<T> + public static class CacheableObject<T> { private final T value; private final long createdAt; - private final long expiration; + public final long timeout; - CacheableObject(T o, long e) + private CacheableObject(T value, long timeout) { - assert o != null; - value = o; - expiration = e; - createdAt = System.currentTimeMillis(); + assert value != null; + this.value = value; + this.timeout = timeout; + this.createdAt = System.currentTimeMillis(); } - T getValue() + public T getValue() { return value; } - boolean isReadyToDieAt(long time) + private boolean isReadyToDieAt(long time) { - return ((time - createdAt) > expiration); + return ((time - createdAt) > timeout); } } @@ -74,7 +74,7 @@ public class ExpiringMap<K, V> * * @param defaultExpiration the TTL for objects in the cache in milliseconds */ - public ExpiringMap(long defaultExpiration, final Function<Pair<K,V>, ?> postExpireHook) + public ExpiringMap(long defaultExpiration, final Function<Pair<K,CacheableObject<V>>, ?> postExpireHook) { this.defaultExpiration = defaultExpiration; @@ -96,7 +96,7 @@ public class ExpiringMap<K, V> cache.remove(entry.getKey()); n++; if (postExpireHook != null) - postExpireHook.apply(new Pair<K, V>(entry.getKey(), entry.getValue().getValue())); + postExpireHook.apply(new Pair<K, CacheableObject<V>>(entry.getKey(), entry.getValue())); } } logger.trace("Expired {} entries", n);
