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 mi...@apache.org on 2006/01/09 19:23:57 UTC

svn commit: r367352 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/store/raw/log/ testing/org/apache/derbyTesting/functionTests/harness/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/s...

Author: mikem
Date: Mon Jan  9 10:23:46 2006
New Revision: 367352

URL: http://svn.apache.org/viewcvs?rev=367352&view=rev
Log:
fix for DERBY-298.  committing change for ·¹ystein Gr±±±vlen

 The attached patch fixes the bug by setting the logEnd after recovery to the beginning of the new empty log file instead of the end of the previous file.
The patch contains changes to the following files:

M java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java
        - At the end of the redo scan, if the scan stopped in a file succeeding the file of the last log record, update logEnd to this position.
        - Change assert to allow logEnd to be in a newer file than that of the last log record.
         
M java/engine/org/apache/derby/impl/store/raw/log/Scan.java
        - Introduced new variable newFileStart which will only have a valid LogInstant value when the scan is at the header of the file.
        - When a new file is entered, set newFileStart to the first possible LogInstant of this file (end of header).
        - When a log record is encountered, set newFileStart to INVALID_LOG_INSTANT.
        - Changed getLogRecordEnd() to return newFileStart if that is valid (i.e., scan is at the start of a file)
        - Removed comment about not starting to write to the new empty log file, since that is not true anymore.

A java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties
         - Test properties

M java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant
         - Added new property files

A java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties
        - Test properties.
        - useextdirs=true needed so the backup is placed somewhere the next test can find it.

A java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java
        - Test that is supposed to be run after RecoveryAfterBackupSetup.java.
        - Does recovery, updates the database, shutdowns the database, and does roll-forward restore.
        - Checks that updates made after recovery is reflected in the database after roll-forward restore.

A java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java
        - Test that does the preparation for the RecoveryAfterBackup test.
        - Inserts a few records, makes a backup, and stops without shutting down.

M java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
        - For tests where the database is not deleted at the end of the test, do not delete the external directories either.
        - This is necessary to be able to access the backup in suceeding tests.

A java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out
        - Test output

A java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out
        - Test output

MM java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall
        - Added tests to storerecovery suite.
        - Changed property eol-style.

 The recently attached patch (derby-298a.diff) addresses Suresh's
review comments. The only major change from the previous patch is in
java/engine/org/apache/derby/impl/store/raw/log/Scan.java. The changes
to this file compared to the current head of trunk are:
 
   - When a new log file is entered, check that the header of this
     file refers to the end of the last log record of the previous log
     file. If not, stop the scan.
   - If the header was consistent, update knowGoodLogEnd to the first
     possible LogInstant of this file (end of header).
   - close() no longer reset knownGoodLogEnd since it is needed by
     FileLogger after the scan is closed.
   - Changed comment of getLogRecordEnd() to reflect that it can be
     used after the scan is closed, and that it at that time may
     return the start of an empty log file.
   - Removed comment about not starting to write to the new empty log
     file, since that is not true anymore.

In addition, the property files for the tests have been updated so
they are run without the security manager. 


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties   (with props)
Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/Scan.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java?rev=367352&r1=367351&r2=367352&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/FileLogger.java Mon Jan  9 10:23:46 2006
@@ -1508,7 +1508,16 @@
 
 					recoveryTransaction.commit();
 				}
-			}
+			} // while redoScan.getNextRecord() != null
+
+            // If the scan ended in an empty file, update logEnd to reflect that
+            // in order to avoid to continue logging to an older file
+            long end = redoScan.getLogRecordEnd(); 
+            if (end != LogCounter.INVALID_LOG_INSTANT
+                && (LogCounter.getLogFileNumber(logEnd) 
+                    < LogCounter.getLogFileNumber(end))) {
+                logEnd = end;
+            }
 		}
 		catch (StandardException se)
 		{
@@ -1557,10 +1566,12 @@
 			if (instant != LogCounter.INVALID_LOG_INSTANT)	
             {
 				SanityManager.ASSERT(
-                    LogCounter.getLogFileNumber(instant) ==
+                    LogCounter.getLogFileNumber(instant) <
+                         LogCounter.getLogFileNumber(logEnd) ||
+                    (LogCounter.getLogFileNumber(instant) ==
                          LogCounter.getLogFileNumber(logEnd) &&
                      LogCounter.getLogFilePosition(instant) <=
-                         LogCounter.getLogFilePosition(logEnd));
+                         LogCounter.getLogFilePosition(logEnd)));
             }
 			else
             {

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/Scan.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/Scan.java?rev=367352&r1=367351&r2=367352&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/Scan.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/Scan.java Mon Jan  9 10:23:46 2006
@@ -706,6 +706,37 @@
 					return null;
 				}
 
