From 154daa03a660a62b228000354319390305568b21 Mon Sep 17 00:00:00 2001 From: Peter Schuller Date: Mon, 5 Mar 2012 21:06:39 -0800 Subject: [PATCH] expose counters for unavailable/timeout exceptions given to thrift clients patch by scode; reviewed by driftx, eevans for CASSANDRA-3671 --- CHANGES.txt | 1 + build.xml | 1 + lib/metrics-core-2.0.3.jar | Bin 0 -> 80800 bytes .../metrics/ClientRequestMetrics.java | 32 ++++++++++++++++++ .../cassandra/service/StorageProxy.java | 20 +++++++++++ .../cassandra/service/StorageService.java | 8 +++++ 6 files changed, 62 insertions(+) create mode 100644 lib/metrics-core-2.0.3.jar create mode 100644 src/java/org/apache/cassandra/metrics/ClientRequestMetrics.java diff --git a/CHANGES.txt b/CHANGES.txt index dc2f1c5f60..86ab50acb7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,6 +17,7 @@ * Fix race between writes and read for cache (CASSANDRA-3862) * perform static initialization of StorageProxy on start-up (CASSANDRA-3797) * support trickling fsync() on writes (CASSANDRA-3950) + * expose counters for unavailable/timeout exceptions given to thrift clients (CASSANDRA-3671) Merged from 1.0: * remove the wait on hint future during write (CASSANDRA-3870) * (cqlsh) ignore missing CfDef opts (CASSANDRA-3933) diff --git a/build.xml b/build.xml index 1f8ec47d20..6908e9d5b5 100644 --- a/build.xml +++ b/build.xml @@ -402,6 +402,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision} + diff --git a/lib/metrics-core-2.0.3.jar b/lib/metrics-core-2.0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..729e6e8e52715db9309f9bc2a50117278edf9ed8 GIT binary patch literal 80800 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 J@-XA!_ mstrings = new ArrayList(); @@ -211,6 +213,11 @@ public class StorageProxy implements StorageProxyMBean } throw ex; } + catch (UnavailableException e) + { + ClientRequestMetrics.writeUnavailables.inc(); + throw e; + } catch (IOException e) { assert mostRecentMutation != null; @@ -587,13 +594,26 @@ public class StorageProxy implements StorageProxyMBean throws IOException, UnavailableException, TimeoutException, InvalidRequestException { if (StorageService.instance.isBootstrapMode()) + { + ClientRequestMetrics.readUnavailables.inc(); throw new UnavailableException(); + } long startTime = System.nanoTime(); List rows; try { rows = fetchRows(commands, consistency_level); } + catch (UnavailableException e) + { + ClientRequestMetrics.readUnavailables.inc(); + throw e; + } + catch (TimeoutException e) + { + ClientRequestMetrics.readTimeouts.inc(); + throw e; + } finally { readStats.addNano(System.nanoTime() - startTime); diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 5fddf4acab..66e28f4907 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -35,6 +35,7 @@ import javax.management.ObjectName; import com.google.common.base.Supplier; import com.google.common.collect.*; +import org.apache.cassandra.metrics.ClientRequestMetrics; import org.apache.log4j.Level; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -431,6 +432,13 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe throw new AssertionError(e); } + if (!isClientMode) + { + // "Touch" metrics classes to trigger static initialization, such that all metrics become available + // on start-up even if they have not yet been used. + new ClientRequestMetrics(); + } + if (Boolean.parseBoolean(System.getProperty("cassandra.load_ring_state", "true"))) { logger_.info("Loading persisted ring state");