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 2013/06/24 15:46:34 UTC

[1/2] git commit: replace assert+cast w/ checkedCast

Updated Branches:
  refs/heads/trunk 36ef643e4 -> 15df6691c


replace assert+cast w/ checkedCast


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b48bd56e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b48bd56e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b48bd56e

Branch: refs/heads/trunk
Commit: b48bd56e78788f0cd20735fdb7d9bfcbfb999cf7
Parents: 36ef643
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Jun 24 06:41:22 2013 -0700
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Jun 24 06:41:22 2013 -0700

----------------------------------------------------------------------
 src/java/org/apache/cassandra/db/RowIndexEntry.java | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/b48bd56e/src/java/org/apache/cassandra/db/RowIndexEntry.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RowIndexEntry.java b/src/java/org/apache/cassandra/db/RowIndexEntry.java
index 2819ae0..cfc7cf1 100644
--- a/src/java/org/apache/cassandra/db/RowIndexEntry.java
+++ b/src/java/org/apache/cassandra/db/RowIndexEntry.java
@@ -24,6 +24,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import com.google.common.primitives.Ints;
+
 import org.apache.cassandra.cache.IMeasurableMemory;
 import org.apache.cassandra.io.sstable.Descriptor;
 import org.apache.cassandra.io.sstable.IndexHelper;
@@ -181,8 +183,7 @@ public class RowIndexEntry implements IMeasurableMemory
             for (IndexHelper.IndexInfo info : columnsIndex)
                 size += info.serializedSize(typeSizes);
 
-            assert size <= Integer.MAX_VALUE;
-            return (int)size;
+            return Ints.checkedCast(size);
         }
 
         @Override


[2/2] git commit: Tracing cleanup patch by Mikhail Mazursky; reviewed by jbellis for CASSANDRA-5625

Posted by jb...@apache.org.
Tracing cleanup
patch by Mikhail Mazursky; reviewed by jbellis for CASSANDRA-5625


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/15df6691
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/15df6691
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/15df6691

Branch: refs/heads/trunk
Commit: 15df6691caf9e681727338d66d8f8b0d42843177
Parents: b48bd56
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Jun 24 06:46:28 2013 -0700
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Jun 24 06:46:28 2013 -0700

----------------------------------------------------------------------
 .../DebuggableThreadPoolExecutor.java           |  6 +-
 .../org/apache/cassandra/net/MessageOut.java    |  2 +-
 .../apache/cassandra/net/MessagingService.java  |  2 +-
 .../cassandra/net/OutboundTcpConnection.java    |  4 +-
 .../apache/cassandra/service/QueryState.java    |  4 +-
 .../cassandra/service/StorageService.java       |  1 -
 .../cassandra/thrift/CassandraServer.java       | 84 ++++++++++----------
 .../org/apache/cassandra/tracing/Tracing.java   | 41 +++-------
 .../transport/messages/BatchMessage.java        |  4 +-
 .../transport/messages/ExecuteMessage.java      |  4 +-
 .../transport/messages/PrepareMessage.java      |  4 +-
 .../transport/messages/QueryMessage.java        |  4 +-
 12 files changed, 70 insertions(+), 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java b/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
index 46a3216..665f0b0 100644
--- a/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
+++ b/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
@@ -266,7 +266,7 @@ public class DebuggableThreadPoolExecutor extends ThreadPoolExecutor implements
         public TraceSessionWrapper(Callable<T> callable)
         {
             super(callable);
-            state = Tracing.instance().get();
+            state = Tracing.instance.get();
         }
 
         public TraceSessionWrapper(Runnable command, TraceState state)
