summaryrefslogtreecommitdiffstats
path: root/config/src
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2018-12-20 14:08:42 +0100
committerHåkon Hallingstad <hakon@oath.com>2018-12-20 14:08:42 +0100
commit9922b4a419ecad5c9d4ea9e351f5e66e55fad84b (patch)
tree32abad6efa16653bacd5caaf559d456c3222a12e /config/src
parent58e87745267e02e051f6311024dc2fe980ec03a5 (diff)
ThreadLocalRandom is recommended over Random in multithreaded environments, try 2
Diffstat (limited to 'config/src')
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
index d104b1a765b..a9bf1272133 100644
--- a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
+++ b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
@@ -10,7 +10,12 @@ import com.yahoo.jrt.Transport;
import com.yahoo.system.CommandLineParser;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.protocol.*;
+import com.yahoo.vespa.config.protocol.CompressionType;
+import com.yahoo.vespa.config.protocol.DefContent;
+import com.yahoo.vespa.config.protocol.JRTClientConfigRequest;
+import com.yahoo.vespa.config.protocol.JRTClientConfigRequestV3;
+import com.yahoo.vespa.config.protocol.JRTConfigRequestFactory;
+import com.yahoo.vespa.config.protocol.Trace;
import com.yahoo.vespa.config.util.ConfigUtils;
import java.io.BufferedReader;
@@ -25,7 +30,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
/**
* A config client for generating load against a config server or config proxy.
@@ -40,7 +45,6 @@ public class LoadTester {
private Transport transport = new Transport();
protected Supervisor supervisor = new Supervisor(transport);
private List<ConfigKey<?>> configs = new ArrayList<>();
- private Random random = new Random(System.currentTimeMillis());
private Map<ConfigDefinitionKey, Tuple2<String, String[]>> defs = new HashMap<>();
private long protocolVersion = Long.parseLong(JRTConfigRequestFactory.getProtocolVersion());
private CompressionType compressionType = JRTConfigRequestFactory.getCompressionType();
@@ -204,7 +208,7 @@ public class LoadTester {
int totConfs = configs.size();
boolean reconnCycle = false; // to log reconn message only once, for instance at restart
for (int i = 0; i < iterations; i++) {
- reqKey = configs.get(random.nextInt(totConfs));
+ reqKey = configs.get(ThreadLocalRandom.current().nextInt(totConfs));
ConfigDefinitionKey dKey = new ConfigDefinitionKey(reqKey);
Tuple2<String, String[]> defContent = defs.get(dKey);
if (defContent == null && defs.size() > 0) { // Only complain if we actually did run with a def dir