jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ju...@apache.org
Subject svn commit: r1040106 - in /jackrabbit/branches/2.0: ./ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java
Date Mon, 29 Nov 2010 13:31:12 GMT
Author: jukka
Date: Mon Nov 29 13:31:12 2010
New Revision: 1040106

URL: http://svn.apache.org/viewvc?rev=1040106&view=rev
Log:
2.0: Merged revision 1040102 (JCR-2820)

Modified:
    jackrabbit/branches/2.0/   (props changed)
    jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java

Propchange: jackrabbit/branches/2.0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 29 13:31:12 2010
@@ -1,6 +1,6 @@
 /jackrabbit/branches/1.5:794012,794100,794102
-/jackrabbit/branches/2.1:955309,955314,982266,982277,982505,998310,1025933,1025957,1025962,1025964,1025981,1025985,1025990,1025995,1025999,1026002,1038594,1038599,1039335
+/jackrabbit/branches/2.1:955309,955314,982266,982277,982505,998310,1025933,1025957,1025962,1025964,1025981,1025985,1025990,1025995,1025999,1026002,1038594,1038599,1039335,1040102
 /jackrabbit/sandbox/JCR-1456:774917-886178
 /jackrabbit/sandbox/JCR-2170:812417-816332
 /jackrabbit/sandbox/tripod-JCR-2209:795441-795863
-/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408,896513,896532,896857,896870,896876,896908,896940,896942-896943,896969,896977,897071,897836,897842,897858,897935,897983,897992-897993,897996,898002,898042,898267,898325,898540,898677,898699,898701,898715,898872,899102,899181,899391,899393-899394,899583,899594,899643,900305,900310,900314,900453,900702,900736,900762-900763,900767,900782,901095,901122,901139,901144,901170,901176,901191,901193,901196,901216,901228,901285,902058,902062,926324,928888,936668,955222,955229,955307,955852,965539,995411-995412,996810,999298-999299,999965,1000947,1001707,1002065-1002066,1002084,1002101-1002102,1002168,1002170,1002589,1002608,1002657,1002729,1003423,1003470,1003542,1003773,1004182,1004184,1004223-1004224,1004652,1005057,1005112,1036117,1036336-1036337,1038201,1039064
+/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408,896513,896532,896857,896870,896876,896908,896940,896942-896943,896969,896977,897071,897836,897842,897858,897935,897983,897992-897993,897996,898002,898042,898267,898325,898540,898677,898699,898701,898715,898872,899102,899181,899391,899393-899394,899583,899594,899643,900305,900310,900314,900453,900702,900736,900762-900763,900767,900782,901095,901122,901139,901144,901170,901176,901191,901193,901196,901216,901228,901285,902058,902062,926324,928888,936668,955222,955229,955307,955852,965539,995411-995412,996810,999298-999299,999965,1000947,1001707,1002065-1002066,1002084,1002101-1002102,1002168,1002170,1002589,1002608,1002657,1002729,1003423,1003470,1003542,1003773,1004182,1004184,1004223-1004224,1004652,1005057,1005112,1036117,1036336-1036337,1038201,1039064,1040090

Modified: jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java?rev=1040106&r1=1040105&r2=1040106&view=diff
==============================================================================
--- jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java
(original)
+++ jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java
Mon Nov 29 13:31:12 2010
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.core.state;
 
+import static org.apache.jackrabbit.core.TransactionContext.getCurrentThreadId;
+import static org.apache.jackrabbit.core.TransactionContext.isSameThreadId;
+
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -52,7 +55,7 @@ public class FineGrainedISMLocking imple
      */
     private WriteLockImpl activeWriter;
 
-    private volatile Thread activeWriterThread;
+    private volatile Object activeWriterId;
 
     private ReadWriteLock writerStateRWLock = new WriterPreferenceReadWriteLock();
 
@@ -79,7 +82,7 @@ public class FineGrainedISMLocking imple
      */
     public ReadLock acquireReadLock(ItemId id)
             throws InterruptedException {
-        if (activeWriterThread == Thread.currentThread()) {
+        if (isSameThreadId(activeWriterId, getCurrentThreadId())) {
             // we hold the write lock
             readLockMap.addLock(id);
             return new ReadLockImpl(id);
@@ -126,7 +129,7 @@ public class FineGrainedISMLocking imple
                 if (activeWriter == null
                         && !readLockMap.hasDependency(changeLog)) {
                     activeWriter = new WriteLockImpl(changeLog);
-                    activeWriterThread = Thread.currentThread();
+                    activeWriterId = getCurrentThreadId();
                     return activeWriter;
                 } else {
                     signal = new Latch();
@@ -164,7 +167,7 @@ public class FineGrainedISMLocking imple
             }
             try {
                 activeWriter = null;
-                activeWriterThread = null;
+                activeWriterId = null;
                 notifyWaitingReaders();
                 notifyWaitingWriters();
             } finally {
@@ -186,7 +189,6 @@ public class FineGrainedISMLocking imple
             }
             try {
                 activeWriter = null;
-                activeWriterThread = null;
                 // only notify waiting readers since we still hold a down
                 // graded lock, which is kind of exclusiv with respect to
                 // other writers
@@ -224,7 +226,7 @@ public class FineGrainedISMLocking imple
             }
             try {
                 readLockMap.removeLock(id);
-                if (activeWriterThread != Thread.currentThread()) {
+                if (!isSameThreadId(activeWriterId, getCurrentThreadId())) {
                     // only notify waiting writers if we do *not* hold a write
                     // lock at the same time. that would be a waste of cpu time.
                     notifyWaitingWriters();



Mime
View raw message