| Summary: | loading model on UI Thread causes RuntimeException for reentrant call while viewer is busy | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [WebTools] WTP Java EE Tools | Reporter: | Carlin Rogers <carlin.rogers> | ||||
| Component: | jst.j2ee | Assignee: | Dimitar Giormov <dimitar.giormov> | ||||
| Status: | RESOLVED FIXED | QA Contact: | Chuck Bridgham <cbridgha> | ||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | ccc, kaloyan, raghunathan.srinivasan | ||||
| Version: | 3.2 | ||||||
| Target Milestone: | 4.0 | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Bug Depends on: | 328818 | ||||||
| Bug Blocks: | |||||||
| Attachments: |
|
||||||
I'm not sure this is WTP - most of that is not. Assigning to Kaloyan for initial investigation - his team has done the MergedModel work. Dimitar, could you take a look? Is it possible that the loadModel() method invokes operation in the UI thread that should not be executed there? You are right Carl, this has nothing to do with WTP. The call is made from the UI layer where the model load is triggered. Model load executes workspace runnable. From calling Run till the end of the stack there is no WTP code. The run method was never executed. But I am not sure where should I move this bug report. re-targeting for 3.3 this should be fixed with Bug: 328818 This should be fixed with 328818, since the loading is no longer in UI Thread. Reopen if still reproducible. |
Created attachment 182861 [details] RuntimeException stack trace Occasionally I see a RuntimeException for an "Ignored reentrant call while viewer is busy" condition. It is not always reproducible but typically I see it when I launch Eclipse and an editor is opening a descriptor file like web.xml (the previous state of Eclipse was shut down with the file open in the editor). Seems that while a tree viewer for the navigator is set up on the UI thread, there's a call to get the model for the descriptor from the content provider, Web25ContentProvider, and executed in a workspace runnable. This process ends up with the JobManager replacing the NullProgressMonitor with EventLoopProgressMonitor. Then the call to isCanceled() on that monitor runs an event loop where additional navigator view code is executed on the UI thread causing the reentrant call into the ColumnViewer.