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 <[email protected]> Authored: Mon Sep 15 14:56:39 2014 +0100 Committer: Benedict Elliott Smith <[email protected]> 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. */
