You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2020/04/27 14:23:31 UTC
svn commit: r1877078 - in /jackrabbit/oak/branches/1.8: ./
oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/
oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/
Author: reschke
Date: Mon Apr 27 14:23:31 2020
New Revision: 1877078
URL: http://svn.apache.org/viewvc?rev=1877078&view=rev
Log:
OAK-8944: Missing journal entry on recovery (merged r1875041 and r1875152 into 1.8)
Added:
jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java
- copied, changed from r1875041, jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java
Modified:
jackrabbit/oak/branches/1.8/ (props changed)
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java
jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TestUtils.java
Propchange: jackrabbit/oak/branches/1.8/
------------------------------------------------------------------------------
Merged /jackrabbit/oak/trunk:r1875041,1875152
Modified: jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java?rev=1877078&r1=1877077&r2=1877078&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java (original)
+++ jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java Mon Apr 27 14:23:31 2020
@@ -237,6 +237,14 @@ public class LastRevRecoveryAgent {
log.info("Sweeper updated {}", updates.keySet());
}
});
+
+ if (sweepRev.get() != null) {
+ // One or more journal entries were created by the sweeper.
+ // Make sure the sweep revision is different / newer than the
+ // last journal entry written so far. UnsavedModification
+ // further down needs a new revision for its journal entry.
+ sweepRev.set(Utils.max(sweepRev.get(), context.newRevision()));
+ }
}
// now deal with missing _lastRev updates
@@ -390,11 +398,16 @@ public class LastRevRecoveryAgent {
// journal entry, then died.
// in this case, don't write it again.
// hence: nothing to be done here. return.
+ log.warn("Journal entry {} already exists", id);
return;
}
// otherwise store a new journal entry now
- docStore.create(JOURNAL, singletonList(changes.asUpdateOp(lastRootRev)));
+ if (docStore.create(JOURNAL, singletonList(changes.asUpdateOp(lastRootRev)))) {
+ log.info("Recovery created journal entry {}", id);
+ } else {
+ log.warn("Unable to create journal entry {} (already exists).", id);
+ }
}
}, new ReentrantLock());
Copied: jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java (from r1875041, jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java?p2=jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java&p1=jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java&r1=1875041&r2=1877078&rev=1877078&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java (original)
+++ jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java Mon Apr 27 14:23:31 2020
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.junit.Ignore;
import org.junit.Test;
import static org.apache.jackrabbit.oak.plugins.document.TestUtils.disposeQuietly;
@@ -55,7 +54,6 @@ public class RecoveryTest extends Abstra
return fds;
}
- @Ignore
@Test
public void recoverOther() throws Exception {
NodeBuilder builder = ds1.getRoot().builder();
Modified: jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TestUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TestUtils.java?rev=1877078&r1=1877077&r2=1877078&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TestUtils.java (original)
+++ jackrabbit/oak/branches/1.8/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/TestUtils.java Mon Apr 27 14:23:31 2020
@@ -100,4 +100,12 @@ public class TestUtils {
public static void resetRevisionClockToDefault() {
Revision.resetClockToDefault();
}
+
+ public static void disposeQuietly(DocumentNodeStore ns) {
+ try {
+ ns.dispose();
+ } catch (Exception e) {
+ // ignore
+ }
+ }
}