Author: jbellis
Date: Thu Oct 20 16:36:36 2011
New Revision: 1186902

URL: http://svn.apache.org/viewvc?rev=1186902&view=rev
Log:
optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost
patch by Yang Yang; reviewed by jbellis for CASSANDRA-3387

Modified:
    cassandra/branches/cassandra-1.0/CHANGES.txt
    
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/utils/UUIDGen.java

Modified: cassandra/branches/cassandra-1.0/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1186902&r1=1186901&r2=1186902&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0/CHANGES.txt Thu Oct 20 16:36:36 2011
@@ -43,6 +43,8 @@
  * fix Deflate compression when compression actually makes the data bigger
    (CASSANDRA-3370)
  * avoid locking on update when no indexes are involved (CASSANDRA-3386)
+ * optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost 
+   (CASSANDRA-3387)
 
 
 1.0.0-final

Modified: 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/utils/UUIDGen.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/utils/UUIDGen.java?rev=1186902&r1=1186901&r2=1186902&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/utils/UUIDGen.java
 (original)
+++ 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/utils/UUIDGen.java
 Thu Oct 20 16:36:36 2011
@@ -22,7 +22,6 @@ package org.apache.cassandra.utils;
 
 import java.io.*;
 import java.net.InetAddress;
-import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Map;
@@ -123,7 +122,7 @@ public class UUIDGen
     
     private static byte[] createTimeUUIDBytes(long msb)
     {
-        long lsb = instance.getClockSeqAndNode();
+        long lsb = instance.getClockSeqAndNode(FBUtilities.getLocalAddress());
         byte[] uuidBytes = new byte[16];
         
         for (int i = 0; i < 8; i++)
@@ -148,19 +147,7 @@ public class UUIDGen
             throw new IllegalArgumentException("incompatible with uuid 
version: "+uuid.version());
         return (uuid.timestamp() / 10000) - START_EPOCH;
     }
-    
-    private long getClockSeqAndNode()
-    {
-        try
-        {
-            return getClockSeqAndNode(InetAddress.getLocalHost());
-        }
-        catch (UnknownHostException e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-    
+
     // todo: could cache value if we assume node doesn't change.
     private long getClockSeqAndNode(InetAddress addr)
     {


Reply via email to