Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java (revision 997943) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/CachingHierarchyManager.java (working copy) @@ -17,8 +17,11 @@ package org.apache.jackrabbit.core; import java.io.PrintStream; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import javax.jcr.ItemNotFoundException; import javax.jcr.PathNotFoundException; @@ -306,12 +309,17 @@ */ public void nodeModified(NodeState modified) { synchronized (cacheMonitor) { + List> elements; LRUEntry entry = (LRUEntry) idCache.get(modified.getNodeId()); - if (entry == null) { - // Item not cached, ignore - return; + if (entry != null) { + elements = Arrays.asList(entry.getElements()); + } else if (rootNodeId.equals(modified.getNodeId())) { + elements = Collections.singletonList(pathCache.map( + PathFactoryImpl.getInstance().getRootPath(), true)); + } else { + elements = Collections.emptyList(); } - for (PathMap.Element element : entry.getElements()) { + for (PathMap.Element element : elements) { Iterator> iter = element.getChildren(); while (iter.hasNext()) { PathMap.Element child = iter.next();