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 2017/07/26 08:15:27 UTC
svn commit: r1803026 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
Author: mreutegg
Date: Wed Jul 26 08:15:27 2017
New Revision: 1803026
URL: http://svn.apache.org/viewvc?rev=1803026&view=rev
Log:
OAK-6495: Fallback to classic diff when journal is broken
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1803026&r1=1803025&r2=1803026&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Wed Jul 26 08:15:27 2017
@@ -2717,10 +2717,10 @@ public final class DocumentNodeStore
final long start = debug ? now() : 0;
long getChildrenDoneIn = start;
- String diff;
- String diffAlgo;
- RevisionVector fromRev = from.getLastRevision();
- RevisionVector toRev = to.getLastRevision();
+ String diff = null;
+ String diffAlgo = null;
+ RevisionVector fromRev = null;
+ RevisionVector toRev = null;
long minTimestamp = Utils.getMinTimestampForDiff(
from.getRootRevision(), to.getRootRevision(),
getMinExternalRevisions());
@@ -2732,11 +2732,22 @@ public final class DocumentNodeStore
if (!disableJournalDiff
&& tailRev.getTimestamp() < minTimestamp
&& minJournalTimestamp < minTimestamp) {
- diffAlgo = "diffJournalChildren";
- fromRev = from.getRootRevision();
- toRev = to.getRootRevision();
- diff = new JournalDiffLoader(from, to, this).call();
- } else {
+ try {
+ diff = new JournalDiffLoader(from, to, this).call();
+ diffAlgo = "diffJournalChildren";
+ fromRev = from.getRootRevision();
+ toRev = to.getRootRevision();
+ } catch (RuntimeException e) {
+ LOG.warn("diffJournalChildren failed with " +
+ e.getClass().getSimpleName() +
+ ", falling back to classic diff", e);
+ }
+ }
+ if (diff == null) {
+ // fall back to classic diff
+ fromRev = from.getLastRevision();
+ toRev = to.getLastRevision();
+
JsopWriter w = new JsopStream();
boolean continueDiff = bundledDocDiffer.diff(from, to, w);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1803026&r1=1803025&r2=1803026&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java Wed Jul 26 08:15:27 2017
@@ -3414,7 +3414,6 @@ public class DocumentNodeStoreTest {
}
// OAK-6495
- @Ignore("OAK-6495")
@Test
public void diffWithBrokenJournal() throws Exception {
Clock clock = new Clock.Virtual();