Closed laeubi closed 2 months ago
Sadly BundleVersionTests fails very frequently on verification builds. Could not reproduce locally on WIN. Also all calls of dispose() / getBundleDescription() during that Tests happen in the same Thread so that it probably is not an concurrency issue.
fails on I Build too: https://download.eclipse.org/eclipse/downloads/drops4/R-4.28-202306050440/testresults/html/org.eclipse.pde.api.tools.tests_ep428I-unit-cen64-gtk3-java17_linux.gtk.x86_64_17.html
org.eclipse.core.runtime.CoreException: Component 'exportedBundle Plug-in' in the baseline 'workspace' is disposed
at org.eclipse.pde.api.tools.internal.model.BundleComponent.baselineDisposed(BundleComponent.java:1259)
at org.eclipse.pde.api.tools.internal.model.BundleComponent.getBundleDescription(BundleComponent.java:980)
at org.eclipse.pde.api.tools.internal.model.BundleComponent.createApiDescription(BundleComponent.java:388)
at org.eclipse.pde.api.tools.internal.model.Component.getApiDescription(Component.java:106)
at org.eclipse.pde.api.tools.builder.tests.ApiBuilderTest.exportApiComponent(ApiBuilderTest.java:364)
at org.eclipse.pde.api.tools.builder.tests.compatibility.BundleVersionTests.setupTest(BundleVersionTests.java:162)
at org.eclipse.pde.api.tools.builder.tests.compatibility.BundleVersionTests.test002(BundleVersionTests.java:205)
I think the error reporting is a bit odd here because it claims the baseline is disposed when fBundleDescription
is null
but this can also happen:
org.eclipse.pde.api.tools.internal.model.BundleComponent.init()
fails (so the component was not successfully init)org.eclipse.pde.api.tools.internal.model.BundleComponent.dispose()
is called (so the component itself was disposed)I have now enhanced error reporting here:
it shows that init is successful but it seems the component is unluckily dispose at this place already:
Caused by: java.lang.RuntimeException: Component was disposed here
at org.eclipse.pde.api.tools.internal.model.BundleComponent.dispose(BundleComponent.java:191)
at org.eclipse.pde.api.tools.internal.model.ProjectComponent.dispose(ProjectComponent.java:180)
at org.eclipse.pde.api.tools.internal.model.ApiBaseline.doDispose(ApiBaseline.java:847)
at org.eclipse.pde.api.tools.internal.model.WorkspaceBaseline.dispose(WorkspaceBaseline.java:56)
at org.eclipse.pde.api.tools.internal.ApiBaselineManager.disposeWorkspaceBaseline(ApiBaselineManager.java:658)
at org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.processJavaElementDeltas(WorkspaceDeltaProcessor.java:82)
at org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.elementChanged(WorkspaceDeltaProcessor.java:51)
at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1757)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1745)
at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1578)
at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1554)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyAndFire(DeltaProcessor.java:2275)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2165)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:501)
at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:321)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:311)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:174)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:458)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1586)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:50)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
The synchronization is at least arguable here and seem to trying to perform premature optimization, beside that of course a component can be disposed anywhere anytime even after that so I'm a bit unsure how to handel this correctly if one has already fetched the component and it is then gone afterwards...
This should hopefully be fixed by
My understanding of the issue is the following:
I now did the following:
still happens:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.tycho:tycho-apitools-plugin:4.0.8:verify (verify) on project org.eclipse.pde.ui: Execute ApiApplication failed
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: org.apache.maven.plugin.MojoExecutionException: Execute ApiApplication failed
at org.eclipse.tycho.apitools.ApiAnalysisMojo.performAnalysis (ApiAnalysisMojo.java:310)
at org.eclipse.tycho.apitools.ApiAnalysisMojo.execute (ApiAnalysisMojo.java:193)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: java.lang.RuntimeException: Component was disposed here
at org.eclipse.pde.api.tools.internal.model.BundleComponent.dispose (BundleComponent.java:192)
at org.eclipse.pde.api.tools.internal.model.ProjectComponent.dispose (ProjectComponent.java:178)
at org.eclipse.pde.api.tools.internal.model.ApiBaseline.doDispose (ApiBaseline.java:837)
at org.eclipse.pde.api.tools.internal.model.WorkspaceBaseline.dispose (WorkspaceBaseline.java:56)
at org.eclipse.pde.api.tools.internal.ApiBaselineManager.lambda$2 (ApiBaselineManager.java:639)
at org.eclipse.pde.api.tools.internal.ApiBaselineManager.disposeWorkspaceBaseline (ApiBaselineManager.java:662)
at org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.processJavaElementDeltas (WorkspaceDeltaProcessor.java:80)
at org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.elementChanged (WorkspaceDeltaProcessor.java:51)
at org.eclipse.jdt.internal.core.DeltaProcessor$3.run (DeltaProcessor.java:1751)
at org.eclipse.core.runtime.SafeRunner.run (SafeRunner.java:47)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners (DeltaProcessor.java:1739)
at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta (DeltaProcessor.java:1572)
at org.eclipse.jdt.internal.core.DeltaProcessor.fire (DeltaProcessor.java:1548)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyAndFire (DeltaProcessor.java:2259)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged (DeltaProcessor.java:2151)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged (DeltaProcessingState.java:501)
at org.eclipse.core.internal.events.NotificationManager$1.run (NotificationManager.java:321)
at org.eclipse.core.runtime.SafeRunner.run (SafeRunner.java:47)
at org.eclipse.core.internal.events.NotificationManager.notify (NotificationManager.java:311)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges (NotificationManager.java:174)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange (Workspace.java:458)
at org.eclipse.core.internal.resources.Workspace.endOperation (Workspace.java:1586)
at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:2465)
at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:2476)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation (JavaModelOperation.java:810)
at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:6217)
at org.eclipse.pde.internal.core.PluginModelManager$UpdateClasspathsJob.run (PluginModelManager.java:104)
at org.eclipse.core.internal.jobs.Worker.run (Worker.java:63)
https://github.com/eclipse-pde/eclipse.pde/actions/runs/9384000184/job/25838861125?pr=1290
The disposed error still happens but not in BundleVersionTests. The remaining error is tracked in https://github.com/eclipse-pde/eclipse.pde/issues/1310
Sometimes the test fails with