You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/07/27 17:22:47 UTC

svn commit: r1151495 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/utils/NodeId.java

Author: slebresne
Date: Wed Jul 27 15:22:46 2011
New Revision: 1151495

URL: http://svn.apache.org/viewvc?rev=1151495&view=rev
Log:
Use lazy initialization instead of class initialization in NodeId
patch by slebresne; reviewed by jbellis for CASSANDRA-2953

Modified:
    cassandra/branches/cassandra-0.8/CHANGES.txt
    cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/NodeId.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1151495&r1=1151494&r2=1151495&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Wed Jul 27 15:22:46 2011
@@ -9,6 +9,8 @@
  * log Java classpath on startup (CASSANDRA-2895)
  * keep gossipped version in sync with actual on migration coordinator 
    (CASSANDRA-2946)
+ * use lazy initialization instead of class initialization in NodeId
+   (CASSANDRA-2953)
 
 
 0.8.2

Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/NodeId.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/NodeId.java?rev=1151495&r1=1151494&r2=1151495&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/NodeId.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/NodeId.java Wed Jul 27 15:22:46 2011
@@ -35,13 +35,23 @@ public class NodeId implements Comparabl
 
     public static final int LENGTH = 16; // we assume a fixed length size for all NodeIds
 
-    private static final LocalNodeIdHistory localIds = new LocalNodeIdHistory();
+    // Lazy holder because this opens the system table and we want to avoid
+    // having this triggered during class initialization
+    private static class LocalIds
+    {
+        static final LocalNodeIdHistory instance = new LocalNodeIdHistory();
+    }
 
     private ByteBuffer id;
 
+    private static LocalNodeIdHistory localIds()
+    {
+        return LocalIds.instance;
+    }
+
     public static NodeId getLocalId()
     {
-        return localIds.current.get();
+        return localIds().current.get();
     }
 
     /**
@@ -51,7 +61,7 @@ public class NodeId implements Comparabl
      */
     public static synchronized void renewLocalId()
     {
-        localIds.renewCurrent();
+        localIds().renewCurrent();
     }
 
     /**
@@ -61,7 +71,7 @@ public class NodeId implements Comparabl
      */
     public static List<NodeIdRecord> getOldLocalNodeIds()
     {
-        return localIds.olds;
+        return localIds().olds;
     }
 
     /**