You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2014/04/15 15:38:32 UTC
svn commit: r1587581 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest:
NsTest.java tester/Tester1.java tester/Tester2.java tester/TesterObject.java
Author: rhillegas
Date: Tue Apr 15 13:38:32 2014
New Revision: 1587581
URL: http://svn.apache.org/r1587581
Log:
DERBY-6533: Add more defensive code to NsTest; commit derby-6533-05-aa-dieQuickly.diff.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/NsTest.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester1.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester2.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/TesterObject.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/NsTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/NsTest.java?rev=1587581&r1=1587580&r2=1587581&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/NsTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/NsTest.java Tue Apr 15 13:38:32 2014
@@ -89,6 +89,8 @@ public class NsTest extends Thread
private static final String ERROR_BANNER1 = "//////////////////////////////////////////////////////////////\n";
private static final String ERROR_BANNER2 = "// ";
+
+ public static final String DEAD_CONNECTION = "08003";
public static final String dbName = "nstestdb";
@@ -910,6 +912,19 @@ public class NsTest extends Thread
}
+ /** Return true if the connection is dead */
+ public static boolean deadConnection( Throwable t )
+ {
+ if ( t instanceof SQLException )
+ {
+ SQLException se = (SQLException) t;
+
+ if ( DEAD_CONNECTION.equals( se.getSQLState() ) ) { return true; }
+ }
+
+ return false;
+ }
+
public static void printUsage()
{
_statisticsAlreadyPrinted = true;
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester1.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester1.java?rev=1587581&r1=1587580&r2=1587581&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester1.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester1.java Tue Apr 15 13:38:32 2014
@@ -71,6 +71,10 @@ public class Tester1 extends TesterObjec
NsTest.logger.println("FAIL: " + getThread_id()
+ "'s setAutoCommit() failed:");
printException("setting AutoCommit", e);
+
+ // if you can't change the autocommit state, the connection is unusable.
+ // get out of here.
+ return;
}
// also set isolation level to Connection.TRANSACTION_READ_UNCOMMITTED
@@ -104,6 +108,9 @@ public class Tester1 extends TesterObjec
printException("doSelectOperation()", e);
if ( NsTest.justCountErrors() ) { NsTest.printException( Tester1.class.getName(), e ); }
else { e.printStackTrace( NsTest.logger ); }
+
+ // if the connection is dead, there's no point in hanging around
+ if ( NsTest.deadConnection( e ) ) { return; }
}
break;
@@ -112,6 +119,7 @@ public class Tester1 extends TesterObjec
case 3: // do Insert/Update/Delete operations
for (int j = 0; j < NsTest.MAX_LOW_STRESS_ROWS; j++) {
doIUDOperation();
+ if ( deadConnection() ) { return; }
}
break;
}
@@ -126,6 +134,10 @@ public class Tester1 extends TesterObjec
NsTest.logger
.println("FAIL: " + getThread_id() + "'s commit() failed:");
printException("committing Xn in Tester1", e);
+
+ // if you can't commit, the connection is unusable.
+ // get out of here.
+ return;
}
}// end of for (int i=0;...)
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester2.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester2.java?rev=1587581&r1=1587580&r2=1587581&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester2.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/Tester2.java Tue Apr 15 13:38:32 2014
@@ -76,6 +76,10 @@ public class Tester2 extends TesterObjec
NsTest.logger.println("FAIL: " + getThread_id()
+ "'s setAutoCommit() failed:");
printException("setting AutoCommit in Tester2", e);
+
+ // if you can't change the autocommit state, the connection is unusable.
+ // get out of here.
+ return;
}
//also set isolation level to Connection.TRANSACTION_READ_UNCOMMITTED to reduce number of
@@ -120,6 +124,10 @@ public class Tester2 extends TesterObjec
NsTest.logger.println("FAIL: " + getThread_id()
+ "'s commit() failed:");
printException("committing Xn in Tester2", e);
+
+ // if you can't commit, the connection is unusable.
+ // get out of here.
+ return;
}
}//end of for(int numOp=1...)
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/TesterObject.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/TesterObject.java?rev=1587581&r1=1587580&r2=1587581&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/TesterObject.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/system/nstest/tester/TesterObject.java Tue Apr 15 13:38:32 2014
@@ -39,6 +39,7 @@ import org.apache.derbyTesting.system.ns
public class TesterObject {
private String thread_id;
+ private boolean _deadConnection = false;
protected Connection connex = null;
@@ -152,6 +153,7 @@ public class TesterObject {
NsTest.addStats(NsTest.FAILED_INSERT, 1);
} catch (Exception e) {
printException("executing add_one_row()", e);
+ if ( NsTest.deadConnection( e ) ) { markDeadConnection(); }
}
break;
@@ -224,7 +226,10 @@ public class TesterObject {
printException(
"FAIL: doSelectOperation() had problems creating/executing query",
e);
- s.close();
+ if ( rSet != null ) { rSet.close(); }
+ if ( s != null ) { s.close(); }
+
+ return numRowsSelected;
}
if (rSet != null) {
@@ -295,8 +300,8 @@ public class TesterObject {
.println("FAIL: doSelectOperation() had problems working over the ResultSet");
NsTest.addStats(NsTest.FAILED_SELECT, 1);
printException("processing ResultSet during row data retrieval", e);
- rSet.close();
- s.close();
+ if ( rSet != null ) { rSet.close(); }
+ if ( s != null ) { s.close(); }
NsTest.logger.println("Closed the select statement");
}
}
@@ -379,4 +384,8 @@ public class TesterObject {
return thread_id;
}
+ public void markDeadConnection() { _deadConnection = true; }
+
+ public boolean deadConnection() { return _deadConnection; }
+
}