[425618] Build workspace hangs waiting to lock org.eclipse.jst.jsp.core.taglib.TaglibIndex
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
index 722b7e2..d4d15cc 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2013 IBM Corporation and others.
+ * Copyright (c) 2005, 2014 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -773,12 +773,20 @@
return fCurrentTopLevelDelta;
}
- synchronized void fireCurrentDelta(Object trigger) {
- if (fCurrentTopLevelDelta != null) {
- fCurrentTopLevelDelta.trigger = trigger;
- ITaglibIndexDelta delta = fCurrentTopLevelDelta;
- fCurrentTopLevelDelta = null;
- fireTaglibDelta(delta);
+ void fireCurrentDelta(Object trigger) {
+ LOCK.acquire();
+ try {
+ synchronized (this) {
+ if (fCurrentTopLevelDelta != null) {
+ fCurrentTopLevelDelta.trigger = trigger;
+ ITaglibIndexDelta delta = fCurrentTopLevelDelta;
+ fCurrentTopLevelDelta = null;
+ fireTaglibDelta(delta);
+ }
+ }
+ }
+ finally {
+ LOCK.release();
}
}