From 76a389df75c487a5344ecbdc94efdf9d5b626d08 Mon Sep 17 00:00:00 2001 From: Shashi Madappa Date: Tue, 24 May 2016 14:54:21 -0700 Subject: [PATCH] Added latency for AppendOrAdd operation --- .../netflix/evcache/pool/EVCacheClient.java | 3 +-- .../spy/memcached/EVCacheMemcachedClient.java | 19 +++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/evcache-client/src/main/java/com/netflix/evcache/pool/EVCacheClient.java b/evcache-client/src/main/java/com/netflix/evcache/pool/EVCacheClient.java index 87b7b65d..5e987011 100644 --- a/evcache-client/src/main/java/com/netflix/evcache/pool/EVCacheClient.java +++ b/evcache-client/src/main/java/com/netflix/evcache/pool/EVCacheClient.java @@ -907,8 +907,7 @@ public Future appendOrAdd(String key, CachedData value, int timeToL if (!node.isActive()) { if (log.isInfoEnabled()) log.info("Node : " + node + " is not active. Failing fast and dropping the write event."); final ListenableFuture defaultFuture = (ListenableFuture) getDefaultFuture(); - if (evcacheLatch != null && evcacheLatch instanceof EVCacheLatchImpl) ((EVCacheLatchImpl) evcacheLatch) - .addFuture(defaultFuture); + if (evcacheLatch != null && evcacheLatch instanceof EVCacheLatchImpl) ((EVCacheLatchImpl) evcacheLatch).addFuture(defaultFuture); return defaultFuture; } diff --git a/evcache-client/src/main/java/net/spy/memcached/EVCacheMemcachedClient.java b/evcache-client/src/main/java/net/spy/memcached/EVCacheMemcachedClient.java index 82a3d755..2777aefe 100644 --- a/evcache-client/src/main/java/net/spy/memcached/EVCacheMemcachedClient.java +++ b/evcache-client/src/main/java/net/spy/memcached/EVCacheMemcachedClient.java @@ -279,10 +279,15 @@ public OperationFuture asyncAppendOrAdd(final String key, int exp, Operation op = opFact.cat(ConcatenationType.append, 0, key, co.getData(), new OperationCallback() { + final Stopwatch operationDuration = EVCacheMetricsFactory.getStatsTimer(appName, serverGroup, "LatencyAoA").start(); boolean appendSuccess = true; @Override public void receivedStatus(OperationStatus val) { if (val.getStatusCode().equals(StatusCode.SUCCESS)) { + operationDuration.stop(); + if (log.isDebugEnabled()) log.debug("AddOrAppend Key (Append Operation): " + key + "; Status : " + val.getStatusCode().name() + + "; Message : " + val.getMessage() + "; Elapsed Time - " + (System.currentTimeMillis() - operationDuration.getDuration())); + EVCacheMetricsFactory.getCounter(appName + "-" + serverGroup.getName() + "-AoA-AppendCall-SUCCESS").increment(); rv.set(val.isSuccess(), val); } else { @@ -299,14 +304,9 @@ public void complete() { Operation op = opFact.store(StoreType.add, key, co.getFlags(), exp, co.getData(), new StoreOperation.Callback() { @Override public void receivedStatus(OperationStatus val) { - if (log.isDebugEnabled()) log.debug("Storing Key : " + key + "; Status : " + val.getStatusCode().name() - + "; Message : " + val.getMessage()); - - Tag tag = null; - final MemcachedNode node = getEVCacheNode(key); - if (node.getSocketAddress() instanceof InetSocketAddress) { - tag = new BasicTag("HOST", ((InetSocketAddress) node.getSocketAddress()).getHostName()); - } + operationDuration.stop(); + if (log.isDebugEnabled()) log.debug("AddOrAppend Key (Ad Operation): " + key + "; Status : " + val.getStatusCode().name() + + "; Message : " + val.getMessage() + "; Elapsed Time - " + (System.currentTimeMillis() - operationDuration.getDuration())); rv.set(val.isSuccess(), val); } @@ -328,8 +328,7 @@ public void complete() { }); rv.setOperation(op); mconn.enqueueOperation(key, op); - if (evcacheLatch != null && evcacheLatch instanceof EVCacheLatchImpl) ((EVCacheLatchImpl) evcacheLatch) - .addFuture(rv); + if (evcacheLatch != null && evcacheLatch instanceof EVCacheLatchImpl) ((EVCacheLatchImpl) evcacheLatch).addFuture(rv); return rv; }