Tracing payload not passed from QueryMessage to tracing session Patch by Mick Semb Wever; Reviewed by T Jake Luciani for CASSANDRA-12835
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/44eb797a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/44eb797a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/44eb797a Branch: refs/heads/trunk Commit: 44eb797ad7028fe7b4fcd49800162db7c5c87cdc Parents: ba9beea Author: Mick Semb Wever <m...@apache.org> Authored: Tue Oct 25 20:00:46 2016 +1100 Committer: Mick Semb Wever <m...@apache.org> Committed: Sun Apr 23 12:14:25 2017 +1000 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../apache/cassandra/service/QueryState.java | 6 ----- .../cassandra/thrift/CassandraServer.java | 2 +- .../transport/messages/BatchMessage.java | 2 +- .../transport/messages/PrepareMessage.java | 2 +- .../transport/messages/QueryMessage.java | 2 +- .../apache/cassandra/tracing/TracingTest.java | 25 +++++++++++--------- 7 files changed, 19 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 08df2dd..2ae052e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -25,6 +25,7 @@ * Address message coalescing regression (CASSANDRA-12676) * Delete illegal character from StandardTokenizerImpl.jflex (CASSANDRA-13417) * Fix cqlsh automatic protocol downgrade regression (CASSANDRA-13307) + * Tracing payload not passed from QueryMessage to tracing session (CASSANDRA-12835) Merged from 3.0: * Fail repair if insufficient responses received (CASSANDRA-13397) * Fix SSTableLoader fail when the loaded table contains dropped columns (CASSANDRA-13276) http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/src/java/org/apache/cassandra/service/QueryState.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/QueryState.java b/src/java/org/apache/cassandra/service/QueryState.java index c70c692..f0ae3b2 100644 --- a/src/java/org/apache/cassandra/service/QueryState.java +++ b/src/java/org/apache/cassandra/service/QueryState.java @@ -19,7 +19,6 @@ package org.apache.cassandra.service; import java.net.InetAddress; import java.nio.ByteBuffer; -import java.util.Collections; import java.util.Map; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; @@ -77,11 +76,6 @@ public class QueryState this.preparedTracingSession = sessionId; } - public void createTracingSession() - { - createTracingSession(Collections.EMPTY_MAP); - } - public void createTracingSession(Map<String,ByteBuffer> customPayload) { UUID session = this.preparedTracingSession; http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/src/java/org/apache/cassandra/thrift/CassandraServer.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java b/src/java/org/apache/cassandra/thrift/CassandraServer.java index 351d463..04a3e66 100644 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@ -2525,7 +2525,7 @@ public class CassandraServer implements Cassandra.Iface { if (state().getQueryState().traceNextQuery()) { - state().getQueryState().createTracingSession(); + state().getQueryState().createTracingSession(Collections.EMPTY_MAP); return true; } return false; http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java b/src/java/org/apache/cassandra/transport/messages/BatchMessage.java index bb6411f..0be027f 100644 --- a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/BatchMessage.java @@ -160,7 +160,7 @@ public class BatchMessage extends Message.Request if (state.traceNextQuery()) { - state.createTracingSession(); + state.createTracingSession(getCustomPayload()); ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); if(options.getConsistency() != null) http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/src/java/org/apache/cassandra/transport/messages/PrepareMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/PrepareMessage.java b/src/java/org/apache/cassandra/transport/messages/PrepareMessage.java index b0c9dbe..04d2966 100644 --- a/src/java/org/apache/cassandra/transport/messages/PrepareMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/PrepareMessage.java @@ -71,7 +71,7 @@ public class PrepareMessage extends Message.Request if (state.traceNextQuery()) { - state.createTracingSession(); + state.createTracingSession(getCustomPayload()); Tracing.instance.begin("Preparing CQL3 query", state.getClientAddress(), ImmutableMap.of("query", query)); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java b/src/java/org/apache/cassandra/transport/messages/QueryMessage.java index 25d4e9e..4c761dd 100644 --- a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/QueryMessage.java @@ -99,7 +99,7 @@ public class QueryMessage extends Message.Request if (state.traceNextQuery()) { - state.createTracingSession(); + state.createTracingSession(getCustomPayload()); ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); builder.put("query", query); http://git-wip-us.apache.org/repos/asf/cassandra/blob/44eb797a/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 a5ad610..f546496 100644 --- a/test/unit/org/apache/cassandra/tracing/TracingTest.java +++ b/test/unit/org/apache/cassandra/tracing/TracingTest.java @@ -32,7 +32,7 @@ import org.junit.Test; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.utils.progress.ProgressEvent; -import org.apache.cassandra.utils.progress.ProgressListener; +import org.apache.commons.lang3.StringUtils; public final class TracingTest { @@ -154,26 +154,26 @@ public final class TracingTest tracing.begin("test-request", Collections.<String,String>emptyMap()); tracing.get().enableActivityNotification("test-tag"); - tracing.get().addProgressListener( - new ProgressListener() - { - public void progress(String tag, ProgressEvent pe) - { - assert "test-tag".equals(tag); - assert "test-trace".equals(pe.getMessage()); - } - }); + tracing.get().addProgressListener((String tag, ProgressEvent pe) -> { + assert "test-tag".equals(tag); + assert "test-trace".equals(pe.getMessage()); + }); tracing.get().trace("test-trace"); tracing.stopSession(); assert null == tracing.get(); } - private class TracingImpl extends Tracing + private static final class TracingImpl extends Tracing { private final List<String> traces; private final Map<String,ByteBuffer> payloads = new HashMap<>(); + public TracingImpl() + { + this(new ArrayList<>()); + } + public TracingImpl(List<String> traces) { this.traces = traces; @@ -190,6 +190,9 @@ public final class TracingTest protected UUID newSession(UUID sessionId, TraceType traceType, Map<String,ByteBuffer> customPayload) { + if (!customPayload.isEmpty()) + logger.info("adding custom payload items {}", StringUtils.join(customPayload.keySet(), ',')); + payloads.putAll(customPayload); return super.newSession(sessionId, traceType, customPayload); }