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 md...@apache.org on 2013/03/08 15:13:47 UTC
svn commit: r1454396 -
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
Author: mduerig
Date: Fri Mar 8 14:13:46 2013
New Revision: 1454396
URL: http://svn.apache.org/r1454396
Log:
OAK-687: SessionDelegate.perform() must serialize calls to refresh()
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1454396&r1=1454395&r2=1454396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Fri Mar 8 14:13:46 2013
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.jcr;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
+
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.jcr.ItemExistsException;
@@ -46,11 +47,11 @@ import org.apache.jackrabbit.oak.api.Roo
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.TreeLocation;
import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.core.IdentifierManager;
import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
import org.apache.jackrabbit.oak.namepath.NameMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
-import org.apache.jackrabbit.oak.core.IdentifierManager;
import org.apache.jackrabbit.oak.plugins.name.Namespaces;
import org.apache.jackrabbit.oak.plugins.nodetype.DefinitionProvider;
import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeProvider;
@@ -127,9 +128,10 @@ public class SessionDelegate {
* @return the result of {@code sessionOperation.perform()}
* @throws RepositoryException
*/
- public <T> T perform(SessionOperation<T> sessionOperation) throws RepositoryException {
+ public synchronized <T> T perform(SessionOperation<T> sessionOperation) throws RepositoryException {
+ // Synchronize to avoid conflicting refreshes from concurrent JCR API calls
+ sessionOpCount++;
try {
- sessionOpCount++;
if (needsRefresh()) {
refresh(true);
}