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);
}
}