You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2014/09/15 16:04:14 UTC

[1/5] git commit: Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 094aa8ef2 -> 1d7691e25
  refs/heads/trunk e225176b3 -> 35af28e55


Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom

patch by benedict; reviewed by tjake for CASSANDRA-7934


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

Branch: refs/heads/cassandra-2.1
Commit: 028880e74ceef57b33b858fbd78d8aa9ac3b9680
Parents: 094aa8e
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Sep 15 14:56:39 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Sep 15 15:02:06 2014 +0100

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 src/java/org/apache/cassandra/config/CFMetaData.java  |  3 ++-
 src/java/org/apache/cassandra/db/BatchlogManager.java |  2 +-
 .../org/apache/cassandra/dht/Murmur3Partitioner.java  |  3 ++-
 .../io/compress/CompressedRandomAccessReader.java     |  3 ++-
 src/java/org/apache/cassandra/service/QueryState.java |  3 ++-
 .../org/apache/cassandra/service/StorageProxy.java    |  8 ++++----
 .../streaming/compress/CompressedInputStream.java     |  3 ++-
 src/java/org/apache/cassandra/utils/FBUtilities.java  | 14 --------------
 9 files changed, 16 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 608e4b1..ffa2b71 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.1
+ * Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom (CASSANDRA-7934)
  * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069)
  * cassandra-stress supports whitelist mode for node config
  * GCInspector more closely tracks GC; cassandra-stress and nodetool report it

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index a5d328a..1d6e3a4 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -35,6 +35,7 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
@@ -703,7 +704,7 @@ public final class CFMetaData
 
     public ReadRepairDecision newReadRepairDecision()
     {
-        double chance = FBUtilities.threadLocalRandom().nextDouble();
+        double chance = ThreadLocalRandom.current().nextDouble();
         if (getReadRepairChance() > chance)
             return ReadRepairDecision.GLOBAL;
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java
index d49c620..7f8d355 100644
--- a/src/java/org/apache/cassandra/db/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/db/BatchlogManager.java
@@ -527,7 +527,7 @@ public class BatchlogManager implements BatchlogManagerMBean
         @VisibleForTesting
         protected int getRandomInt(int bound)
         {
-            return FBUtilities.threadLocalRandom().nextInt(bound);
+            return ThreadLocalRandom.current().nextInt(bound);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
index 5a3c4bb..2bb0423 100644
--- a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
+++ b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.cassandra.db.BufferDecoratedKey;
 import org.apache.cassandra.db.DecoratedKey;
@@ -105,7 +106,7 @@ public class Murmur3Partitioner extends AbstractPartitioner<LongToken>
 
     public LongToken getRandomToken()
     {
-        return new LongToken(normalize(FBUtilities.threadLocalRandom().nextLong()));
+        return new LongToken(normalize(ThreadLocalRandom.current().nextLong()));
     }
 
     private long normalize(long v)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java b/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
index 64495b8..4521c19 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
@@ -19,6 +19,7 @@ package org.apache.cassandra.io.compress;
 
 import java.io.*;
 import java.nio.ByteBuffer;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.zip.Adler32;
 import java.util.zip.CRC32;
 import java.util.zip.Checksum;
@@ -122,7 +123,7 @@ public class CompressedRandomAccessReader extends RandomAccessReader
             throw new CorruptBlockException(getPath(), chunk, e);
         }
 
-        if (metadata.parameters.getCrcCheckChance() > FBUtilities.threadLocalRandom().nextDouble())
+        if (metadata.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
         {
 
             if (metadata.hasPostCompressionAdlerChecksums)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/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 12fc392..0179a3e 100644
--- a/src/java/org/apache/cassandra/service/QueryState.java
+++ b/src/java/org/apache/cassandra/service/QueryState.java
@@ -18,6 +18,7 @@
 package org.apache.cassandra.service;
 
 import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.cassandra.tracing.Tracing;
 import org.apache.cassandra.utils.FBUtilities;
@@ -68,7 +69,7 @@ public class QueryState
         }
 
         double tracingProbability = StorageService.instance.getTracingProbability();
-        return tracingProbability != 0 && FBUtilities.threadLocalRandom().nextDouble() < tracingProbability;
+        return tracingProbability != 0 && ThreadLocalRandom.current().nextDouble() < tracingProbability;
     }
 
     public void prepareTracingSession(UUID sessionId)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 615335b..d9602bb 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -257,7 +257,7 @@ public class StorageProxy implements StorageProxyMBean
             }
 
             Tracing.trace("Paxos proposal not accepted (pre-empted by a higher ballot)");
