Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 265844

Summary: Baseline is disposed
Product: [Eclipse Project] PDE Reporter: Benjamin Muskalla <b.muskalla>
Component: API ToolsAssignee: PDE API Tools Inbox <pde-apitools-inbox>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: P3 CC: darin.eclipse, Michael_Rennie, Olivier_Thomann
Version: 3.5   
Target Milestone: 3.6 M7   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 285123    

Description Benjamin Muskalla CLA 2009-02-23 11:44:24 EST
N20090203-2000

Not sure how this happend - just found about 20 of these exceptions in my log.

org.eclipse.core.runtime.CoreException: baseline is disposed
at org.eclipse.pde.api.tools.internal.model.BundleApiComponent.getBundleDescription(BundleApiComponent.java:832)
at org.eclipse.pde.api.tools.internal.model.BundleApiComponent.createApiDescription(BundleApiComponent.java:228)
at org.eclipse.pde.api.tools.internal.model.AbstractApiComponent.getApiDescription(AbstractApiComponent.java:85)
at org.eclipse.pde.api.tools.internal.builder.MethodLeakDetector.matchesSourceApiRestrictions(MethodLeakDetector.java:173)
at org.eclipse.pde.api.tools.internal.builder.MethodLeakDetector.considerReference(MethodLeakDetector.java:156)
at org.eclipse.pde.api.tools.internal.builder.ReferenceAnalyzer$Visitor.visit(ReferenceAnalyzer.java:120)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.doVisit(FolderApiTypeContainer.java:103)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.doVisit(FolderApiTypeContainer.java:122)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.doVisit(FolderApiTypeContainer.java:122)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.doVisit(FolderApiTypeContainer.java:122)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.doVisit(FolderApiTypeContainer.java:122)
at org.eclipse.pde.api.tools.internal.model.FolderApiTypeContainer.accept(FolderApiTypeContainer.java:58)
at org.eclipse.pde.api.tools.internal.model.AbstractApiTypeContainer.accept(AbstractApiTypeContainer.java:56)
at org.eclipse.pde.api.tools.internal.model.AbstractApiComponent.accept(AbstractApiComponent.java:56)
at org.eclipse.pde.api.tools.internal.builder.ReferenceAnalyzer.extractReferences(ReferenceAnalyzer.java:267)
at org.eclipse.pde.api.tools.internal.builder.ReferenceAnalyzer.analyze(ReferenceAnalyzer.java:174)
at org.eclipse.pde.api.tools.internal.builder.ReferenceAnalyzer.analyze(ReferenceAnalyzer.java:411)
at org.eclipse.pde.api.tools.internal.builder.BaseApiAnalyzer.checkApiUsage(BaseApiAnalyzer.java:751)
at org.eclipse.pde.api.tools.internal.builder.BaseApiAnalyzer.analyzeComponent(BaseApiAnalyzer.java:248)
at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.buildAll(ApiAnalysisBuilder.java:404)
at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.build(ApiAnalysisBuilder.java:326)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Michael Rennie CLA 2009-07-17 12:31:38 EDT
Validating / updating our tests for bug 275020 and bug 282537 I had a chance to debug this exception (partly). I found that the baseline manager was responding to a resource changed event and tossing out the workspace baseline in the middle of a build (in the example I debugged).

I think to properly fix this we need to do a few things:

1. we need to move away from the "toss it all because there was a change" to something more selective, i.e. only dispose the API component that actually has changes.

2. we need to make our API containers recoverable - meaning they can be re-opened / re-initialized once close / disposed. Currently if a container is closed / disposed we just die when we try to access it (the cause of this bug).
Comment 2 Michael Rennie CLA 2010-04-13 10:55:14 EDT
(In reply to comment #1)

Since the changes to amalgamate all of our delta processing and the updates to builder to not dispose baselines as well as the move to use PDE state instead of handling it all ourselves, I have not seen this exception. It also no longer ever appears in the testsuite either.

Marking as worksforme