problem marker updates [message #793771] |
Wed, 08 February 2012 14:46 |
Tibor Kovacs Messages: 3 Registered: February 2012 |
Junior Member |
|
|
There's a findObject function in the ScopingResourceSetImpl which kicks out a job updating the problem markers, that means every time a proxy gets resolved a new such job is getting scheduled. This can cause huge latency when we try to move packages among different resources (files) in the same project.
If we change the async parameter to false, there's no job created and behaves much better, but still I think this wouldn't be an ideal solution:
// Handle problems that may have been encountered during proxy resolution
ResourceProblemMarkerService.INSTANCE.updateProblemMarkers(resources, false, null);
Any recommendations or ideas?
Thanks
[Updated on: Wed, 08 February 2012 14:48] Report message to a moderator
|
|
|
Re: problem marker updates [message #795538 is a reply to message #793771] |
Fri, 10 February 2012 15:38 |
|
Thank you for sharing your questions and ideas! It is feedback like yours that greatly helps us to improve Sphinx (and Artop) and making it what it is.
The issue you are raising is valid. It is not ideal, and was not intended, to schedule as many jobs for updating the problem markers. However, is is, as you have imagined yourself, also not ideal to do that with a synchronous call to the underlying API. The reason is that error marker creation as done by Eclipse is a heavy load operation, and in case you have many error markers (e.g., when all proxies in a resource are proxies and all proxy resolutions are failing) the performance would suffer significantly.
The solution that I see, is to improve the implementation of the ResourceProblemMarkerService and make sure that only the first call to that API results in scheduling a job for the given resource but all subsequent requests for doing so on the same resource get ignored in case the first job has not yet been executed.
This behavior could be realized quite conveniently by leveraging the Job#shouldSchedule()/shouldRun() API.
Would that help?
|
|
|
|
Powered by
FUDForum. Page generated in 0.03124 seconds