[331590] ModelManager overly-synchronized for getting referenceCounts
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java index 09a96e1..82c1854 100644 --- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java +++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
@@ -1518,12 +1518,12 @@ if (sharedObject != null) { SYNC.release(); sharedObject.waitForLoadAttempt(); - SYNC.acquire(); synchronized (sharedObject) { count = sharedObject.referenceCountForRead + sharedObject.referenceCountForEdit; } + } else { + SYNC.release(); } - SYNC.release(); return count; } @@ -1566,12 +1566,12 @@ if (sharedObject != null) { SYNC.release(); sharedObject.waitForLoadAttempt(); - SYNC.acquire(); synchronized(sharedObject) { count = sharedObject.referenceCountForRead; } + } else { + SYNC.release(); } - SYNC.release(); return count; } @@ -1599,12 +1599,12 @@ if (sharedObject != null) { SYNC.release(); sharedObject.waitForLoadAttempt(); - SYNC.acquire(); synchronized(sharedObject) { count = sharedObject.referenceCountForRead + sharedObject.referenceCountForEdit; } + } else { + SYNC.release(); } - SYNC.release(); result = count > 1; return result; } @@ -1651,12 +1651,12 @@ if (sharedObject != null) { SYNC.release(); sharedObject.waitForLoadAttempt(); - SYNC.acquire(); synchronized(sharedObject) { count = sharedObject.referenceCountForRead; } + } else { + SYNC.release(); } - SYNC.release(); result = count > 1; return result; }