Author: adulceanu
Date: Fri Sep 15 11:37:08 2017
New Revision: 1808448

URL: http://svn.apache.org/viewvc?rev=1808448&view=rev
Log:
OAK-6653 - Standby server must always send the persisted head to clients

Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Revisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStoreRevisions.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReader.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReaderTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Revisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Revisions.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Revisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Revisions.java
 Fri Sep 15 11:37:08 2017
@@ -47,6 +47,14 @@ public interface Revisions {
      */
     @Nonnull
     RecordId getHead();
+    
+    /**
+     * Returns the <b>persisted</b> to disk record id of the head state. 
+     * The returned id is a valid id for a {@code SegmentNodeState}.
+     * @return  id of the head state
+     */
+    @Nonnull
+    RecordId getPersistedHead();
 
     /**
      * Atomically set the record id of the current head state to the

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyRevisions.java
 Fri Sep 15 11:37:08 2017
@@ -91,6 +91,12 @@ public class ReadOnlyRevisions implement
         checkBound();
         return head.get();
     }
+    
+    @Nonnull
+    @Override
+    public RecordId getPersistedHead() {
+        return getHead();
+    }
 
     @Override
     public boolean setHead(@Nonnull RecordId expected, @Nonnull RecordId head, 
@Nonnull Option... options) {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/TarRevisions.java
 Fri Sep 15 11:37:08 2017
@@ -228,6 +228,13 @@ public class TarRevisions implements Rev
         checkBound();
         return head.get();
     }
+    
+    @Nonnull
+    @Override
+    public RecordId getPersistedHead() {
+        checkBound();
+        return persistedHead.get();
+    }
 
     /**
      * This implementation blocks if a concurrent call to

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStoreRevisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStoreRevisions.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStoreRevisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStoreRevisions.java
 Fri Sep 15 11:37:08 2017
@@ -61,6 +61,12 @@ public class MemoryStoreRevisions implem
         return head;
     }
 
+    @Nonnull
+    @Override
+    public RecordId getPersistedHead() {
+        return getHead();
+    }
+    
     @Override
     public synchronized boolean setHead(
             @Nonnull RecordId expected, @Nonnull RecordId head,

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReader.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReader.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReader.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReader.java
 Fri Sep 15 11:37:08 2017
@@ -29,7 +29,7 @@ class DefaultStandbyHeadReader implement
 
     @Override
     public String readHeadRecordId() {
-        return store.getHead().getRecordId().toString();
+        return store.getRevisions().getPersistedHead().toString();
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 Fri Sep 15 11:37:08 2017
@@ -157,6 +157,7 @@ public class MBeanIT extends TestBase {
                 StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore(), serverPort.getPort())
         ) {
             serverSync.start();
+            serverFileStore.fileStore().flush();
 
             clientSync.start();
             clientSync.run();

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReaderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReaderTest.java?rev=1808448&r1=1808447&r2=1808448&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReaderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyHeadReaderTest.java
 Fri Sep 15 11:37:08 2017
@@ -39,8 +39,9 @@ public class DefaultStandbyHeadReaderTes
     @Test
     public void shouldReturnHeadSegmentId() throws Exception {
         try (FileStore store = newFileStore()) {
+            store.flush();
             DefaultStandbyHeadReader reader = new 
DefaultStandbyHeadReader(store);
-            assertEquals(store.getHead().getRecordId().toString(), 
reader.readHeadRecordId());
+            assertEquals(store.getRevisions().getPersistedHead().toString(), 
reader.readHeadRecordId());
         }
     }
 


Reply via email to