Skip to content

Commit fdaaba6

Browse files
committed
Improve Tracing
- Introduce pattern tracing, that can intercept failed or new coordinations matching various filters - Support additional tracing event collection modes (SAMPLE and RING) patch by Benedict; reviewed by Alex Petrov for CASSANDRA-20911
1 parent 03d5e79 commit fdaaba6

File tree

15 files changed

+1492
-315
lines changed

15 files changed

+1492
-315
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "modules/accord"]
22
path = modules/accord
33
url = https://github.com/belliottsmith/cassandra-accord.git
4-
branch = rebootstrap-sq
4+
branch = improve-tracing

modules/accord

Submodule accord updated 46 files

src/java/org/apache/cassandra/db/virtual/AbstractLazyVirtualTable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,9 @@ public EagerColumnsCollector(Consumer<ColumnsCollector> add)
564564
public <V1, V2> ColumnsCollector add(String name, V1 v1, Function<? super V1, ? extends V2> f1, Function<? super V2, ?> f2)
565565
{
566566
ColumnMetadata cm = columnLookup.get(name);
567+
if (cm == null)
568+
throw new IllegalArgumentException("Unknown column name " + name);
569+
567570
if (!columnFilter.fetches(cm))
568571
return this;
569572

src/java/org/apache/cassandra/db/virtual/AbstractMutableLazyVirtualTable.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121

2222
import javax.annotation.Nullable;
2323

24-
import org.apache.cassandra.db.Clustering;
25-
import org.apache.cassandra.db.ClusteringPrefix;
24+
import accord.utils.Invariants;
2625
import org.apache.cassandra.db.DeletionInfo;
2726
import org.apache.cassandra.db.RangeTombstone;
2827
import org.apache.cassandra.db.Slice;
@@ -70,7 +69,7 @@ protected void applyRowDeletion(Object[] partitionKey, @Nullable Object[] cluste
7069
throw invalidRequest("Row deletion is not supported by table %s", metadata());
7170
}
7271

73-
protected void applyRowUpdate(Object[] partitionKey, @Nullable Object[] clusteringColumns, ColumnMetadata[] columns, Object[] values)
72+
protected void applyRowUpdate(Object[] partitionKeys, @Nullable Object[] clusteringKeys, ColumnMetadata[] columns, Object[] values)
7473
{
7574
throw invalidRequest("Column modification is not supported by table %s", metadata());
7675
}
@@ -106,6 +105,7 @@ private void applyRow(Object[] pks, Row row)
106105
values[i] = cm.type.compose(cell.value(), cell.accessor());
107106
++i;
108107
}
108+
Invariants.require(i == columns.length);
109109
applyRowUpdate(pks, cks, columns, values);
110110
}
111111
}

src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java

Lines changed: 474 additions & 87 deletions
Large diffs are not rendered by default.

src/java/org/apache/cassandra/metrics/AccordCoordinatorMetrics.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,6 @@ public String toString()
198198

199199
public static class Listener implements CoordinatorEventListener
200200
{
201-
public static final Listener instance = new Listener();
202-
203201
private AccordCoordinatorMetrics forTransaction(TxnId txnId)
204202
{
205203
if (txnId != null)

src/java/org/apache/cassandra/metrics/AccordReplicaMetrics.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ public String toString()
112112

113113
public static class Listener implements ReplicaEventListener
114114
{
115-
public static final Listener instance = new Listener();
116-
117115
private AccordReplicaMetrics forTransaction(TxnId txnId)
118116
{
119117
if (txnId != null)

src/java/org/apache/cassandra/metrics/AccordSystemMetrics.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ static class SnapshotBuilder
132132
}
133133
}
134134

135+
public static void touch()
136+
{
137+
}
138+
135139
private AccordSystemMetrics()
136140
{
137141
Invariants.expect(AccordService.isSetup());

src/java/org/apache/cassandra/service/accord/AccordService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import accord.api.ConfigurationService.EpochReady;
4242
import accord.primitives.Txn;
4343
import org.apache.cassandra.metrics.AccordReplicaMetrics;
44+
import org.apache.cassandra.metrics.AccordSystemMetrics;
4445
import org.apache.cassandra.service.accord.api.AccordViolationHandler;
4546
import org.apache.cassandra.utils.Clock;
4647
import org.apache.cassandra.utils.concurrent.AsyncFuture;
@@ -307,6 +308,7 @@ public synchronized static AccordService startup(NodeId tcmId)
307308
instance = as;
308309

309310
AccordReplicaMetrics.touch();
311+
AccordSystemMetrics.touch();
310312
AccordViolationHandler.setup();
311313

312314
WatermarkCollector.fetchAndReportWatermarksAsync(as.configService);

0 commit comments

Comments
 (0)