1.4: Merged revision 984444 (JCR-2171)

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/branches/1.4@984445 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
index d226709..83981c7 100644
--- a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
+++ b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
@@ -755,13 +755,14 @@
 
             ISMLocking.ReadLock readLock = null;
             try {
-                /* Let the shared item listeners know about the change */
-                shared.persisted();
-
                 // downgrade to read lock
                 readLock = writeLock.downgrade();
                 writeLock = null;
 
+                // Let the shared item listeners know about the change
+                // JCR-2171: This must happen after downgrading the lock!
+                shared.persisted();
+
                 /* notify virtual providers about node references */
                 for (int i = 0; i < virtualNodeReferences.length; i++) {
                     List virtualRefs = virtualNodeReferences[i];