| Summary: | YieldRule changes to ModelManagerImpl affects performance | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [WebTools] WTP Source Editing | Reporter: | Cameron Bateman <cameron.bateman> | ||||
| Component: | wst.sse | Assignee: | wst.sse <wst.sse-inbox> | ||||
| Status: | CLOSED INVALID | QA Contact: | Nitin Dahyabhai <thatnitind> | ||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | carlin.rogers, raghunathan.srinivasan | ||||
| Version: | 3.2 | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Cameron Bateman
Created attachment 172459 [details]
Rollbacks changes in deadlock avoidance to 3.1.1 stream.
I am going to close this bug. It appears the underlying issue was Bug 320329. In some adopter code have a call to the ModelManagerImpl.getModelForRead() passing in an IStructuredDocument. This ModelManagerImpl routine iterates across all existing models to compare document ids trying to find the associated model to return. When iterating across the models, if a model is not initialized, we wait for the load and call yieldRule. The issue in 320329 impacted the wait. Thread [Worker-9] (Suspended) ThreadJob.waitForRun(ThreadJob, IProgressMonitor, InternalJob, Thread) ThreadJob.joinRun(ThreadJob, IProgressMonitor) JobManager.yieldRule(InternalJob, IProgressMonitor) QueueManagerJob$CommandSetJob(InternalJob).yieldRule(IProgressMonitor) QueueManagerJob$CommandSetJob(Job).yieldRule(IProgressMonitor) ModelManagerImpl$SharedObject.waitForLoadAttempt() ModelManagerImpl.getExistingModel(Object) ModelManagerImpl.getExistingModelForRead(IDocument) ModelManagerImpl._getModelFor(IStructuredDocument, ModelManagerImpl$ReadEditType) ModelManagerImpl.getModelForRead(IStructuredDocument) ... Closing this as the real root cause is 320329. Thanks. |