-            Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+            Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
             // continue to retry
         }
 
@@ -323,7 +323,7 @@ public class StorageProxy implements StorageProxyMBean
             {
                 Tracing.trace("Some replicas have already promised a higher ballot than ours; aborting");
                 // sleep a random amount to give the other proposer a chance to finish
-                Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+                Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
                 continue;
             }
 
@@ -344,7 +344,7 @@ public class StorageProxy implements StorageProxyMBean
                 {
                     Tracing.trace("Some replicas have already promised a higher ballot than ours; aborting");
                     // sleep a random amount to give the other proposer a chance to finish
-                    Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+                    Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
                 }
                 continue;
             }
@@ -1049,7 +1049,7 @@ public class StorageProxy implements StorageProxyMBean
         }
         else
         {
-            return localEndpoints.get(FBUtilities.threadLocalRandom().nextInt(localEndpoints.size()));
+            return localEndpoints.get(ThreadLocalRandom.current().nextInt(localEndpoints.size()));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java b/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
index ef019c2..449546f 100644
--- a/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
+++ b/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
@@ -23,6 +23,7 @@ import java.io.InputStream;
 import java.util.Iterator;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.zip.Adler32;
 import java.util.zip.CRC32;
 import java.util.zip.Checksum;
@@ -114,7 +115,7 @@ public class CompressedInputStream extends InputStream
         totalCompressedBytesRead += compressed.length;
 
         // validate crc randomly
-        if (info.parameters.getCrcCheckChance() > FBUtilities.threadLocalRandom().nextDouble())
+        if (info.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
         {
             if (hasPostCompressionAdlerChecksums)
             {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 38e5834..7e9adab 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -100,15 +100,6 @@ public class FBUtilities
         }
     };
 
-    private static final ThreadLocal<Random> localRandom = new ThreadLocal<Random>()
-    {
-        @Override
-        protected Random initialValue()
-        {
-            return new Random();
-        }
-    };
-
     public static final int MAX_UNSIGNED_SHORT = 0xFFFF;
 
     public static MessageDigest threadLocalMD5Digest()
@@ -128,11 +119,6 @@ public class FBUtilities
         }
     }
 
-    public static Random threadLocalRandom()
-    {
-        return localRandom.get();
-    }
-
     /**
      * Please use getBroadcastAddress instead. You need this only when you have to listen/connect.
      */


[4/5] git commit: ninja-fix CHANGES.txt

Posted by be...@apache.org.
ninja-fix CHANGES.txt


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

Branch: refs/heads/cassandra-2.1
Commit: 1d7691e251e3d170916f138b0980d6a9003cf7db
Parents: 028880e
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Sep 15 14:57:46 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Sep 15 15:02:32 2014 +0100

----------------------------------------------------------------------
 CHANGES.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d7691e2/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ffa2b71..4c0dbf9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,8 +1,8 @@
 2.1.1
  * Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom (CASSANDRA-7934)
  * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069)
- * cassandra-stress supports whitelist mode for node config
- * GCInspector more closely tracks GC; cassandra-stress and nodetool report it
+ * cassandra-stress supports whitelist mode for node config (CASSANDRA-7658)
+ * GCInspector more closely tracks GC; cassandra-stress and nodetool report it (CASSANDRA-7916)
  * nodetool won't output bogus ownership info without a keyspace (CASSANDRA-7173)
  * Add human readable option to nodetool commands (CASSANDRA-5433)
  * Don't try to set repairedAt on old sstables (CASSANDRA-7913)


[5/5] git commit: Merge branch 'cassandra-2.1' into trunk

Posted by be...@apache.org.
Merge branch 'cassandra-2.1' into trunk

Conflicts:
	src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
	src/java/org/apache/cassandra/service/QueryState.java


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

