You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sa...@apache.org on 2011/10/28 10:27:10 UTC

svn commit: r1190202 - in /directory/apacheds/branches/apacheds-txns: core-api/src/main/java/org/apache/directory/server/core/log/ core/src/main/java/org/apache/directory/server/core/log/ core/src/test/java/org/apache/directory/server/core/log/

Author: saya
Date: Fri Oct 28 08:27:10 2011
New Revision: 1190202

URL: http://svn.apache.org/viewvc?rev=1190202&view=rev
Log:
Implemented the requested sync interface.

Modified:
    directory/apacheds/branches/apacheds-txns/core-api/src/main/java/org/apache/directory/server/core/log/Log.java
    directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/DefaultLog.java
    directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/LogFlushManager.java
    directory/apacheds/branches/apacheds-txns/core/src/test/java/org/apache/directory/server/core/log/LogTest.java

Modified: directory/apacheds/branches/apacheds-txns/core-api/src/main/java/org/apache/directory/server/core/log/Log.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/core-api/src/main/java/org/apache/directory/server/core/log/Log.java?rev=1190202&r1=1190201&r2=1190202&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-txns/core-api/src/main/java/org/apache/directory/server/core/log/Log.java (original)
+++ directory/apacheds/branches/apacheds-txns/core-api/src/main/java/org/apache/directory/server/core/log/Log.java Fri Oct 28 08:27:10 2011
@@ -75,4 +75,12 @@ public interface Log
      * @param newAnchor
      */
     void advanceMinNeededLogPosition( LogAnchor newAnchor );
+    
+    /**
+     * Syncs the log upto the given lsn. If lsn is equal to unknow lsn, then the log is 
+     * flushed upto the latest logged lsn.
+     *
+     * @param uptoLSN lsn to flush upto. Unkown lsn if caller just wants to sync the log upto the latest logged lsn.
+     */
+    void sync( long uptoLSN ) throws IOException, InvalidLogException;
 }

Modified: directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/DefaultLog.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/DefaultLog.java?rev=1190202&r1=1190201&r2=1190202&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/DefaultLog.java (original)
+++ directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/DefaultLog.java Fri Oct 28 08:27:10 2011
@@ -90,4 +90,12 @@ public class DefaultLog implements Log
     {
        logManager.advanceMinLogAnchor( newAnchor ); 
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void sync( long uptoLSN ) throws IOException, InvalidLogException
+    {
+       logFlushManager.sync( uptoLSN ); 
+    }
 }

Modified: directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/LogFlushManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/LogFlushManager.java?rev=1190202&r1=1190201&r2=1190202&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/LogFlushManager.java (original)
+++ directory/apacheds/branches/apacheds-txns/core/src/main/java/org/apache/directory/server/core/log/LogFlushManager.java Fri Oct 28 08:27:10 2011
@@ -254,6 +254,30 @@ import org.apache.directory.server.i18n.
         }
     }
     
+    /**
+     * Syncs the log upto the given lsn. If lsn is equal to unknow lsn, then the log is 
+     * flushed upto the latest logged lsn.
+     *
+     * @param uptoLSN lsn to flush upto. Unkown lsn if caller just wants to sync the log upto the latest logged lsn.
+     */
+    void sync( long uptoLSN ) throws IOException, InvalidLogException
+    {
+       if ( uptoLSN == LogAnchor.UNKNOWN_LSN )
+       {
+           appendLock.lock();
+           uptoLSN = logLSN - 1;
+           appendLock.unlock();
+       }
+       
+       // If nothing to flush, then just return
+       if ( uptoLSN == LogAnchor.UNKNOWN_LSN )
+       {
+           
+           return;
+       }
+       
+       flush( uptoLSN, null, 0, 0, false );
+    }
     
     /**
      * Flushes the changes in the log buffer upto the given point. The given point is determined as follows:

Modified: directory/apacheds/branches/apacheds-txns/core/src/test/java/org/apache/directory/server/core/log/LogTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/core/src/test/java/org/apache/directory/server/core/log/LogTest.java?rev=1190202&r1=1190201&r2=1190202&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-txns/core/src/test/java/org/apache/directory/server/core/log/LogTest.java (original)
+++ directory/apacheds/branches/apacheds-txns/core/src/test/java/org/apache/directory/server/core/log/LogTest.java Fri Oct 28 08:27:10 2011
@@ -90,9 +90,12 @@ public class LogTest
                 Arrays.fill( recordData, (byte )i );
             
                 userLogRecord.setData( recordData, dataLength );
-                log.log( userLogRecord, true );
+                log.log( userLogRecord, false );
             }
             
+            // Sync everything
+            log.sync( LogAnchor.UNKNOWN_LSN );
+            
             LogScanner logScanner = log.beginScan( startingLogAnchor );
             int recordNumber = 0;