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 2014/07/17 10:05:41 UTC
svn commit: r1611277 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
Author: mreutegg
Date: Thu Jul 17 08:05:41 2014
New Revision: 1611277
URL: http://svn.apache.org/r1611277
Log:
OAK-1972: Async property index update may fail on DocumentMK with more than 100 index changes
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.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/NodeDocument.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java?rev=1611277&r1=1611276&r2=1611277&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java Thu Jul 17 08:05:41 2014
@@ -743,6 +743,22 @@ public final class NodeDocument extends
// first check local map, which contains most recent values
Value value = getLatestValue(nodeStore, getLocalMap(key),
min, readRevision, validRevisions);
+
+ // check if there may be more recent values in a previous document
+ if (value != null && !getPreviousRanges().isEmpty()) {
+ Revision newest = getLocalMap(key).firstKey();
+ if (!value.revision.equals(newest)) {
+ // not reading the most recent value, we may need to
+ // consider previous documents as well
+ Revision newestPrev = getPreviousRanges().firstKey();
+ if (isRevisionNewer(nodeStore, newestPrev, value.revision)) {
+ // a previous document has more recent changes
+ // than value.revision
+ value = null;
+ }
+ }
+ }
+
if (value == null && !getPreviousRanges().isEmpty()) {
// check complete revision history
value = getLatestValue(nodeStore, getValueMap(key),
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=1611277&r1=1611276&r2=1611277&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 Thu Jul 17 08:05:41 2014
@@ -50,7 +50,6 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.stats.Clock;
import org.junit.After;
-import org.junit.Ignore;
import org.junit.Test;
import com.google.common.collect.Iterables;
@@ -510,7 +509,6 @@ public class DocumentNodeStoreTest {
}
// OAK-1972
- @Ignore
@Test
public void readFromPreviousDoc() throws CommitFailedException {
DocumentStore docStore = new MemoryDocumentStore();