[321398] Deadlock occuring due to ModuleStructuralModel.checkSync()
diff --git a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
index 094daf5..61b1105 100644
--- a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %Bundle-Name.0
Bundle-Vendor: %provider
Bundle-SymbolicName: org.eclipse.wst.common.modulecore; singleton:=true
-Bundle-Version: 1.2.1.qualifier
+Bundle-Version: 1.2.3.qualifier
Bundle-Activator: org.eclipse.wst.common.componentcore.internal.ModulecorePlugin
Bundle-Localization: plugin
Export-Package: org.eclipse.wst.common.componentcore,
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
index bf37cea..c120a83 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
@@ -19,10 +19,10 @@
import java.util.List;
import java.util.Map;
+import org.eclipse.core.internal.resources.Workspace;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -284,15 +284,15 @@
if (!compFile.isSynchronized(IResource.DEPTH_ONE)) {
File iofile = compFile.getFullPath().toFile();
if (iofile.exists() || compFile.exists()) {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
try {
- // OK wait to get workspace root before refreshing
- Job.getJobManager().beginRule(root, null);
- compFile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
+ Workspace workspace = (Workspace)compFile.getWorkspace();
+ if (workspace.getElementTree().isImmutable())
+ {
+ workspace.newWorkingTree();
+ }
+ ((org.eclipse.core.internal.resources.Resource)compFile).getLocalManager().refresh(compFile.getProject(), IResource.DEPTH_INFINITE, true, null);
} catch (CoreException ce) {
// ignore
- } finally {
- Job.getJobManager().endRule(root);
}
}
}