@@ -277,12 +277,12 @@ public class DebuggableThreadPoolExecutor extends ThreadPoolExecutor implements
 
         private void setupContext()
         {
-            Tracing.instance().set(state);
+            Tracing.instance.set(state);
         }
 
         private void reset()
         {
-            Tracing.instance().set(null);
+            Tracing.instance.set(null);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/net/MessageOut.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessageOut.java b/src/java/org/apache/cassandra/net/MessageOut.java
index e10fcee..dd6cae8 100644
--- a/src/java/org/apache/cassandra/net/MessageOut.java
+++ b/src/java/org/apache/cassandra/net/MessageOut.java
@@ -57,7 +57,7 @@ public class MessageOut<T>
         this(verb,
              payload,
              serializer,
-             isTracing() ? ImmutableMap.of(TRACE_HEADER, UUIDGen.decompose(Tracing.instance().getSessionId()))
+             isTracing() ? ImmutableMap.of(TRACE_HEADER, UUIDGen.decompose(Tracing.instance.getSessionId()))
                          : Collections.<String, byte[]>emptyMap());
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index e01183c..43e2cb2 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -680,7 +680,7 @@ public final class MessagingService implements MessagingServiceMBean
 
     public void receive(MessageIn message, int id, long timestamp)
     {
-        TraceState state = Tracing.instance().initializeFromMessage(message);
+        TraceState state = Tracing.instance.initializeFromMessage(message);
         if (state != null)
             state.trace("Message received from {}", message.from);
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
index ba13644..4c6f498 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
@@ -181,7 +181,7 @@ public class OutboundTcpConnection extends Thread
             if (sessionBytes != null)
             {
                 UUID sessionId = UUIDGen.getUUID(ByteBuffer.wrap(sessionBytes));
-                TraceState state = Tracing.instance().get(sessionId);
+                TraceState state = Tracing.instance.get(sessionId);
                 String message = String.format("Sending message to %s", poolReference.endPoint());
                 // session may have already finished; see CASSANDRA-5668
                 if (state == null)
@@ -192,7 +192,7 @@ public class OutboundTcpConnection extends Thread
                 {
                     state.trace(message);
                     if (qm.message.verb == MessagingService.Verb.REQUEST_RESPONSE)
-                        Tracing.instance().stopNonLocal(state);
+                        Tracing.instance.stopNonLocal(state);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 49feb3b..6483d9b 100644
--- a/src/java/org/apache/cassandra/service/QueryState.java
+++ b/src/java/org/apache/cassandra/service/QueryState.java
@@ -72,13 +72,13 @@ public class QueryState
     {
         if (this.preparedTracingSession == null)
         {
-            Tracing.instance().newSession();
+            Tracing.instance.newSession();
         }
         else
         {
             UUID session = this.preparedTracingSession;
             this.preparedTracingSession = null;
-            Tracing.instance().newSession(session);
+            Tracing.instance.newSession(session);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 5e30207..accc2c5 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -878,7 +878,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             // Dont set any state for the node which is bootstrapping the existing token...
             tokenMetadata.updateNormalTokens(tokens, FBUtilities.getBroadcastAddress());
         }
-        Tracing.instance();
         setMode(Mode.JOINING, "Starting to bootstrap...", true);
         new BootStrapper(FBUtilities.getBroadcastAddress(), tokens, tokenMetadata).bootstrap(); // handles token update
         logger.info("Bootstrap completed! for the tokens {}", tokens);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 4e71a84..55688a8 100644
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@ -297,7 +297,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_parent", column_parent.toString(),
                                                                   "predicate", predicate.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get_slice", traceParameters);
+            Tracing.instance.begin("get_slice", traceParameters);
         }
         else
         {
@@ -317,7 +317,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -344,7 +344,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_parent", column_parent.toString(),
                                                                   "predicate", predicate.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("multiget_slice", traceParameters);
+            Tracing.instance.begin("multiget_slice", traceParameters);
         }
         else
         {
@@ -364,7 +364,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -428,7 +428,7 @@ public class CassandraServer implements Cassandra.Iface
             Map<String, String> traceParameters = ImmutableMap.of("key", ByteBufferUtil.bytesToHex(key),
                                                                   "column_path", column_path.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get", traceParameters);
+            Tracing.instance.begin("get", traceParameters);
         }
         else
         {
@@ -484,7 +484,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -497,7 +497,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_parent", column_parent.toString(),
                                                                   "predicate", predicate.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get_count", traceParameters);
+            Tracing.instance.begin("get_count", traceParameters);
         }
         else
         {
@@ -577,7 +577,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -602,7 +602,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_parent", column_parent.toString(),
                                                                   "predicate", predicate.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("multiget_count", traceParameters);
+            Tracing.instance.begin("multiget_count", traceParameters);
         }
         else
         {
@@ -633,7 +633,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -682,7 +682,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_parent", column_parent.toString(),
                                                                   "column", column.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("insert", traceParameters);
+            Tracing.instance.begin("insert", traceParameters);
         }
         else
         {
@@ -699,7 +699,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -712,7 +712,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_family", column_family,
                                                                   "old", expected.toString(),
                                                                   "updates", updates.toString());
-            Tracing.instance().begin("cas", traceParameters);
+            Tracing.instance.begin("cas", traceParameters);
         }
         else
         {
@@ -779,7 +779,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -914,7 +914,7 @@ public class CassandraServer implements Cassandra.Iface
                                     Joiner.on(";").withKeyValueSeparator(":").join(mutationEntry.getValue()));
             }
             traceParameters.put("consistency_level", consistency_level.name());
-            Tracing.instance().begin("batch_mutate", traceParameters);
+            Tracing.instance.begin("batch_mutate", traceParameters);
         }
         else
         {
@@ -931,7 +931,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -947,7 +947,7 @@ public class CassandraServer implements Cassandra.Iface
                                     Joiner.on(";").withKeyValueSeparator(":").join(mutationEntry.getValue()));
             }
             traceParameters.put("consistency_level", consistency_level.name());
-            Tracing.instance().begin("atomic_batch_mutate", traceParameters);
+            Tracing.instance.begin("atomic_batch_mutate", traceParameters);
         }
         else
         {
@@ -964,7 +964,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1006,7 +1006,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "column_path", column_path.toString(),
                                                                   "timestamp", timestamp + "",
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("remove", traceParameters);
+            Tracing.instance.begin("remove", traceParameters);
         }
         else
         {
@@ -1023,7 +1023,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1089,7 +1089,7 @@ public class CassandraServer implements Cassandra.Iface
                     "predicate", predicate.toString(),
                     "range", range.toString(),
                     "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get_range_slices", traceParameters);
