@iloveeclipse
the problem is that join() uses non-synchronized jobListeners :
JobManager.endJob(InternalJob, IStatus, boolean) notifies
- "done" and then
- "scheduled".
Between the two calls it looks to the listener like there is no more job scheduled.
A way to fix this might be to extend the "synchronized (lock)" block in endJob() around "done" and "schedule".
However somehow it sounds also dangerous/unwanted to synchronize around 3rd party calls.
JobManager.schedule() and JobManager.nextJob() also synchronize on lock so that those would wait till listeners returned.