Author: jukka Date: Mon Nov 29 12:52:22 2010 New Revision: 1040094 URL: http://svn.apache.org/viewvc?rev=1040094&view=rev Log: 2.2: Merged revision 1040090 (JCR-2820) Modified: jackrabbit/branches/2.2/ (props changed) jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java jackrabbit/branches/2.2/jackrabbit-jcr-servlet/ (props changed) jackrabbit/branches/2.2/test/compatibility/create11/ (props changed) jackrabbit/branches/2.2/test/compatibility/create12/ (props changed) jackrabbit/branches/2.2/test/compatibility/create13/ (props changed) jackrabbit/branches/2.2/test/compatibility/create14/ (props changed) jackrabbit/branches/2.2/test/compatibility/create15/ (props changed) jackrabbit/branches/2.2/test/compatibility/create16/ (props changed) jackrabbit/branches/2.2/test/compatibility/create20/ (props changed) jackrabbit/branches/2.2/test/compatibility/create21/ (props changed) Propchange: jackrabbit/branches/2.2/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Nov 29 12:52:22 2010 @@ -2,4 +2,4 @@ /jackrabbit/sandbox/JCR-1456:774917-886178 /jackrabbit/sandbox/JCR-2170:812417-816332 /jackrabbit/sandbox/tripod-JCR-2209:795441-795863 -/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033 +/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090 Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java?rev=1040094&r1=1040093&r2=1040094&view=diff ============================================================================== --- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java (original) +++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java Mon Nov 29 12:52:22 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(); Propchange: jackrabbit/branches/2.2/jackrabbit-jcr-servlet/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create11/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create12/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create13/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create14/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create15/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create16/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create20/ ('svn:mergeinfo' removed) Propchange: jackrabbit/branches/2.2/test/compatibility/create21/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Nov 29 12:52:22 2010 @@ -1 +1 @@ -/jackrabbit/trunk/test/compatibility/create21:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033 +/jackrabbit/trunk/test/compatibility/create21:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090