| Summary: | [target] LoadTargetDefinitionJob deadlocks when loading target definition | ||
|---|---|---|---|
| Product: | [Eclipse Project] PDE | Reporter: | Idrissa Dieng <idydieng> |
| Component: | UI | Assignee: | Curtis Windatt <curtis.windatt.public> |
| Status: | VERIFIED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | curtis.windatt.public, remy.suen, stephaneberle9 |
| Version: | 3.7.1 | ||
| Target Milestone: | 3.8 M6 | ||
| Hardware: | PC | ||
| OS: | Windows 7 | ||
| Whiteboard: | |||
PDE bugs go to PDE. Thank you for putting the bug in PDE. I had not done becauce the bug does not affect UI aspects and I have not found a component for PDE core bugs. (In reply to comment #1) > PDE bugs go to PDE. What is the reset job waiting on that is causing your deadlock? It is a normal job (no workspace/ui dependencies) with no additional rules. A better solution would to move the code in the reset job to the load target job. There is no benefit to having them as separate jobs. (In reply to comment #3) > What is the reset job waiting on that is causing your deadlock? It is a normal > job (no workspace/ui dependencies) with no additional rules. > The root cause is the TargetPlatformResetJob has IWorkspaceRoot(i.e., ResourcesPlugin.getWorkspace().getRoot()) as scheduling rule. > A better solution would to move the code in the reset job to the load target > job. There is no benefit to having them as separate jobs. yes I think also it's better to merge the code of these 2 classes. Fixed in master: http://git.eclipse.org/c/pde/eclipse.pde.ui.git/commit/?id=7e200f86008e4256c55d4dd3f99ca9bd0ef988f0 Idrissa, please verify that this solves your deadlock issue. Ok thansk!! I will test and inform you. (In reply to comment #5) > Fixed in master: > http://git.eclipse.org/c/pde/eclipse.pde.ui.git/commit/?id=7e200f86008e4256c55d4dd3f99ca9bd0ef988f0 > > Idrissa, please verify that this solves your deadlock issue. Hello Curtis, yes this fixe the deadlock in our side. It's very cool. Verified by the reporter. |
Dear all, Using the org.eclipse.pde.internal.core.target.provisional.LoadTargetDefinitionJob class to load a target definition, we often obtain a deadlock that is caused by the use of a join inside the LoadTargetDefinitionJob#handleReload(String, List, PDEPreferencesManager, IProgressMonitor) method. This method instantiates the job TargetPlatformResetJob as follows: Job job = new TargetPlatformResetJob(state); job.schedule(); try { job.join(); } catch (InterruptedException e) { } I propose to remove the "job.join();" and I take this occasion to suggest to add the getTargetDefinition() method that returns the target definition being loaded. Best regards.