+				// scan is position just past the log header
+				recordStartPosition = scan.getFilePointer();
+
+                // Verify that the header of the new log file refers
+                // to the end of the log record of the previous file
+                // (Rest of header has been verified by getLogFileAtBeginning)
+				scan.seek(LogToFile
+                          .LOG_FILE_HEADER_PREVIOUS_LOG_INSTANT_OFFSET);
+                long previousLogInstant = scan.readLong();
+                if (previousLogInstant != knownGoodLogEnd) {
+                    // If there is a mismatch, something is wrong and
+                    // we return null to stop the scan.  The same
+                    // behavior occurs when getLogFileAtBeginning
+                    // detects an error in the other fields of the header.
+                    if (SanityManager.DEBUG) {
+                        if (SanityManager.DEBUG_ON(LogToFile.DBG_FLAG)) {
+                            SanityManager.DEBUG(LogToFile.DBG_FLAG, 
+                                                "log file " 
+                                                + currentLogFileNumber  
+                                                + ": previous log record: "
+                                                + previousLogInstant
+                                                + " known previous log record: "
+                                                + knownGoodLogEnd);
+                        }
+                    }
+                    return null;
+				}
+
+
+				scan.seek(recordStartPosition);
+
 				if (SanityManager.DEBUG) 
                 {
                     if (SanityManager.DEBUG_ON(LogToFile.DBG_FLAG))
@@ -716,8 +747,11 @@
                     }
                 }
 
-				// scan is position just past the log header
-				recordStartPosition = scan.getFilePointer();
+                // Advance knownGoodLogEnd to make sure that if this
+                // log file is the last log file and empty, logging
+                // continues in this file, not the old file.
+                knownGoodLogEnd = LogCounter.makeLogInstantAsLong
+                    (currentLogFileNumber, recordStartPosition);
 
 				// set this.currentLogFileLength
 				currentLogFileLength = scan.length();
@@ -734,14 +768,6 @@
                         }
                     }
 
-					// ideally, we would want to start writing on this new
-					// empty log file, but the scan is closed and there is
-					// no way to tell the difference between an empty log
-					// file and a log file which is not there.  We will be
-					// writing to the end of the previous log file instead
-					// but when we next switch the log, the empty log file
-					// will be written over.
-
 					return null;
 				}
 
@@ -755,7 +781,7 @@
 
 			// read the current log instant
 			currentInstant = scan.readLong();
-			
+
 			/*check if the current instant happens is less than the last one. 
 			 *This can happen if system crashed before writing the log instant
 			 *completely. If the instant is partially written it will be less
@@ -945,8 +971,8 @@
 			recordStartPosition += recordLength + LogToFile.LOG_RECORD_OVERHEAD;
 			knownGoodLogEnd = LogCounter.makeLogInstantAsLong
 								(currentLogFileNumber, recordStartPosition);
-			
-			
+
+
 			if (SanityManager.DEBUG)
 			{
 				if (recordStartPosition != scan.getFilePointer())
@@ -1173,7 +1199,12 @@
 
 	/**
 		Return the log instant at the end of the log record on the current
-		LogFile in the form of a log instant
+		LogFile in the form of a log instant.
+        After the scan has been closed, the end of the last log record will be
+        returned except when the scan ended in an empty log file.  In that
+        case, the start of this empty log file will be returned.  (This is
+        done to make sure new log records are inserted into the newest log
+        file.)
 	*/
 	public long getLogRecordEnd()
 	{
@@ -1222,7 +1253,8 @@
 		logFactory = null;
 		currentLogFileNumber = -1;
 		currentLogFileLength = -1;
-		knownGoodLogEnd = LogCounter.INVALID_LOG_INSTANT;
+        // Do not reset knownGoodLogEnd, it needs to be available after the
+        // scan has closed.
 		currentInstant = LogCounter.INVALID_LOG_INSTANT;
 		stopAt = LogCounter.INVALID_LOG_INSTANT;
 		scanDirection = 0;

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java?rev=367352&r1=367351&r2=367352&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java Mon Jan  9 10:23:46 2006
@@ -1852,15 +1852,13 @@
 			        //System.out.println(logfile.getPath());
 			        //status = logfile.delete();
 		        }
