Summary: | Project is touched on restart | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Eclipse Project] JDT | Reporter: | Jerome Lanneluc <jerome_lanneluc> | ||||||
Component: | Core | Assignee: | Jerome Lanneluc <jerome_lanneluc> | ||||||
Status: | VERIFIED FIXED | QA Contact: | |||||||
Severity: | normal | ||||||||
Priority: | P3 | CC: | frederic_fusier | ||||||
Version: | 3.3 | Keywords: | performance | ||||||
Target Milestone: | 3.3 M6 | ||||||||
Hardware: | PC | ||||||||
OS: | Windows XP | ||||||||
See Also: | https://bugs.eclipse.org/bugs/show_bug.cgi?id=536990 | ||||||||
Whiteboard: | |||||||||
Attachments: |
|
Description
Jerome Lanneluc
2007-02-28 10:53:13 EST
Created attachment 59988 [details]
Proposed fix and regression test
The proposed fix consists in removing the test in containerPutIfInitializingWithSameEntries(...) that checks if the container is being initialized. Without this check, entries are compared and no further work is done if they are the same.
Proposed fix and regression test released for 3.3M6 in HEAD. IProject#touch(...) is still called in other scenario. To reproduce, shutdown a full source workbench with a Java editor opened, and the Package Explorer 'link with editor' option. Then add a breakpoint in IProject#touch(...) and start the workbench under the debugger. Observe: the breakpoint is hit on almost every restart. Created attachment 60141 [details]
Enhanced fix and modified test
The enhanced fix brings the following changes:
- the optimization in containerPutIfInitializingWithSameEntries(...) and variablePutIfInitializingWithSameValue(...) now uses first the previous container value, then the previous session value to compare with the current value
- for containerPutIfInitializingWithSameEntries(...), the optimization happens only if the container is being initialized (since some container returns the same entries for the old and new container)
- initializeAllContainers(...) keeps the 'initialization in progress' state of container that are being initialized before calling initializeAllContainers(...)
Enhanced fix and test released for 3.3M6 in HEAD. Could not reproduce problem in 3.2.x, so it looks like this problem was introduced in 3.3 only. Verified for 3.3 M6 using v_744. (Ran the test before and after patch application. The test passes with v_744 and fails with the code dated 20070227.) |