[215724] Unbalanced thread locking effectively hangs workbench (II)
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 7c59bef..cf0e4f0 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
@@ -1041,7 +1041,7 @@
IStructuredModel result = null;
SYNC.acquire();
- Assert.isTrue(SYNC.getDepth()==1, "depth not equal to 1");
+ //Assert.isTrue(SYNC.getDepth()==1, "depth not equal to 1");
// let's see if we already have it in our cache
SharedObject sharedObject = (SharedObject) fManagedObjects.get(id);
// if not, then we'll simply return null
@@ -1194,7 +1194,7 @@
public IStructuredModel getExistingModelForRead(Object id) {
Assert.isNotNull(id, "id parameter can not be null"); //$NON-NLS-1$
IStructuredModel result = null;
- boolean doRealease = true;
+ boolean doRelease = true;
// let's see if we already have it in our cache
try {
SYNC.acquire();
@@ -1205,7 +1205,7 @@
// count,
// and return the object.
SYNC.release();
- doRealease=false;
+ doRelease=false;
synchronized(sharedObject) {
if (sharedObject.doWait) {
@@ -1218,7 +1218,7 @@
}
}
} finally {
- if (doRealease)
+ if (doRelease)
SYNC.release();
}
return result;
@@ -1516,10 +1516,8 @@
synchronized(sharedObject) {
count = sharedObject.referenceCountForRead + sharedObject.referenceCountForEdit;
}
- SYNC.release();
- } else {
- SYNC.release();
}
+ SYNC.release();
result = count > 1;
return result;
}
@@ -1570,10 +1568,8 @@
synchronized(sharedObject) {
count = sharedObject.referenceCountForRead;
}
- SYNC.release();
- } else {
- SYNC.release();
}
+ SYNC.release();
result = count > 1;
return result;
}