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