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 2016/01/26 15:56:23 UTC

svn commit: r1726812 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/mongo/ test/java/org/apache/jackrabbit/oak/plugins/document/

Author: mreutegg
Date: Tue Jan 26 14:56:23 2016
New Revision: 1726812

URL: http://svn.apache.org/viewvc?rev=1726812&view=rev
Log:
OAK-3929: RevisionGC does not invalidate document cache

Implement fix and enable tests

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionGCTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1726812&r1=1726811&r2=1726812&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java Tue Jan 26 14:56:23 2016
@@ -84,7 +84,10 @@ import com.mongodb.WriteConcern;
 import com.mongodb.WriteResult;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Predicates.in;
+import static com.google.common.base.Predicates.not;
 import static com.google.common.base.Predicates.notNull;
+import static com.google.common.collect.Iterables.filter;
 import static com.google.common.collect.Maps.filterValues;
 
 /**
@@ -295,9 +298,13 @@ public class MongoDocumentStore implemen
             result.queryCount++;
 
             int invalidated = nodesCache.invalidateOutdated(modCounts);
-            result.cacheEntriesProcessedCount += modCounts.size();
+            for (String id : filter(ids, not(in(modCounts.keySet())))) {
+                nodesCache.invalidate(id);
+                invalidated++;
+            }
+            result.cacheEntriesProcessedCount += ids.size();
             result.invalidationCount += invalidated;
-            result.upToDateCount = modCounts.size() - invalidated;
+            result.upToDateCount += ids.size() - invalidated;
         }
 
         result.cacheSize = size;

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java?rev=1726812&r1=1726811&r2=1726812&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java Tue Jan 26 14:56:23 2016
@@ -35,7 +35,6 @@ import java.util.UUID;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Condition;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Key;
 import org.apache.jackrabbit.oak.plugins.document.util.Utils;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -901,7 +900,6 @@ public class BasicDocumentStoreTest exte
         }
     }
 
-    @Ignore("OAK-3929")
     @Test
     public void removeInvalidatesCache() throws Exception {
         String id = Utils.getIdFromPath("/foo");

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionGCTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionGCTest.java?rev=1726812&r1=1726811&r2=1726812&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionGCTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionGCTest.java Tue Jan 26 14:56:23 2016
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.stats.Clock;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -74,7 +73,6 @@ public class RevisionGCTest {
         Revision.resetClockToDefault();
     }
 
-    @Ignore("OAK-3929")
     @Test
     public void recreateRemovedNodeAfterGC() throws Exception {
         NodeBuilder b = newNodeBuilder();