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/12/08 10:24:35 UTC
svn commit: r1643767 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java
test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java
Author: mreutegg
Date: Mon Dec 8 09:24:35 2014
New Revision: 1643767
URL: http://svn.apache.org/r1643767
Log:
OAK-2318: DocumentNodeStore.diffManyChildren() reads too many nodes
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java?rev=1643767&r1=1643766&r2=1643767&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java Mon Dec 8 09:24:35 2014
@@ -554,7 +554,14 @@ public class Revision {
return timestamp;
}
// go through all known cluster nodes
- for (List<RevisionRange> list : map.values()) {
+ for (Map.Entry<Integer, List<RevisionRange>> e : map.entrySet()) {
+ if (revision.getClusterId() == currentClusterNodeId
+ && e.getKey() == currentClusterNodeId) {
+ // range and revision is for current cluster node
+ // no need to adjust timestamp
+ continue;
+ }
+ List<RevisionRange> list = e.getValue();
RevisionRange range;
for (int i = list.size() - 1; i >= 0; i--) {
range = list.get(i);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java?rev=1643767&r1=1643766&r2=1643767&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java Mon Dec 8 09:24:35 2014
@@ -496,4 +496,19 @@ public class RevisionTest {
assertEquals(7, comp.getMinimumTimestamp(r17, inactive));
}
+ // OAK-2318
+ @Test
+ public void getMinimumTimestampSingleClusterId() {
+ Map<Integer, Long> inactive = Maps.newHashMap();
+ RevisionComparator comp = new RevisionComparator(1);
+
+ Revision r1 = new Revision(1, 0, 1);
+ comp.add(r1, new Revision(1, 0, 0));
+
+ assertEquals(1, comp.getMinimumTimestamp(r1, inactive));
+
+ Revision r2 = new Revision(2, 0, 1);
+ assertEquals(2, comp.getMinimumTimestamp(r2, inactive));
+ }
+
}