diff --git a/src/java/org/apache/cassandra/db/virtual/TableMetricTables.java b/src/java/org/apache/cassandra/db/virtual/TableMetricTables.java index 4640adbdc116..82fd34d45223 100644 --- a/src/java/org/apache/cassandra/db/virtual/TableMetricTables.java +++ b/src/java/org/apache/cassandra/db/virtual/TableMetricTables.java @@ -71,9 +71,11 @@ public static Collection getAll(String name) new LatencyTableMetric(name, "local_read_latency", t -> t.readLatency.tableOrKeyspaceMetric().latency), new LatencyTableMetric(name, "local_scan_latency", t -> t.rangeLatency.tableOrKeyspaceMetric().latency), new LatencyTableMetric(name, "coordinator_read_latency", t -> t.coordinatorReadLatency.tableOrKeyspaceTimer()), + new LatencyTableMetric(name, "coordinator_cas_read_latency", t -> t.coordinatorCasReadLatency.tableOrKeyspaceTimer()), new LatencyTableMetric(name, "coordinator_scan_latency", t -> t.coordinatorScanLatency.tableOrKeyspaceTimer()), new LatencyTableMetric(name, "local_write_latency", t -> t.writeLatency.tableOrKeyspaceMetric().latency), new LatencyTableMetric(name, "coordinator_write_latency", t -> t.coordinatorWriteLatency.tableOrKeyspaceTimer()), + new LatencyTableMetric(name, "coordinator_cas_write_latency", t -> t.coordinatorCasWriteLatency.tableOrKeyspaceTimer()), new HistogramTableMetric(name, "tombstones_per_read", t -> t.tombstoneScannedHistogram.tableOrKeyspaceHistogram()), new HistogramTableMetric(name, "rows_per_read", t -> t.liveScannedHistogram.tableOrKeyspaceHistogram()), new StorageTableMetric(name, "disk_usage", (TableMetrics t) -> t.totalDiskSpaceUsed), diff --git a/src/java/org/apache/cassandra/metrics/KeyspaceMetrics.java b/src/java/org/apache/cassandra/metrics/KeyspaceMetrics.java index 1595b1e8d33f..900f480203dc 100644 --- a/src/java/org/apache/cassandra/metrics/KeyspaceMetrics.java +++ b/src/java/org/apache/cassandra/metrics/KeyspaceMetrics.java @@ -154,10 +154,14 @@ public class KeyspaceMetrics public final Counter outOfRangeTokenPaxosRequests; /** Coordinator read metrics */ public final Timer coordinatorReadLatency; + /** Coordinator CAS read metrics */ + public final Timer coordinatorCasReadLatency; /** Coordinator range metrics */ public final Timer coordinatorScanLatency; /** Coordinator write metrics */ public final Timer coordinatorWriteLatency; + /** Coordinator CAS write metrics */ + public final Timer coordinatorCasWriteLatency; /** Time spent waiting for free memtable space, either on- or off-heap */ public final Histogram waitingOnFreeMemtableSpace; @@ -297,8 +301,10 @@ public KeyspaceMetrics(final Keyspace ks) bytesValidated = createKeyspaceHistogram("BytesValidated", false); coordinatorReadLatency = createKeyspaceTimer("CoordinatorReadLatency"); + coordinatorCasReadLatency = createKeyspaceTimer("CoordinatorCasReadLatency"); coordinatorScanLatency = createKeyspaceTimer("CoordinatorScanLatency"); coordinatorWriteLatency = createKeyspaceTimer("CoordinatorWriteLatency"); + coordinatorCasWriteLatency = createKeyspaceTimer("CoordinatorCasWriteLatency"); waitingOnFreeMemtableSpace = createKeyspaceHistogram("WaitingOnFreeMemtableSpace", false); confirmedRepairedInconsistencies = createKeyspaceMeter("RepairedDataInconsistenciesConfirmed"); diff --git a/src/java/org/apache/cassandra/metrics/TableMetrics.java b/src/java/org/apache/cassandra/metrics/TableMetrics.java index 5a9a41f950cf..09a3e90877cf 100644 --- a/src/java/org/apache/cassandra/metrics/TableMetrics.java +++ b/src/java/org/apache/cassandra/metrics/TableMetrics.java @@ -334,9 +334,14 @@ public String asCQLString() public final Gauge mutatedAnticompactionGauge; public final TableTimer coordinatorReadLatency; + public final TableTimer coordinatorCasReadLatency; public final TableTimer coordinatorScanLatency; + public final TableTimer coordinatorCasWriteLatency; public final TableTimer coordinatorWriteLatency; + /** Time spent waiting for free memtable space, either on- or off-heap */ + public final TableHistogram waitingOnFreeMemtableSpace; + private final MetricNameFactory factory; private final MetricNameFactory aliasFactory; @@ -1030,8 +1035,11 @@ public Long getValue() liveScannedHistogram = createTableHistogram("LiveScannedHistogram", cfs.getKeyspaceMetrics().liveScannedHistogram, false); colUpdateTimeDeltaHistogram = createTableHistogram("ColUpdateTimeDeltaHistogram", cfs.getKeyspaceMetrics().colUpdateTimeDeltaHistogram, false); coordinatorReadLatency = createTableTimer("CoordinatorReadLatency", cfs.getKeyspaceMetrics().coordinatorReadLatency); + coordinatorCasReadLatency = createTableTimer("CoordinatorCasReadLatency", cfs.getKeyspaceMetrics().coordinatorCasReadLatency); coordinatorScanLatency = createTableTimer("CoordinatorScanLatency", cfs.getKeyspaceMetrics().coordinatorScanLatency); coordinatorWriteLatency = createTableTimer("CoordinatorWriteLatency", cfs.getKeyspaceMetrics().coordinatorWriteLatency); + coordinatorCasWriteLatency = createTableTimer("CoordinatorCasWriteLatency", cfs.getKeyspaceMetrics().coordinatorCasWriteLatency); + waitingOnFreeMemtableSpace = createTableHistogram("WaitingOnFreeMemtableSpace", cfs.getKeyspaceMetrics().waitingOnFreeMemtableSpace, false); // We do not want to capture view mutation specific metrics for a view // They only makes sense to capture on the base table diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index a9ed41af0be8..baaa1327f377 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -671,6 +671,7 @@ public static RowIterator legacyCas(String keyspaceName, metrics.casWriteMetrics.serviceTimeMetrics.addNano(latency); metrics.writeMetricsForLevel(consistencyForPaxos).executionTimeMetrics.addNano(latency); metrics.writeMetricsForLevel(consistencyForPaxos).serviceTimeMetrics.addNano(latency); + Keyspace.openAndGetStore(metadata).metric.coordinatorCasWriteLatency.update(latency, NANOSECONDS); } }