Community
Participate
Working Groups
WTP 3.2 introduced a new check in the single-root utility (JavaEESingleRootCallback to be specific) that would check for the existence of any classpath dependencies. If any were found it would return that the project's structure was not single-root. The reason this was added in 3.2 was most likely due to the fact that when single-root classpath dependencies with a deploy path other than "../" were not being returned by members. The problem with the added check is that it hurt an adopter's publishing performance since these projects were now marked as non single-root. Publishing to a single-root project is much faster for the adopter. The bigger issue is that this caused a regression since these same projects were considered single-root in earlier WTP versions. The solution is to remove the classpath dependencies check from the single-root utility and add the necessary delegate participants to the single-root participant. This would involve adding the already existing classpath participants and creating a new one to handle classpath dependencies with a deploy path other than "../".
Created attachment 177880 [details] patch
Created attachment 177881 [details] junit_patch
approved
* Explain why you believe this is a stop-ship defect. Or, if it is a "hotbug" (requested by an adopter) please document it as such. Performance is hurt on some servers when a project is not considered to be single-root. Projects that have classpath dependencies did not break single-root in the past and because this check was added in 8.0 a regression in performance will occur for some servers. * Is there a work-around? If so, why do you believe the work-around is insufficient? No workaround exists for users that tag classpath entries with the classpath dependency flag. * How has the fix been tested? Is there a test case attached to the bugzilla record? Has a JUnit Test been added? JUnit testcase is attached. I have added a new testcase. * Give a brief technical overview. Who has reviewed this fix? The solution was to remove the classpath dependencies check from the single-root utility and add the necessary participants to the single-root code path for finding the classpath dependencies. Chuck has reviewed this fix. * What is the risk associated with this fix? minimal - regression tests have been run and a new testcase added.
Created attachment 177894 [details] junit_patch_updated
Created attachment 177896 [details] junit_patch_v3
agreed this performance regression is urgent to fix.
Committed to HEAD for WTP 3.2.2 and WTP 3.3
Note that this also reinstated the ClasspathDependencyWebTests.suite() tests that were disabled in org/eclipse/jst/j2ee/classpath/tests/AllTests.java for bug 234409