Don't allow job to schedule if already scheduled
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/jobs/JobManager.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/jobs/JobManager.java
index 5a4d6af..f8c62f6 100644
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/jobs/JobManager.java
+++ b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/jobs/JobManager.java
@@ -295,6 +295,9 @@
 	protected void schedule(InternalJob job, long delay) {
 		Assert.isNotNull(job, "Job is null"); //$NON-NLS-1$
 		synchronized (lock) {
+			//can't schedule a job that is already waiting, sleeping, or running
+			if (job.getState() != Job.NONE)
+				return;
 			if (delay > 0) {
 				job.setState(Job.SLEEPING);
 				job.setStartTime(System.currentTimeMillis() + delay);