### Eclipse Workspace Patch 1.0 #P jackrabbit-core Index: src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java (revision 1707047) +++ src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java (working copy) @@ -134,15 +134,21 @@ // we want to become the current writer Sync exclusive = writerStateRWLock.writeLock(); exclusive.acquire(); + Object currentId = getCurrentThreadId(); try { if (activeWriter == null && !readLockMap.hasDependency(changeLog)) { activeWriter = new WriteLockImpl(changeLog); - activeWriterId = getCurrentThreadId(); + activeWriterId = currentId; return activeWriter; } else { - signal = new Latch(); - waitingWriters.add(signal); + if (isSameThreadId(activeWriterId, currentId) + && !readLockMap.hasDependency(changeLog)) { + return activeWriter; + } else { + signal = new Latch(); + waitingWriters.add(signal); + } } } finally { exclusive.release();