You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by xe...@apache.org on 2012/05/03 02:53:26 UTC
[3/3] git commit: stress tool to return appropriate exit code on
failure patch by Tyler Patterson;
reviewed by Pavel Yaskevich for CASSANDRA-4188
stress tool to return appropriate exit code on failure
patch by Tyler Patterson; reviewed by Pavel Yaskevich for CASSANDRA-4188
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f20badb6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f20badb6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f20badb6
Branch: refs/heads/trunk
Commit: f20badb685393e60f74b236edf623c7c9264f1eb
Parents: 48a2269
Author: Pavel Yaskevich <xe...@apache.org>
Authored: Thu May 3 03:29:34 2012 +0300
Committer: Pavel Yaskevich <xe...@apache.org>
Committed: Thu May 3 03:34:58 2012 +0300
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../src/org/apache/cassandra/stress/Stress.java | 7 ++-
.../org/apache/cassandra/stress/StressAction.java | 34 ++++++++++++++-
3 files changed, 38 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f20badb6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index bd508c6..ad301db 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,7 @@
* Avoids possible deadlock during bootstrap (CASSANDRA-4159)
* fix stress tool that hangs forever on timeout or error (CASSANDRA-4128)
* Fix super columns bug where cache is not updated (CASSANDRA-4190)
+ * stress tool to return appropriate exit code on failure (CASSANDRA-4188)
1.0.9
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f20badb6/tools/stress/src/org/apache/cassandra/stress/Stress.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/Stress.java b/tools/stress/src/org/apache/cassandra/stress/Stress.java
index c5e65f8..b490d69 100644
--- a/tools/stress/src/org/apache/cassandra/stress/Stress.java
+++ b/tools/stress/src/org/apache/cassandra/stress/Stress.java
@@ -66,7 +66,7 @@ public final class Stress
{
while (!socket.isClosed() && (line = inp.readLine()) != null)
{
- if (line.equals("END"))
+ if (line.equals("END") || line.equals("FAILURE"))
{
out.writeInt(1);
break;
@@ -88,7 +88,10 @@ public final class Stress
}
else
{
- new StressAction(session, outStream).start();
+ StressAction stressAction = new StressAction(session, outStream);
+ stressAction.start();
+ stressAction.join();
+ System.exit(stressAction.getReturnCode());
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f20badb6/tools/stress/src/org/apache/cassandra/stress/StressAction.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/StressAction.java b/tools/stress/src/org/apache/cassandra/stress/StressAction.java
index f0a9f49..d043b66 100644
--- a/tools/stress/src/org/apache/cassandra/stress/StressAction.java
+++ b/tools/stress/src/org/apache/cassandra/stress/StressAction.java
@@ -37,6 +37,11 @@ public class StressAction extends Thread
private volatile boolean stop = false;
+ public static final int SUCCESS = 0;
+ public static final int FAILURE = 1;
+
+ private volatile int returnCode = -1;
+
public StressAction(Session session, PrintStream out)
{
client = session;
@@ -137,11 +142,28 @@ public class StressAction extends Thread
}
}
+ // if any consumer failed, set the return code to failure.
+ returnCode = SUCCESS;
if (producer.isAlive())
+ {
producer.interrupt(); // if producer is still alive it means that we had errors in the consumers
+ returnCode = FAILURE;
+ }
+ for (Consumer consumer : consumers)
+ if (consumer.getReturnCode() == FAILURE)
+ returnCode = FAILURE;
+
+ if (returnCode == SUCCESS)
+ // marking an end of the output to the client
+ output.println("END");
+ else
+ output.println("FAILURE");
- // marking an end of the output to the client
- output.println("END");
+ }
+
+ public int getReturnCode()
+ {
+ return returnCode;
}
/**
@@ -184,6 +206,7 @@ public class StressAction extends Thread
{
private final int items;
private volatile boolean stop = false;
+ private volatile int returnCode = StressAction.SUCCESS;
public Consumer(int toConsume)
{
@@ -208,11 +231,13 @@ public class StressAction extends Thread
if (output == null)
{
System.err.println(e.getMessage());
+ returnCode = StressAction.FAILURE;
System.exit(-1);
}
output.println(e.getMessage());
+ returnCode = StressAction.FAILURE;
break;
}
}
@@ -222,6 +247,11 @@ public class StressAction extends Thread
{
stop = true;
}
+
+ public int getReturnCode()
+ {
+ return returnCode;
+ }
}
private Operation createOperation(int index)