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 mr...@apache.org on 2020/03/13 12:49:19 UTC
svn commit: r1875152 - in /jackrabbit/oak/trunk/oak-store-document/src:
main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java
test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java
Author: mreutegg
Date: Fri Mar 13 12:49:18 2020
New Revision: 1875152
URL: http://svn.apache.org/viewvc?rev=1875152&view=rev
Log:
OAK-8944: Missing journal entry on recovery
Apply fix and enable test
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java?rev=1875152&r1=1875151&r2=1875152&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LastRevRecoveryAgent.java Fri Mar 13 12:49:18 2020
@@ -284,6 +284,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
@@ -452,11 +460,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
- store.create(JOURNAL, singletonList(changes.asUpdateOp(lastRootRev)));
+ if (store.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());
Modified: 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/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java?rev=1875152&r1=1875151&r2=1875152&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RecoveryTest.java Fri Mar 13 12:49:18 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();