Branch: refs/heads/trunk
Commit: 35af28e550cd80be7df36283fe283454977a2a37
Parents: e225176 1d7691e
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Sep 15 15:03:29 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Sep 15 15:03:29 2014 +0100

----------------------------------------------------------------------
 CHANGES.txt                                           |  5 +++--
 src/java/org/apache/cassandra/config/CFMetaData.java  |  3 ++-
 src/java/org/apache/cassandra/db/BatchlogManager.java |  2 +-
 .../org/apache/cassandra/dht/Murmur3Partitioner.java  |  3 ++-
 .../io/compress/CompressedRandomAccessReader.java     |  3 ++-
 src/java/org/apache/cassandra/service/QueryState.java |  3 ++-
 .../org/apache/cassandra/service/StorageProxy.java    |  8 ++++----
 .../streaming/compress/CompressedInputStream.java     |  3 ++-
 src/java/org/apache/cassandra/utils/FBUtilities.java  | 14 --------------
 9 files changed, 18 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index bf3567f,4c0dbf9..b6e9165
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,29 -1,8 +1,30 @@@
 +3.0
 + * Remove YamlFileNetworkTopologySnitch (CASSANDRA-7917)
 + * Support Java source code for user-defined functions (CASSANDRA-7562)
 + * Require arg types to disambiguate UDF drops (CASSANDRA-7812)
 + * Do anticompaction in groups (CASSANDRA-6851)
 + * Verify that UDF class methods are static (CASSANDRA-7781)
 + * Support pure user-defined functions (CASSANDRA-7395, 7740)
 + * Permit configurable timestamps with cassandra-stress (CASSANDRA-7416)
 + * Move sstable RandomAccessReader to nio2, which allows using the
 +   FILE_SHARE_DELETE flag on Windows (CASSANDRA-4050)
 + * Remove CQL2 (CASSANDRA-5918)
 + * Add Thrift get_multi_slice call (CASSANDRA-6757)
 + * Optimize fetching multiple cells by name (CASSANDRA-6933)
 + * Allow compilation in java 8 (CASSANDRA-7028)
 + * Make incremental repair default (CASSANDRA-7250)
 + * Enable code coverage thru JaCoCo (CASSANDRA-7226)
 + * Switch external naming of 'column families' to 'tables' (CASSANDRA-4369) 
 + * Shorten SSTable path (CASSANDRA-6962)
 + * Use unsafe mutations for most unit tests (CASSANDRA-6969)
 + * Fix race condition during calculation of pending ranges (CASSANDRA-7390)
 +
 +
  2.1.1
+  * Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom (CASSANDRA-7934)
   * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069)
-  * cassandra-stress supports whitelist mode for node config
-  * GCInspector more closely tracks GC; cassandra-stress and nodetool report it
+  * cassandra-stress supports whitelist mode for node config (CASSANDRA-7658)
+  * GCInspector more closely tracks GC; cassandra-stress and nodetool report it (CASSANDRA-7916)
   * nodetool won't output bogus ownership info without a keyspace (CASSANDRA-7173)
   * Add human readable option to nodetool commands (CASSANDRA-5433)
   * Don't try to set repairedAt on old sstables (CASSANDRA-7913)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