+            Tracing.instance.begin("get_range_slices", traceParameters);
         }
         else
         {
@@ -1165,7 +1165,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1178,7 +1178,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "range", range.toString(),
                                                                   "start_column", ByteBufferUtil.bytesToHex(start_column),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get_paged_slice", traceParameters);
+            Tracing.instance.begin("get_paged_slice", traceParameters);
         }
         else
         {
@@ -1258,7 +1258,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1284,7 +1284,7 @@ public class CassandraServer implements Cassandra.Iface
                                                                   "index_clause", index_clause.toString(),
                                                                   "slice_predicate", column_predicate.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("get_indexed_slices", traceParameters);
+            Tracing.instance.begin("get_indexed_slices", traceParameters);
         }
         else
         {
@@ -1335,7 +1335,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1632,7 +1632,7 @@ public class CassandraServer implements Cassandra.Iface
 
             if (startSessionIfRequested())
             {
-                Tracing.instance().begin("truncate", ImmutableMap.of("cf", cfname, "ks", keyspace));
+                Tracing.instance.begin("truncate", ImmutableMap.of("cf", cfname, "ks", keyspace));
             }
             else
             {
@@ -1668,7 +1668,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1700,7 +1700,7 @@ public class CassandraServer implements Cassandra.Iface
             Map<String, String> traceParameters = ImmutableMap.of("column_parent", column_parent.toString(),
                                                                   "column", column.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("add", traceParameters);
+            Tracing.instance.begin("add", traceParameters);
         }
         else
         {
@@ -1744,7 +1744,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1756,7 +1756,7 @@ public class CassandraServer implements Cassandra.Iface
             Map<String, String> traceParameters = ImmutableMap.of("key", ByteBufferUtil.bytesToHex(key),
                                                                   "column_path", path.toString(),
                                                                   "consistency_level", consistency_level.name());
-            Tracing.instance().begin("remove_counter", traceParameters);
+            Tracing.instance.begin("remove_counter", traceParameters);
         }
         else
         {
@@ -1773,7 +1773,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1866,8 +1866,8 @@ public class CassandraServer implements Cassandra.Iface
             String queryString = uncompress(query, compression);
             if (startSessionIfRequested())
             {
-                Tracing.instance().begin("execute_cql_query",
-                                         ImmutableMap.of("query", queryString));
+                Tracing.instance.begin("execute_cql_query",
+                                       ImmutableMap.of("query", queryString));
             }
             else
             {
@@ -1887,7 +1887,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1900,8 +1900,8 @@ public class CassandraServer implements Cassandra.Iface
             String queryString = uncompress(query, compression);
             if (startSessionIfRequested())
             {
-                Tracing.instance().begin("execute_cql3_query",
-                                         ImmutableMap.of("query", queryString));
+                Tracing.instance.begin("execute_cql3_query",
+                                       ImmutableMap.of("query", queryString));
             }
             else
             {
@@ -1922,7 +1922,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -1974,7 +1974,7 @@ public class CassandraServer implements Cassandra.Iface
         if (startSessionIfRequested())
         {
             // TODO we don't have [typed] access to CQL bind variables here.  CASSANDRA-4560 is open to add support.
-            Tracing.instance().begin("execute_prepared_cql_query", Collections.<String, String>emptyMap());
+            Tracing.instance.begin("execute_prepared_cql_query", Collections.<String, String>emptyMap());
         }
         else
         {
@@ -2003,7 +2003,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 
@@ -2015,7 +2015,7 @@ public class CassandraServer implements Cassandra.Iface
         if (startSessionIfRequested())
         {
             // TODO we don't have [typed] access to CQL bind variables here.  CASSANDRA-4560 is open to add support.
-            Tracing.instance().begin("execute_prepared_cql3_query", Collections.<String, String>emptyMap());
+            Tracing.instance.begin("execute_prepared_cql3_query", Collections.<String, String>emptyMap());
         }
         else
         {
@@ -2047,7 +2047,7 @@ public class CassandraServer implements Cassandra.Iface
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 b67e06b..815c550 100644
--- a/src/java/org/apache/cassandra/tracing/Tracing.java
+++ b/src/java/org/apache/cassandra/tracing/Tracing.java
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,23 +59,15 @@ public class Tracing
 
     private static final int TTL = 24 * 3600;
 
-    private static Tracing instance = new Tracing();
+    private static final Logger logger = LoggerFactory.getLogger(Tracing.class);
 
-    public static final Logger logger = LoggerFactory.getLogger(Tracing.class);
-
-    /**
-     * Fetches and lazy initializes the trace context.
-     */
-    public static Tracing instance()
-    {
-        return instance;
-    }
-
-    private InetAddress localAddress = FBUtilities.getLocalAddress();
+    private final InetAddress localAddress = FBUtilities.getLocalAddress();
 
     private final ThreadLocal<TraceState> state = new ThreadLocal<TraceState>();
 
-    private final Map<UUID, TraceState> sessions = new ConcurrentHashMap<UUID, TraceState>();
+    private final ConcurrentMap<UUID, TraceState> sessions = new ConcurrentHashMap<UUID, TraceState>();
+
+    public static final Tracing instance = new Tracing();
 
     public static void addColumn(ColumnFamily cf, ByteBuffer name, InetAddress address)
     {
@@ -129,7 +122,7 @@ public class Tracing
      */
     public static boolean isTracing()
     {
-        return instance != null && instance.state.get() != null;
+        return instance.state.get() != null;
     }
 
     public UUID newSession()
@@ -256,10 +249,7 @@ public class Tracing
 
     public static void trace(String message)
     {
-        if (Tracing.instance() == null) // instance might not be built at the time this is called
-            return;
-
-        final TraceState state = Tracing.instance().get();
+        final TraceState state = instance.get();
         if (state == null) // inline isTracing to avoid implicit two calls to state.get()
             return;
 
@@ -268,10 +258,7 @@ public class Tracing
 
     public static void trace(String format, Object arg)
     {
-        if (Tracing.instance() == null) // instance might not be built at the time this is called
-            return;
-
-        final TraceState state = Tracing.instance().get();
+        final TraceState state = instance.get();
         if (state == null) // inline isTracing to avoid implicit two calls to state.get()
             return;
 
@@ -280,10 +267,7 @@ public class Tracing
 
     public static void trace(String format, Object arg1, Object arg2)
     {
-        if (Tracing.instance() == null) // instance might not be built at the time this is called
-            return;
-
-        final TraceState state = Tracing.instance().get();
+        final TraceState state = instance.get();
         if (state == null) // inline isTracing to avoid implicit two calls to state.get()
             return;
 
@@ -292,10 +276,7 @@ public class Tracing
 
     public static void trace(String format, Object[] args)
     {
-        if (Tracing.instance() == null) // instance might not be built at the time this is called
-            return;
-
-        final TraceState state = Tracing.instance().get();
+        final TraceState state = instance.get();
         if (state == null) // inline isTracing to avoid implicit two calls to state.get()
             return;
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 ed8aaaf..299d8b8 100644
--- a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java
+++ b/src/java/org/apache/cassandra/transport/messages/BatchMessage.java
@@ -178,7 +178,7 @@ public class BatchMessage extends Message.Request
             {
                 state.createTracingSession();
                 // TODO we don't have [typed] access to CQL bind variables here.  CASSANDRA-4560 is open to add support.
-                Tracing.instance().begin("Execute batch of CQL3 queries", Collections.<String, String>emptyMap());
+                Tracing.instance.begin("Execute batch of CQL3 queries", Collections.<String, String>emptyMap());
             }
 
             List<ModificationStatement> statements = new ArrayList<ModificationStatement>(queryOrIdList.size());
@@ -235,7 +235,7 @@ public class BatchMessage extends Message.Request
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java b/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java
index 62fa10a..8e2b761 100644
--- a/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java
+++ b/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java
@@ -115,7 +115,7 @@ public class ExecuteMessage extends Message.Request
             {
                 state.createTracingSession();
                 // TODO we don't have [typed] access to CQL bind variables here.  CASSANDRA-4560 is open to add support.
-                Tracing.instance().begin("Execute CQL3 prepared query", Collections.<String, String>emptyMap());
+                Tracing.instance.begin("Execute CQL3 prepared query", Collections.<String, String>emptyMap());
             }
 
             Message.Response response = QueryProcessor.processPrepared(statement, consistency, state, values);
@@ -131,7 +131,7 @@ public class ExecuteMessage extends Message.Request
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 13f6321..3e7fe51 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();
-                Tracing.instance().begin("Preparing CQL3 query", ImmutableMap.of("query", query));
+                Tracing.instance.begin("Preparing CQL3 query", ImmutableMap.of("query", query));
             }
 
             Message.Response response = QueryProcessor.prepare(query, state.getClientState(), false);
@@ -87,7 +87,7 @@ public class PrepareMessage extends Message.Request
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/15df6691/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 9735654..e334b02 100644
--- a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java
+++ b/src/java/org/apache/cassandra/transport/messages/QueryMessage.java
@@ -117,7 +117,7 @@ public class QueryMessage extends Message.Request
             if (state.traceNextQuery())
             {
                 state.createTracingSession();
-                Tracing.instance().begin("Execute CQL3 query", ImmutableMap.of("query", query));
+                Tracing.instance.begin("Execute CQL3 query", ImmutableMap.of("query", query));
             }
 
             Message.Response response = QueryProcessor.process(query, values, consistency, state);
@@ -135,7 +135,7 @@ public class QueryMessage extends Message.Request
         }
         finally
         {
-            Tracing.instance().stopSession();
+            Tracing.instance.stopSession();
         }
     }