You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/10/25 16:50:23 UTC
[1/2] git commit: use original session stopwatch on callback thread
Updated Branches:
refs/heads/trunk e93eacec7 -> 6adf52c94
use original session stopwatch on callback thread
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ec9af99d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ec9af99d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ec9af99d
Branch: refs/heads/trunk
Commit: ec9af99dabe27c67f87d61c2f998771c4f2a2d90
Parents: e93eace
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Oct 24 20:53:30 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Oct 25 09:50:19 2012 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/tracing/Tracing.java | 31 ++++++++------
1 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ec9af99d/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 5e6b3d0..c158b10 100644
--- a/src/java/org/apache/cassandra/tracing/Tracing.java
+++ b/src/java/org/apache/cassandra/tracing/Tracing.java
@@ -20,14 +20,15 @@
*/
package org.apache.cassandra.tracing;
-import static com.google.common.base.Preconditions.checkState;
-import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
-
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.concurrent.StageManager;
@@ -48,8 +49,7 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.UUIDGen;
import org.apache.cassandra.utils.WrappedRunnable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
/**
* A trace session context. Able to track and store trace sessions. A session is usually a user initiated query, and may
@@ -80,6 +80,9 @@ public class Tracing
private final ThreadLocal<TraceState> state = new ThreadLocal<TraceState>();
+ /** sessions that were initiated on this node */
+ private final Map<UUID, TraceState> initiatedSessions = new ConcurrentHashMap<UUID, TraceState>();
+
public static void addColumn(ColumnFamily cf, ByteBuffer name, Object value)
{
cf.addColumn(new ExpiringColumn(name, ByteBufferUtil.bytes(value.toString()), System.currentTimeMillis(), TTL));
@@ -141,11 +144,6 @@ public class Tracing
return instance != null && instance.state.get() != null;
}
- public void reset()
- {
- state.set(null);
- }
-
public UUID newSession()
{
return newSession(TimeUUIDType.instance.compose(ByteBuffer.wrap(UUIDGen.getTimeUUIDBytes())));
@@ -157,6 +155,7 @@ public class Tracing
TraceState ts = new TraceState(localAddress, sessionId);
state.set(ts);
+ initiatedSessions.put(sessionId, ts);
return sessionId;
}
@@ -187,7 +186,8 @@ public class Tracing
}
});
- reset();
+ initiatedSessions.remove(state.sessionId);
+ this.state.set(null);
}
}
@@ -247,7 +247,12 @@ public class Tracing
return;
}
- checkState(sessionBytes.length == 16);
- state.set(new TraceState(message.from, UUIDGen.getUUID(ByteBuffer.wrap(sessionBytes))));
+ assert sessionBytes.length == 16;
+
+ UUID sessionId = UUIDGen.getUUID(ByteBuffer.wrap(sessionBytes));
+ TraceState ts = initiatedSessions.get(sessionId);
+ if (ts == null)
+ ts = new TraceState(message.from, sessionId);
+ state.set(ts);
}
}