index d71964c,4521c19..dca5ade
--- a/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
@@@ -90,69 -85,65 +91,69 @@@ public class CompressedRandomAccessRead
      {
          try
          {
 -            decompressChunk(metadata.chunkFor(current));
 -        }
 -        catch (CorruptBlockException e)
 -        {
 -            throw new CorruptSSTableException(e, getPath());
 -        }
 -        catch (IOException e)
 -        {
 -            throw new FSReadError(e, getPath());
 -        }
 -    }
 +            long position = current();
 +            assert position < metadata.dataLength;
  
 -    private void decompressChunk(CompressionMetadata.Chunk chunk) throws IOException
 -    {
 -        if (channel.position() != chunk.offset)
 -            channel.position(chunk.offset);
 +            CompressionMetadata.Chunk chunk = metadata.chunkFor(position);
  
 -        if (compressed.capacity() < chunk.length)
 -            compressed = ByteBuffer.wrap(new byte[chunk.length]);
 -        else
 -            compressed.clear();
 -        compressed.limit(chunk.length);
 -
 -        if (channel.read(compressed) != chunk.length)
 -            throw new CorruptBlockException(getPath(), chunk);
 +            if (channel.position() != chunk.offset)
 +                channel.position(chunk.offset);
  
 -        // technically flip() is unnecessary since all the remaining work uses the raw array, but if that changes
 -        // in the future this will save a lot of hair-pulling
 -        compressed.flip();
 -        try
 -        {
 -            validBufferBytes = metadata.compressor().uncompress(compressed.array(), 0, chunk.length, buffer, 0);
 -        }
 -        catch (IOException e)
 -        {
 -            throw new CorruptBlockException(getPath(), chunk, e);
 -        }
 +            if (compressed.capacity() < chunk.length)
 +                compressed = ByteBuffer.wrap(new byte[chunk.length]);
 +            else
 +                compressed.clear();
 +            compressed.limit(chunk.length);
  
 -        if (metadata.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
 -        {
 +            if (channel.read(compressed) != chunk.length)
 +                throw new CorruptBlockException(getPath(), chunk);
  
 -            if (metadata.hasPostCompressionAdlerChecksums)
 +            // technically flip() is unnecessary since all the remaining work uses the raw array, but if that changes
 +            // in the future this will save a lot of hair-pulling
 +            compressed.flip();
 +            buffer.clear();
 +            int decompressedBytes;
 +            try
              {
 -                checksum.update(compressed.array(), 0, chunk.length);
 +                decompressedBytes = metadata.compressor().uncompress(compressed.array(), 0, chunk.length, buffer.array(), 0);
 +                buffer.limit(decompressedBytes);
              }
 -            else
 +            catch (IOException e)
              {
 -                checksum.update(buffer, 0, validBufferBytes);
 +                throw new CorruptBlockException(getPath(), chunk);
              }
  
-             if (metadata.parameters.getCrcCheckChance() > FBUtilities.threadLocalRandom().nextDouble())
 -            if (checksum(chunk) != (int) checksum.getValue())
 -                throw new CorruptBlockException(getPath(), chunk);
++            if (metadata.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
 +            {
  
 -            // reset checksum object back to the original (blank) state
 -            checksum.reset();
 -        }
 +                if (metadata.hasPostCompressionAdlerChecksums)
 +                {
 +                    checksum.update(compressed.array(), 0, chunk.length);
 +                }
 +                else
 +                {
 +                    checksum.update(buffer.array(), 0, decompressedBytes);
 +                }
  
 -        // buffer offset is always aligned
 -        bufferOffset = current & ~(buffer.length - 1);
 +                if (checksum(chunk) != (int) checksum.getValue())
 +                    throw new CorruptBlockException(getPath(), chunk);
 +
 +                // reset checksum object back to the original (blank) state
 +                checksum.reset();
 +            }
 +
 +            // buffer offset is always aligned
 +            bufferOffset = position & ~(buffer.capacity() - 1);
 +            buffer.position((int) (position - bufferOffset));
 +        }
 +        catch (CorruptBlockException e)
 +        {
 +            throw new CorruptSSTableException(e, getPath());
 +        }
 +        catch (IOException e)
 +        {
 +            throw new FSReadError(e, getPath());
 +        }
      }
  
      private int checksum(CompressionMetadata.Chunk chunk) throws IOException

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/service/QueryState.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/QueryState.java
index 4f3b0d5,0179a3e..9cedfad
--- a/src/java/org/apache/cassandra/service/QueryState.java
+++ b/src/java/org/apache/cassandra/service/QueryState.java
@@@ -67,8 -68,8 +68,8 @@@ public class QueryStat
              return true;
          }
  
 -        double tracingProbability = StorageService.instance.getTracingProbability();
 -        return tracingProbability != 0 && ThreadLocalRandom.current().nextDouble() < tracingProbability;
 +        double traceProbability = StorageService.instance.getTraceProbability();
-         return traceProbability != 0 && FBUtilities.threadLocalRandom().nextDouble() < traceProbability;
++        return traceProbability != 0 && ThreadLocalRandom.current().nextDouble() < traceProbability;
      }
  
      public void prepareTracingSession(UUID sessionId)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/35af28e5/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------


[3/5] git commit: ninja-fix CHANGES.txt