-            }
 
-			//delete the directories where external input/output files were created
-			if(extInDir!=null)
-				deleteFile(extInDir);
-			if(extOutDir!=null)
-				deleteFile(extOutDir);
-			if(extInDir!=null)
-				deleteFile(extInOutDir);
+                // delete the directories where external input/output files 
+                // were created
+                if (extInDir!=null) deleteFile(extInDir);
+                if (extOutDir!=null) deleteFile(extOutDir);
+                if (extInDir!=null) deleteFile(extInOutDir);
+            }
         }
 	    // reset for next test
 	    // the next line is a bug fix to get cleanup working correctly when

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out Mon Jan  9 10:23:46 2006
@@ -0,0 +1,7 @@
+Count: 2 Sum: 1
+Inserting records ...
+Shutting down database ...
+SQL Exception: Derby system shutdown.
+Starting restore with roll-forward recovery..
+Verifying database ...
+Count: 256 Sum: 32640

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackup.out
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out Mon Jan  9 10:23:46 2006
@@ -0,0 +1,4 @@
+Connection has been opened.
+Creating table and inserting two records.
+Performing backup...
+Backup completed.  Test finished.

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RecoveryAfterBackupSetup.out
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall?rev=367352&r1=367351&r2=367352&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storerecovery.runall Mon Jan  9 10:23:46 2006
@@ -3,6 +3,8 @@
 store/LogChecksumRecovery1.java
 store/MaxLogNumber.java
 store/MaxLogNumberRecovery.java
