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 ch...@apache.org on 2013/11/20 09:02:39 UTC

svn commit: r1543730 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java

Author: chetanm
Date: Wed Nov 20 08:02:39 2013
New Revision: 1543730

URL: http://svn.apache.org/r1543730
Log:
OAK-1156 - Improve the document cache invalidation logic to selectively invalidate doc

Adding an extra check that sameLevelNodes is not empty. Otherwise unnecessary query would be performed with empty node list

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java?rev=1543730&r1=1543729&r2=1543730&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/CacheInvalidator.java Wed Nov 20 08:02:39 2013
@@ -187,15 +187,15 @@ abstract class CacheInvalidator {
                 final boolean hasMore = pitr.hasNext();
 
                 //Change in level or last element
-                if ((hasMore && tn.level() != pitr.peek().level())
-                        ||
-                        (!hasMore && !sameLevelNodes.isEmpty())) {
+                if (!sameLevelNodes.isEmpty() &&
+                        ((hasMore && tn.level() != pitr.peek().level()) || !hasMore )) {
 
                     QueryBuilder query = QueryBuilder.start(Document.ID)
                             .in(sameLevelNodes.keySet());
 
                     //Fetch lastRev and modCount for each such nodes
                     DBCursor cursor = nodes.find(query.get(), keys);
+                    LOG.debug("Checking for changed nodes at level {} with {} paths",tn.level(),sameLevelNodes.size());
                     result.queryCount++;
                     for (DBObject obj : cursor) {