Repository: cassandra Updated Branches: refs/heads/trunk af4ebfffc -> f0c94a43f
Tracing payload not passed through newSession(..) patch by Mick Semb Wever; reviewed by Alex Petrov for CASSANDRA-11706 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f0c94a43 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f0c94a43 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f0c94a43 Branch: refs/heads/trunk Commit: f0c94a43f23d338cbbb3a4420e9f296484a10dc1 Parents: af4ebff Author: mck <[email protected]> Authored: Mon Aug 29 22:15:50 2016 +1000 Committer: mck <[email protected]> Committed: Mon Aug 29 22:15:50 2016 +1000 ---------------------------------------------------------------------- .../org/apache/cassandra/tracing/Tracing.java | 10 ++++-- .../apache/cassandra/tracing/TracingTest.java | 34 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f0c94a43/src/java/org/apache/cassandra/tracing/Tracing.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tracing/Tracing.java b/src/java/org/apache/cassandra/tracing/Tracing.java index adf5ed9..c6fe46b 100644 --- a/src/java/org/apache/cassandra/tracing/Tracing.java +++ b/src/java/org/apache/cassandra/tracing/Tracing.java @@ -104,7 +104,7 @@ public abstract class Tracing implements ExecutorLocal<TraceState> catch (Exception e) { JVMStabilityInspector.inspectThrowable(e); - logger.error("Cannot use class {} for tracing ({}), ignoring by defaulting on normal tracing", customTracingClass, e.getMessage()); + logger.error(String.format("Cannot use class %s for tracing, ignoring by defaulting to normal tracing", customTracingClass), e); } } instance = null != tracing ? tracing : new TracingImpl(); @@ -138,7 +138,10 @@ public abstract class Tracing implements ExecutorLocal<TraceState> public UUID newSession(Map<String,ByteBuffer> customPayload) { - return newSession(TraceType.QUERY); + return newSession( + TimeUUIDType.instance.compose(ByteBuffer.wrap(UUIDGen.getTimeUUIDBytes())), + TraceType.QUERY, + customPayload); } public UUID newSession(TraceType traceType) @@ -151,9 +154,10 @@ public abstract class Tracing implements ExecutorLocal<TraceState> public UUID newSession(UUID sessionId, Map<String,ByteBuffer> customPayload) { - return newSession(sessionId, TraceType.QUERY, Collections.EMPTY_MAP); + return newSession(sessionId, TraceType.QUERY, customPayload); } + /** This method is intended to be overridden in tracing implementations that need access to the customPayload */ protected UUID newSession(UUID sessionId, TraceType traceType, Map<String,ByteBuffer> customPayload) { assert get() == null; http://git-wip-us.apache.org/repos/asf/cassandra/blob/f0c94a43/test/unit/org/apache/cassandra/tracing/TracingTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/tracing/TracingTest.java b/test/unit/org/apache/cassandra/tracing/TracingTest.java index ab6d03d..a5ad610 100644 --- a/test/unit/org/apache/cassandra/tracing/TracingTest.java +++ b/test/unit/org/apache/cassandra/tracing/TracingTest.java @@ -22,6 +22,7 @@ import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -102,6 +103,32 @@ public final class TracingTest } @Test + public void test_customPayload() + { + List<String> traces = new ArrayList<>(); + ByteBuffer customPayloadValue = ByteBuffer.wrap("test-value".getBytes()); + + Map<String,ByteBuffer> customPayload = Collections.singletonMap("test-key", customPayloadValue); + + TracingImpl tracing = new TracingImpl(traces); + tracing.newSession(customPayload); + TraceState state = tracing.begin("test-custom_payload", Collections.<String,String>emptyMap()); + state.trace("test-1"); + state.trace("test-2"); + state.trace("test-3"); + tracing.stopSession(); + + assert null == tracing.get(); + assert 4 == traces.size(); + assert "test-custom_payload".equals(traces.get(0)); + assert "test-1".equals(traces.get(1)); + assert "test-2".equals(traces.get(2)); + assert "test-3".equals(traces.get(3)); + assert tracing.payloads.containsKey("test-key"); + assert customPayloadValue.equals(tracing.payloads.get("test-key")); + } + + @Test public void test_states() { List<String> traces = new ArrayList<>(); @@ -145,6 +172,7 @@ public final class TracingTest private class TracingImpl extends Tracing { private final List<String> traces; + private final Map<String,ByteBuffer> payloads = new HashMap<>(); public TracingImpl(List<String> traces) { @@ -160,6 +188,12 @@ public final class TracingTest return get(); } + protected UUID newSession(UUID sessionId, TraceType traceType, Map<String,ByteBuffer> customPayload) + { + payloads.putAll(customPayload); + return super.newSession(sessionId, traceType, customPayload); + } + protected TraceState newTraceState(InetAddress ia, UUID uuid, Tracing.TraceType tt) { return new TraceState(ia, uuid, tt)
