Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipse-dev] Removal of IJobManager#suspend/resume


Last week I added two new API methods to IJobManager: #suspend and #resume. If you have started using these, read on. If not, please disregard.

These methods were added to attempt to better manage long transaction-like operations such as Eclipse startup and Java refactoring. The idea was that turning off all background activity for that duration would improve performance (for startup), and reduce contention (for refactoring). The problem is, these methods were too powerful. Turning off all jobs caused situations where the UI no longer painted (because the painting was done by jobs), and was deadlock prone if used incorrectly.  I have added two replacement methods that require a scheduling rule: suspend(ISchedulingRule, IProgressMonitor) and resume(ISchedulingRule). This allows a client to turn off all background jobs that conflict with a given scheduling rule.  This still helps improve our interesting use cases (startup and refactoring), but in a more controlled manner.  These new methods are in tomorrow's integration build. The old methods have been deprecated.

Now here's the catch. I would like to *delete* the old methods later this week. They are dangerous, and the desired result can generally be achieved with the replacement methods. Since it is very late in the cycle, I need to know if anyone has started using these methods (outside the SDK) and is relying on them. We can negotiate leaving them in if needed. Please contact the platform-core-dev mailing if you want to discuss, to avoid traffic on this list. Here are some bug refs for those interested in more info:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=59257
https://bugs.eclipse.org/bugs/show_bug.cgi?id=58678

Back to the top