From bbf7dac87cdc41bf8e138a99f630e7a827ad0d98 Mon Sep 17 00:00:00 2001 From: Jay Zhuang Date: Wed, 14 Nov 2018 11:43:58 -0800 Subject: [PATCH] Fix cassandra-stress hang with default options patch by Jay Zhuang; reviewed by Stefania Alborghetti for CASSANDRA-14616 --- CHANGES.txt | 1 + .../src/org/apache/cassandra/stress/StressAction.java | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 45209892ed..f9b59df7c6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.18 + * Fix cassandra-stress write hang with default options (CASSANDRA-14616) * Differentiate between slices and RTs when decoding legacy bounds (CASSANDRA-14919) * CommitLogReplayer.handleReplayError should print stack traces (CASSANDRA-14589) * Netty epoll IOExceptions caused by unclean client disconnects being logged at INFO (CASSANDRA-14909) diff --git a/tools/stress/src/org/apache/cassandra/stress/StressAction.java b/tools/stress/src/org/apache/cassandra/stress/StressAction.java index 8b15e92f88..657117c5e6 100644 --- a/tools/stress/src/org/apache/cassandra/stress/StressAction.java +++ b/tools/stress/src/org/apache/cassandra/stress/StressAction.java @@ -94,7 +94,11 @@ public class StressAction implements Runnable { PrintStream warmupOutput = new PrintStream(new OutputStream() { @Override public void write(int b) throws IOException { } } ); // do 25% of iterations as warmup but no more than 50k (by default hotspot compiles methods after 10k invocations) - int iterations = Math.min(50000, (int) (settings.command.count * 0.25)) * settings.node.nodes.size(); + int iterations = (settings.command.count >= 0 + ? Math.min(50000, (int)(settings.command.count * 0.25)) + : 50000) * settings.node.nodes.size(); + if (iterations <= 0) return; + int threads = 100; if (settings.rate.maxThreads > 0)