+store/RecoveryAfterBackupSetup.java
+store/RecoveryAfterBackup.java
 store/oc_rec1.java
 store/oc_rec2.java
 store/oc_rec3.java

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java Mon Jan  9 10:23:46 2006
@@ -0,0 +1,118 @@
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.store.LogChecksumSetup
+
+   Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.store;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+import javax.sql.DataSource;
+
+import org.apache.derby.tools.ij;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+
+/*
+ * This test contains a recovery for a database that did recovery just
+ * before it went down. After recovery more records are inserted into
+ * the database before the database is shutdown.  Then, roll-forward
+ * recovery of the database from the backup is performed.  It is then
+ * checked that the records inserted after the first recovery is still
+ * present.  This test was made to recreate the problem in DERBY-298.
+ * The test should be run after store/RecoveryAfterBackupSetup.java.
+ * 
+ * @author oystein.grovlen@sun.com
+ * @see RecoveryAfterBackupSetup
+ */
+public class RecoveryAfterBackup
+{
+
+    public static void main(String[] argv) throws Throwable 
+    {
+        try {
+            ij.getPropertyArg(argv); 
+            Connection conn = ij.startJBMS();
+            conn.setAutoCommit(true);
+            
+            // After recovery table should contain two records with
+            // values 0 and 1
+            Statement s = conn.createStatement();
+            ResultSet rs = s.executeQuery("SELECT COUNT(a), SUM(a) FROM t1");
+            while (rs.next()) {
+                int count = rs.getInt(1);
+                int sum = rs.getInt(2);
+                if (count!=2 || sum!=1) {
+                    System.out.print("Unexpected initial database state: ");
+                }
+                System.out.println("Count: " + count + " Sum: " + sum);
+            }
+
+            // Insert some more records
+            System.out.println("Inserting records ...");
+            s.execute ("INSERT INTO t1 SELECT a+2 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+4 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+8 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+16 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+32 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+64 FROM t1");
+            s.execute ("INSERT INTO t1 SELECT a+128 FROM t1");
+
+            // Shut down database
+            Properties shutdownAttrs = new Properties();
+            shutdownAttrs.setProperty("shutdownDatabase", "shutdown");
+            System.out.println("Shutting down database ...");
+            try {
+                DataSource ds = TestUtil.getDataSource(shutdownAttrs);
+                ds.getConnection();
+            } catch (Throwable ith) {
+                ith.printStackTrace();
+            }
+
+            // Start up with rollforward-recovery
+            System.out.println("Starting restore with roll-forward recovery..");
+            Properties restoreAttrs = new Properties();
+            restoreAttrs.setProperty("DatabaseName", "hairynosedwombat");
+            restoreAttrs.setProperty("connectionAttributes", 
+                  "rollForwardRecoveryFrom=extinout/mybackup/hairynosedwombat");
+            DataSource ds = TestUtil.getDataSource(restoreAttrs);
+            conn = ds.getConnection();
+
+            // After restore table should contain all records inserted above
+            System.out.println("Verifying database ...");
+            s = conn.createStatement();
+            rs = s.executeQuery("SELECT COUNT(a), SUM(a) FROM t1");
+            while (rs.next()) {
+                int count = rs.getInt(1);
+                int sum = rs.getInt(2);
+                if (count!=256 || sum!=256*255/2) { // sum 0..n = n*(n-1)/2
+                    System.out.print("Test FAILED: ");
+                }
+                System.out.println("Count: " + count + " Sum: " + sum);
+            }
+
+        } catch (SQLException sqle) {
+            org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, 
+                                                                    sqle);
+            sqle.printStackTrace(System.out);
+        }
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java Mon Jan  9 10:23:46 2006
@@ -0,0 +1,75 @@
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.store.LogChecksumSetup
+
+   Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.store;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.apache.derby.tools.ij;
+
+/*
+ * This class will do the setup for testing recovery after backup.
+ * This test will insert some records into a table, do a backup and
+ * end without shutting down the database.  The succeeding test,
+ * RecoveryAfterBackup, will then do recovery of the database.
+ * 
+ * @author oystein.grovlen@sun.com
+ * @see RecoveryAfterBackup
+ */
+
+public class RecoveryAfterBackupSetup
+{
+    
+    public static void main(String[] argv) throws Throwable 
+    {
+        try {
+            ij.getPropertyArg(argv); 
+            Connection conn = ij.startJBMS();
+            conn.setAutoCommit(true);
+
+            System.out.println("Connection has been opened.");
+            Statement s = conn.createStatement();
+            try { // Drop table if it exists
+                s.execute("DROP TABLE t1");
+            } catch (SQLException e) {
+                if (e.getSQLState().equals("42Y55")) {
+                    // IGNORE. Table did not exist. That is our target.
+                } else {
+                    throw e;
+                }
+            }
+
+            System.out.println("Creating table and inserting two records.");
+            s.execute("CREATE TABLE t1(a INT)");
+            s.execute("INSERT INTO t1 VALUES(0)");
+            s.execute("INSERT INTO t1 VALUES(1)");
+
+            System.out.println("Performing backup...");
+            s.execute("CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE_AND_ENABLE_LOG_ARCHIVE_MODE('extinout/mybackup', 0)");
+            System.out.println("Backup completed.  Test finished.");
+        } catch (SQLException sqle) {
+            org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, 
+                                                                    sqle);
+            sqle.printStackTrace(System.out);
+        }
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties Mon Jan  9 10:23:46 2006
@@ -0,0 +1,5 @@
+useextdirs=true
+usedefaults=true
+database=hairynosedwombat;create=true
+#exclude with SecurityManager
+noSecurityManager=true

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackupSetup_app.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties?rev=367352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties Mon Jan  9 10:23:46 2006
@@ -0,0 +1,4 @@
+usedefaults=true
+database=hairynosedwombat
+#exclude with SecurityManager
+noSecurityManager=true

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RecoveryAfterBackup_app.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant?rev=367352&r1=367351&r2=367352&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant Mon Jan  9 10:23:46 2006
@@ -3,6 +3,8 @@
 EscalateLock_app.properties
 EscalateLock_derby.properties
 LockTableQuery.subsql
+RecoveryAfterBackupSetup_app.properties
+RecoveryAfterBackup_app.properties
 Rllmodule1.sql
 Rllmodule1_derby.properties
 Rllmodule2.sql