| Summary: | IllegalStateException while saving preferences | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Equinox | Reporter: | Olivier Thomann <Olivier_Thomann> | ||||
| Component: | p2 | Assignee: | John Arthorne <john.arthorne> | ||||
| Status: | RESOLVED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | matthew, simon_kaegi | ||||
| Version: | 3.4 | ||||||
| Target Milestone: | 3.5 M6 | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Olivier Thomann
Olivier, by any chance to do have the entire stack trace? It seems to be cut off... This is all I got. Sorry. If I can get it again, I'll try to provide steps. Created attachment 127094 [details]
Fix
This fix removes the recursion at the engine level by putting the preference saving in a job. Thus the engine session that persists preferences will always be in its own thread and there will be no reentrant call to the engine.
I didn't mention, the cause of the failure here is that we are calling the engine recursively. This means the inner engine call has a stale profile objects because the profile is currently being modified by the outer engine call. This has bad implications for the profile object's lifecycle so recursion is best avoided (changes made in inner engine call could conflict with profile changes in outer engine call, and reconciling the changes would be difficult). Fix released in HEAD. |