Community
Participate
Working Groups
It looks like one synch job can block others. See attached screenshot. If there is a safe way to prevent this might be wroth doing for 3.0.1, otherwise 3.0.2.
Created attachment 106270 [details] blocked jobs
Fyi, I never manually triggered a sync, just submitted a bunch of stuff. This the first time I've seen this happen.
Every submission to the repository will trigger a synchronization for that repository. That's why you are seeing multiple jobs. A strategy needs to be implemented that schedules at most two jobs at a time.
Or perhaps we could discard redundant jobs?
This will require additional design discussion. Bumping to next milestone.
*** Bug 253947 has been marked as a duplicate of this bug. ***
Maybe my new bug 290238 is also a duplicate?
Created attachment 149070 [details] avoid queuing of synchronizations
Created attachment 149071 [details] mylyn/context/zip
Shawn, can you sanity check these changes? The SynchronizationScheduler now keeps track of the ongoing background synchronizations and only toggles a flag if a synchronization for a repository or task is requested that is already in progress. Once the synchronization is complete it checks the flag and restarts if necessary to always ensure that the task list is up to date but it will never schedule multiple background synchronizations for the same subject in parallel. I have also removed a couple of extraneous refreshes of the task list which makes opening of tasks feel a bit faster.
These changes look good from what I can see. I like how you always create a new job and just cancel any old ones. This is a pretty clean approach compared to any other tracking.
Just to be clear: Do you really cancel the old synchronization and then start a new one? Steffen says "Once the synchronization is complete it checks the flag and restarts..." This does not sound like cancelling -- or is it implemented in other ways?
Currently the old job is completed and then restarted if necessary. It is not cancelled as not all connectors support that properly. We can consider that as an optimization for the future and possibly add a flag to the connector whether that is supported.