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());