You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2010/10/15 16:31:26 UTC

svn commit: r1022946 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java

Author: thomasm
Date: Fri Oct 15 14:31:26 2010
New Revision: 1022946

URL: http://svn.apache.org/viewvc?rev=1022946&view=rev
Log:
JCR-2786 Cluster sync not always done when calling session.refresh(..)

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

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java?rev=1022946&r1=1022945&r2=1022946&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java Fri Oct 15 14:31:26 2010
@@ -20,6 +20,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.jcr.RepositoryException;
 
@@ -127,7 +128,7 @@ public class ClusterNode implements Runn
      * @since Apache Jackrabbit 1.6
      * @see <a href="https://issues.apache.org/jira/browse/JCR-1753">JCR-1753</a>
      */
-    private volatile int syncCount;
+    private AtomicInteger syncCount = new AtomicInteger();
 
     /**
      * Status flag, one of {@link #NONE}, {@link #STARTED} or {@link #STOPPED}.
@@ -287,7 +288,7 @@ public class ClusterNode implements Runn
      * @throws ClusterException if an error occurs
      */
     public void sync() throws ClusterException {
-        int count = syncCount;
+        int count = syncCount.get();
 
         try {
             syncLock.acquire();
@@ -299,9 +300,9 @@ public class ClusterNode implements Runn
         try {
             // JCR-1753: Only synchronize if no other thread already did so
             // while we were waiting to acquire the syncLock.
-            if (count == syncCount) {
+            if (count == syncCount.get()) {
+                syncCount.incrementAndGet();
                 journal.sync();
-                syncCount++;
             }
         } catch (JournalException e) {
             throw new ClusterException(e.getMessage(), e.getCause());