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