Posted by be...@apache.org.
ninja-fix CHANGES.txt


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

Branch: refs/heads/trunk
Commit: 1d7691e251e3d170916f138b0980d6a9003cf7db
Parents: 028880e
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Sep 15 14:57:46 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Sep 15 15:02:32 2014 +0100

----------------------------------------------------------------------
 CHANGES.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d7691e2/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ffa2b71..4c0dbf9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,8 +1,8 @@
 2.1.1
  * Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom (CASSANDRA-7934)
  * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069)
- * cassandra-stress supports whitelist mode for node config
- * GCInspector more closely tracks GC; cassandra-stress and nodetool report it
+ * cassandra-stress supports whitelist mode for node config (CASSANDRA-7658)
+ * GCInspector more closely tracks GC; cassandra-stress and nodetool report it (CASSANDRA-7916)
  * nodetool won't output bogus ownership info without a keyspace (CASSANDRA-7173)
  * Add human readable option to nodetool commands (CASSANDRA-5433)
  * Don't try to set repairedAt on old sstables (CASSANDRA-7913)


[2/5] git commit: Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom

Posted by be...@apache.org.
Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom

patch by benedict; reviewed by tjake for CASSANDRA-7934


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

Branch: refs/heads/trunk
Commit: 028880e74ceef57b33b858fbd78d8aa9ac3b9680
Parents: 094aa8e
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Mon Sep 15 14:56:39 2014 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Mon Sep 15 15:02:06 2014 +0100

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 src/java/org/apache/cassandra/config/CFMetaData.java  |  3 ++-
 src/java/org/apache/cassandra/db/BatchlogManager.java |  2 +-
 .../org/apache/cassandra/dht/Murmur3Partitioner.java  |  3 ++-
 .../io/compress/CompressedRandomAccessReader.java     |  3 ++-
 src/java/org/apache/cassandra/service/QueryState.java |  3 ++-
 .../org/apache/cassandra/service/StorageProxy.java    |  8 ++++----
 .../streaming/compress/CompressedInputStream.java     |  3 ++-
 src/java/org/apache/cassandra/utils/FBUtilities.java  | 14 --------------
 9 files changed, 16 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 608e4b1..ffa2b71 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.1
+ * Use ThreadLocalRandom and remove FBUtilities.threadLocalRandom (CASSANDRA-7934)
  * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069)
  * cassandra-stress supports whitelist mode for node config
  * GCInspector more closely tracks GC; cassandra-stress and nodetool report it

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index a5d328a..1d6e3a4 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -35,6 +35,7 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
@@ -703,7 +704,7 @@ public final class CFMetaData
 
     public ReadRepairDecision newReadRepairDecision()
     {
-        double chance = FBUtilities.threadLocalRandom().nextDouble();
+        double chance = ThreadLocalRandom.current().nextDouble();
         if (getReadRepairChance() > chance)
             return ReadRepairDecision.GLOBAL;
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java
index d49c620..7f8d355 100644
--- a/src/java/org/apache/cassandra/db/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/db/BatchlogManager.java
@@ -527,7 +527,7 @@ public class BatchlogManager implements BatchlogManagerMBean
         @VisibleForTesting
         protected int getRandomInt(int bound)
         {
-            return FBUtilities.threadLocalRandom().nextInt(bound);
+            return ThreadLocalRandom.current().nextInt(bound);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
index 5a3c4bb..2bb0423 100644
--- a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
+++ b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.cassandra.db.BufferDecoratedKey;
 import org.apache.cassandra.db.DecoratedKey;
@@ -105,7 +106,7 @@ public class Murmur3Partitioner extends AbstractPartitioner<LongToken>
 
     public LongToken getRandomToken()
     {
-        return new LongToken(normalize(FBUtilities.threadLocalRandom().nextLong()));
+        return new LongToken(normalize(ThreadLocalRandom.current().nextLong()));
     }
 
     private long normalize(long v)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java b/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
index 64495b8..4521c19 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java
@@ -19,6 +19,7 @@ package org.apache.cassandra.io.compress;
 
 import java.io.*;
 import java.nio.ByteBuffer;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.zip.Adler32;
 import java.util.zip.CRC32;
 import java.util.zip.Checksum;
@@ -122,7 +123,7 @@ public class CompressedRandomAccessReader extends RandomAccessReader
             throw new CorruptBlockException(getPath(), chunk, e);
         }
 
-        if (metadata.parameters.getCrcCheckChance() > FBUtilities.threadLocalRandom().nextDouble())
+        if (metadata.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
         {
 
             if (metadata.hasPostCompressionAdlerChecksums)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/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 12fc392..0179a3e 100644
--- a/src/java/org/apache/cassandra/service/QueryState.java
+++ b/src/java/org/apache/cassandra/service/QueryState.java
@@ -18,6 +18,7 @@
 package org.apache.cassandra.service;
 
 import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.cassandra.tracing.Tracing;
 import org.apache.cassandra.utils.FBUtilities;
@@ -68,7 +69,7 @@ public class QueryState
         }
 
         double tracingProbability = StorageService.instance.getTracingProbability();
-        return tracingProbability != 0 && FBUtilities.threadLocalRandom().nextDouble() < tracingProbability;
+        return tracingProbability != 0 && ThreadLocalRandom.current().nextDouble() < tracingProbability;
     }
 
     public void prepareTracingSession(UUID sessionId)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 615335b..d9602bb 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -257,7 +257,7 @@ public class StorageProxy implements StorageProxyMBean
             }
 
             Tracing.trace("Paxos proposal not accepted (pre-empted by a higher ballot)");
