Bug 316839 - JobManager.yieldRule() does not update lock graph correctly for jobs that manage rules
diff --git a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
index fd153d7..5efc247 100644
--- a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.core.jobs; singleton:=true
-Bundle-Version: 3.5.0.qualifier
+Bundle-Version: 3.5.1.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.core.internal.jobs;x-internal:=true,
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
index a0cfdc6..6f423f6 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
@@ -10,6 +10,7 @@
* Stephan Wahlbrink - Fix for bug 200997.
* Danail Nachev - Fix for bug 109898
* Mike Moreaty - Fix for bug 289790
+ * Oracle Corporation - Fix for bug 316839
*******************************************************************************/
package org.eclipse.core.internal.jobs;
@@ -1336,9 +1337,13 @@
JobManager.debug(job + " will yieldRule to " + unblocked); //$NON-NLS-1$
}
- if (likeThreadJob != null)
+ if (likeThreadJob != null) {
// only null-out threads out for non-ThreadJobs
job.setThread(null);
+ if (likeThreadJob.getRule() != null) {
+ getLockManager().removeLockThread(currentThread, likeThreadJob.getRule());
+ }
+ }
if ((job.getRule() != null) && !(job instanceof ThreadJob))
getLockManager().removeLockThread(currentThread, job.getRule());