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 oy...@apache.org on 2008/04/01 11:37:39 UTC

svn commit: r643336 - in /db/derby/code/trunk/java/engine/org/apache/derby: iapi/store/raw/log/ iapi/store/raw/xact/ impl/store/raw/log/ impl/store/raw/xact/

Author: oysteing
Date: Tue Apr  1 02:37:25 2008
New Revision: 643336

URL: http://svn.apache.org/viewvc?rev=643336&view=rev
Log:
DERBY-3562: Delete unnecessary, old log files on the slave when a checkpoint is encountered in the log received from the master.
Contributed by Jorgen Loland

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/log/LogFactory.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/xact/RawTransaction.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/CheckpointOperation.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/LogToFile.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/ReadOnly.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/log/LogFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/log/LogFactory.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/log/LogFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/log/LogFactory.java Tue Apr  1 02:37:25 2008
@@ -269,12 +269,13 @@
 
 	/**	
 	 * redoing a checkpoint  during rollforward recovery
-	 @param cinstant The LogInstant of the checkpoint
-	 @param redoLWM  Redo Low Water Mark in the check point record
-	 @param df - the data factory
-	 @exception StandardException - encounter exception during checkpoint
+	 * @param cinstant The LogInstant of the checkpoint
+	 * @param redoLWM  Redo Low Water Mark in the check point record
+	 * @param undoLWM Undo Low Water Mark in the checkpoint
+	 * @param df - the data factory
+	 * @exception StandardException - encounter exception during checkpoint
 	 */
-	public void checkpointInRFR(LogInstant cinstant, long redoLWM, 
+	public void checkpointInRFR(LogInstant cinstant, long redoLWM, long undoLWM,
 								DataFactory df) throws StandardException;
 
 	

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/xact/RawTransaction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/xact/RawTransaction.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/xact/RawTransaction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/store/raw/xact/RawTransaction.java Tue Apr  1 02:37:25 2008
@@ -321,10 +321,16 @@
 
 
 	/**	
-	 * redo a checkpoint during rollforward recovery
+     * Redo a checkpoint during rollforward recovery.
+     *
+     * @param cinstant The LogInstant of the checkpoint
+     * @param redoLWM  Redo Low Water Mark in the check point record
+     * @param undoLWM Undo Low Water Mark in the checkpoint
+     * @exception StandardException Exception encountered during checkpoint
 	 */
 	public abstract void checkpointInRollForwardRecovery(LogInstant cinstant,
-														 long redoLWM) 
+														 long redoLWM,
+														 long undoLWM)
 		throws StandardException;
 
 	

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/CheckpointOperation.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/CheckpointOperation.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/CheckpointOperation.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/CheckpointOperation.java Tue Apr  1 02:37:25 2008
@@ -132,7 +132,8 @@
 		//redo the checkpoint if we are in roll-forward recovery only
 		if(((RawTransaction)xact).inRollForwardRecovery())
 		{
-			((RawTransaction)xact).checkpointInRollForwardRecovery(instant, redoLWM);
+			((RawTransaction)xact).
+				checkpointInRollForwardRecovery(instant, redoLWM, undoLWM);
 		}
 		return;
 	}

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/LogToFile.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/LogToFile.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/LogToFile.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/LogToFile.java Tue Apr  1 02:37:25 2008
@@ -2194,13 +2194,20 @@
 	 */
 	private void truncateLog(CheckpointOperation checkpoint)
 	{
-		long oldFirstLog;
 		long firstLogNeeded;
+		if ((firstLogNeeded = getFirstLogNeeded(checkpoint))==-1)
+			return;
+		truncateLog(firstLogNeeded);
+	}
 
+	/** Get rid of old and unnecessary log files
+	 * @param firstLogNeeded The log file number of the oldest log file
+	 * needed for recovery.
+	 */
+	private void truncateLog(long firstLogNeeded) {
+		long oldFirstLog;
 		if (keepAllLogs)
 			return;
-		if ((firstLogNeeded = getFirstLogNeeded(checkpoint))==-1)
-			return;
 		
 		// when  backup is in progress, log files that are yet to
         // be copied to the backup should not be deleted,  even 
@@ -5049,8 +5056,12 @@
 
 	/**	
 	 *	redo a checkpoint during rollforward recovery
-	*/
-	public void checkpointInRFR(LogInstant cinstant, long redoLWM, DataFactory df) throws StandardException
+     * 
+     * @throws org.apache.derby.iapi.error.StandardException 
+     */
+	public void checkpointInRFR(LogInstant cinstant, long redoLWM,
+								long undoLWM, DataFactory df)
+								throws StandardException
 	{
 		//sync the data
 		df.checkpoint();
@@ -5073,6 +5084,9 @@
 		//remove the stub files
 		df.removeDroppedContainerFileStubs(new LogCounter(redoLWM));
 		
+		if (inReplicationSlaveMode) {
+			truncateLog(LogCounter.getLogFileNumber(undoLWM));
+		}
 	}
 
     /**

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/ReadOnly.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/ReadOnly.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/ReadOnly.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/log/ReadOnly.java Tue Apr  1 02:37:25 2008
@@ -321,9 +321,11 @@
 	}
 
 	/**	
-		perform a  checkpoint during rollforward recovery
-	*/
-	public void checkpointInRFR(LogInstant cinstant, long redoLWM, 
+	 *	Perform a checkpoint during rollforward recovery.
+     * 
+     * @throws org.apache.derby.iapi.error.StandardException 
+     */
+	public void checkpointInRFR(LogInstant cinstant, long redoLWM, long undoLWM,
 								DataFactory df) throws StandardException
 	{
 		//do nothing

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java?rev=643336&r1=643335&r2=643336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java Tue Apr  1 02:37:25 2008
@@ -2745,13 +2745,15 @@
 
 
 	/**	
-		perform a  checkpoint during rollforward recovery
-	*/
+	 * Perform a checkpoint during rollforward recovery.
+     * 
+     * @throws org.apache.derby.iapi.error.StandardException 
+     */
 	public void checkpointInRollForwardRecovery(LogInstant cinstant,
-												long redoLWM) 
+												long redoLWM, long undoLWM)
 		throws StandardException
 	{
-		logFactory.checkpointInRFR(cinstant, redoLWM, dataFactory);
+		logFactory.checkpointInRFR(cinstant, redoLWM, undoLWM, dataFactory);
 	}
 
 }