From 1619413e5602b93641af1ccf5adbee80eaa2b53c Mon Sep 17 00:00:00 2001 From: Eduard Tudenhoefner Date: Mon, 21 Aug 2017 11:36:08 +0800 Subject: [PATCH] Fix cassandra-stress hang issues when an error during cluster connection happens patch by Eduard Tudenhoefner; reviewed by Stefania Alborghetti for CASSANDRA-12938 --- CHANGES.txt | 1 + .../apache/cassandra/stress/StressAction.java | 42 ++++++++++--------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 4ede93266d..48c21cc2db 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.1 + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) * "ignore" option is ignored in sstableloader (CASSANDRA-13721) * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) diff --git a/tools/stress/src/org/apache/cassandra/stress/StressAction.java b/tools/stress/src/org/apache/cassandra/stress/StressAction.java index 30f8899efc..5a340e8b4c 100644 --- a/tools/stress/src/org/apache/cassandra/stress/StressAction.java +++ b/tools/stress/src/org/apache/cassandra/stress/StressAction.java @@ -420,27 +420,31 @@ public class StressAction implements Runnable SimpleClient sclient = null; ThriftClient tclient = null; JavaDriverClient jclient = null; - - final ConnectionAPI clientType = settings.mode.api; - switch (clientType) - { - case JAVA_DRIVER_NATIVE: - jclient = settings.getJavaDriverClient(); - break; - case SIMPLE_NATIVE: - sclient = settings.getSimpleNativeClient(); - break; - case THRIFT: - case THRIFT_SMART: - tclient = settings.getThriftClient(); - break; - default: - throw new IllegalStateException(); - } - // synchronize the start of all the consumer threads - start.countDown(); + try + { + switch (clientType) + { + case JAVA_DRIVER_NATIVE: + jclient = settings.getJavaDriverClient(); + break; + case SIMPLE_NATIVE: + sclient = settings.getSimpleNativeClient(); + break; + case THRIFT: + case THRIFT_SMART: + tclient = settings.getThriftClient(); + break; + default: + throw new IllegalStateException(); + } + } + finally + { + // synchronize the start of all the consumer threads + start.countDown(); + } releaseConsumers.await();