You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2013/07/03 11:17:00 UTC

svn commit: r1499285 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java

Author: mreutegg
Date: Wed Jul  3 09:16:59 2013
New Revision: 1499285

URL: http://svn.apache.org/r1499285
Log:
JCR-3617: Inconsistent CachingHierarchyManager under concurrent access
- Evict when stale entry is detected

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java?rev=1499285&r1=1499284&r2=1499285&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java Wed Jul  3 09:16:59 2013
@@ -165,6 +165,8 @@ public class CachingHierarchyManager ext
                     + entry.getId() + ", path: " + path.getString();
             logItemStateException(msg, e);
             log.debug(msg);
+            // probably stale cache entry -> evict
+            evictAll(entry.getId(), true);
         }
         // JCR-3617: fall back to super class in case of ItemStateException
         return super.resolvePath(path, typesAllowed);
@@ -564,7 +566,7 @@ public class CachingHierarchyManager ext
             PathMap.Element<LRUEntry> element = pathCache.put(path);
             if (element.get() != null) {
                 if (!id.equals(((LRUEntry) element.get()).getId())) {
-                    log.warn("overwriting PathMap.Element");
+                    log.debug("overwriting PathMap.Element");
                 }
             }
             LRUEntry entry = (LRUEntry) idCache.get(id);