-            Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+            Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
             // continue to retry
         }
 
@@ -323,7 +323,7 @@ public class StorageProxy implements StorageProxyMBean
             {
                 Tracing.trace("Some replicas have already promised a higher ballot than ours; aborting");
                 // sleep a random amount to give the other proposer a chance to finish
-                Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+                Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
                 continue;
             }
 
@@ -344,7 +344,7 @@ public class StorageProxy implements StorageProxyMBean
                 {
                     Tracing.trace("Some replicas have already promised a higher ballot than ours; aborting");
                     // sleep a random amount to give the other proposer a chance to finish
-                    Uninterruptibles.sleepUninterruptibly(FBUtilities.threadLocalRandom().nextInt(100), TimeUnit.MILLISECONDS);
+                    Uninterruptibles.sleepUninterruptibly(ThreadLocalRandom.current().nextInt(100), TimeUnit.MILLISECONDS);
                 }
                 continue;
             }
@@ -1049,7 +1049,7 @@ public class StorageProxy implements StorageProxyMBean
         }
         else
         {
-            return localEndpoints.get(FBUtilities.threadLocalRandom().nextInt(localEndpoints.size()));
+            return localEndpoints.get(ThreadLocalRandom.current().nextInt(localEndpoints.size()));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java b/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
index ef019c2..449546f 100644
--- a/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
+++ b/src/java/org/apache/cassandra/streaming/compress/CompressedInputStream.java
@@ -23,6 +23,7 @@ import java.io.InputStream;
 import java.util.Iterator;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.zip.Adler32;
 import java.util.zip.CRC32;
 import java.util.zip.Checksum;
@@ -114,7 +115,7 @@ public class CompressedInputStream extends InputStream
         totalCompressedBytesRead += compressed.length;
 
         // validate crc randomly
-        if (info.parameters.getCrcCheckChance() > FBUtilities.threadLocalRandom().nextDouble())
+        if (info.parameters.getCrcCheckChance() > ThreadLocalRandom.current().nextDouble())
         {
             if (hasPostCompressionAdlerChecksums)
             {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/028880e7/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 38e5834..7e9adab 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -100,15 +100,6 @@ public class FBUtilities
         }
     };
 
-    private static final ThreadLocal<Random> localRandom = new ThreadLocal<Random>()
-    {
-        @Override
-        protected Random initialValue()
-        {
-            return new Random();
-        }
-    };
-
     public static final int MAX_UNSIGNED_SHORT = 0xFFFF;
 
     public static MessageDigest threadLocalMD5Digest()
@@ -128,11 +119,6 @@ public class FBUtilities
         }
     }
 
-    public static Random threadLocalRandom()
-    {
-        return localRandom.get();
-    }
-
     /**
      * Please use getBroadcastAddress instead. You need this only when you have to listen/connect.
      */