Index: src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java (revision 1636936) +++ src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java (working copy) @@ -277,7 +277,7 @@ } } } catch (Exception e) { - LOG.warn("Error while dispatching observation events", e); + LOG.warn("Error while dispatching observation events on {}",tracker, e); } } previousRoot = root; Index: src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java (revision 1636936) +++ src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java (working copy) @@ -20,7 +20,6 @@ import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Sets.newHashSet; -import static java.util.Collections.emptySet; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.apache.jackrabbit.oak.commons.PathUtils.concat; import static org.apache.jackrabbit.oak.commons.PathUtils.isAncestor; @@ -48,8 +47,10 @@ import org.apache.jackrabbit.commons.iterator.EventListenerIteratorAdapter; import org.apache.jackrabbit.commons.observation.ListenerTracker; import org.apache.jackrabbit.oak.api.ContentSession; +import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate; import org.apache.jackrabbit.oak.jcr.session.SessionContext; +import org.apache.jackrabbit.oak.jcr.session.operation.SessionOperation; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager; import org.apache.jackrabbit.oak.plugins.observation.CommitRateLimiter; @@ -119,8 +120,20 @@ @Nonnull @Override public PermissionProvider create() { - return authorizationConfig.getPermissionProvider( - sessionDelegate.getRoot(), sessionDelegate.getWorkspaceName(), principals); + Root root = null; + try { + root = sessionDelegate.perform(new SessionOperation( + "refresh-root") { + + @Override + public Root perform() throws RepositoryException { + return sessionDelegate.getRoot(); + } + }); + } catch (RepositoryException e) { + } + return authorizationConfig.getPermissionProvider(root, + sessionDelegate.getWorkspaceName(), principals); } }; }