Community
Participate
Working Groups
Currently API tools creates and manages its own OSGi state for our workspace baseline. This effort is basically cloning the work PDE already does. We should investigate using the PDE state for our workspace baseline to avoid all the state management work altogether. We can also reap benefits from: 1. not having to include the entire target platform in the workspace baseline 2. we can better compute the complete dependency trees for bundles in the workspace baseline
Created attachment 153357 [details] fix Patch completely removes API tools handling any state in our workspace baseline. Also has delayed initialization for API component handles.
Applied patch to HEAD, all tests + smoke tests pass. Please verify Olivier and Darin
Some average timings (over 4 performance test runs on my Linux box) ****** Before Patch ************ Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.FullSourceBuildTests#testFullBuild()' Elapsed Process: 7.97s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.FullSourceBuildTests#testCleanFullBuild()' Elapsed Process: 11.86s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.ApiDescriptionTests#testCleanVisit()' Elapsed Process: 8.33s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.IncrementalBuildTests#testIncrementalBuildAll()' Elapsed Process: 972ms Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.EnumIncrementalBuildTests#testIncremantalEnum()' Elapsed Process: 880ms **** After patch ***** Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.FullSourceBuildTests#testFullBuild()' Elapsed Process: 8.21s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.FullSourceBuildTests#testCleanFullBuild()' Elapsed Process: 11.73s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.ApiDescriptionTests#testCleanVisit()' Elapsed Process: 8.29s Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.IncrementalBuildTests#testIncrementalBuildAll()' Elapsed Process: 340ms Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.EnumIncrementalBuildTests#testIncremantalEnum()' Elapsed Process: 280ms Scenario 'org.eclipse.pde.api.tools.builder.tests.performance.AnnotationIncrementalBuildTests#testIncrementalAnnot()' Elapsed Process: 262ms
Re-opening. For some yet unknown reason, this is corrupting PDE state when adding/removing a project in the workspace.
The problem is coming from our code to try and look up a bundle in the OSGi state. We collect the bundle symbolic name from the manifest directly and pass that in to State.getBundle(name, version), which fails if a the bundle symbolic name has any post-amble - for example com.ibm.icu; singletone:=true; We should be using ManifestElement.parseHeader(..) to get the symbolic name from the manifest and not collecting it directly by manifest.get(..).
Created attachment 153511 [details] proposed fix Proposed fix, which uses ManifestHeader.parseHeader(..) and cleans up a small component handle leak. Running tests and smoke tests...
Created attachment 153516 [details] update verifying test suite runs I found a problem with one of our tests, where were disposing a lone API component. The workspace baseline should be disposed during tearDown(), we should not be toasting a component by itself.
all tests and smoke tests pass, released to HEAD. Please verify Darin W and Olivier
(In reply to comment #8) > all tests and smoke tests pass, released to HEAD. Please verify Darin W and > Olivier Target platform smoke tests reveled we were still setting properties for a bundle into the PDE state on a callback for initializing the workspace baseline - good catch Darin. Fix has been applied to not do this for the workspace baseline.
Looks good to me.
Verified.