Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

random failing RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256 #136

Closed
jukzi opened this issue Aug 31, 2022 · 2 comments · Fixed by #413
Closed

random failing RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256 #136

jukzi opened this issue Aug 31, 2022 · 2 comments · Fixed by #413
Assignees

Comments

@jukzi
Copy link
Contributor

jukzi commented Aug 31, 2022

https://github.com/eclipse-platform/eclipse.platform/pull/135/checks?check_run_id=8113529011

junit.framework.AssertionFailedError: 
Error observed: junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at org.eclipse.core.tests.harness.CoreTest.fail(CoreTest.java:74)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256(RelaxedSchedRuleBuilderTest.java:353)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at junit.framework.TestCase.runTest(TestCase.java:177)
	at junit.framework.TestCase.runBare(TestCase.java:142)
	at junit.framework.TestResult$1.protect(TestResult.java:122)
	at junit.framework.TestResult.runProtected(TestResult.java:142)
	at junit.framework.TestResult.run(TestResult.java:125)
	at junit.framework.TestCase.run(TestCase.java:130)
	at junit.framework.TestSuite.runTest(TestSuite.java:241)
	at junit.framework.TestSuite.run(TestSuite.java:236)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:364)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:272)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:237)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:158)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:167)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:161)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:84)
	at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:142)
	at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.start(HeadlessTestApplication.java:28)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
Caused by: junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at junit.framework.Assert.fail(Assert.java:57)
	at junit.framework.Assert.failNotEquals(Assert.java:329)
	at junit.framework.Assert.assertEquals(Assert.java:78)
	at junit.framework.Assert.assertEquals(Assert.java:234)
	at junit.framework.TestCase.assertEquals(TestCase.java:377)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$6.build(RelaxedSchedRuleBuilderTest.java:299)
	at org.eclipse.core.tests.internal.builders.TestBuilder.build(TestBuilder.java:116)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1024)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:254)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:400)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:403)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:514)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:462)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:544)
	at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:524)
	at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:313)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
@jukzi jukzi closed this as completed Nov 2, 2022
@jukzi jukzi reopened this Nov 2, 2022
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 18, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the workspace
changing job has acquired a lock instead of waiting for a specific
amount of time. This ensure that the build operation is always scheduled
after the workspace changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 18, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 18, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
@laeubi
Copy link
Contributor

laeubi commented Apr 19, 2023

In a recent build one can see below results, the test contains the follwoing

try {
	// Give the resource modification time be queued
	Thread.sleep(20);
} catch (InterruptedException e) {
	fail();
}

so maybe the 20ms are not enough, then the trick would be so somehow know when the actual modification is queued...

@HeikoKlare I see you are having some comits referencing this issue, maybe you want to assign the issue to you so it is clear you are working on this?

Error observed: junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
junit.framework.AssertionFailedError: 
Error observed: junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at org.eclipse.core.tests.harness.CoreTest.fail(CoreTest.java:74)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256(RelaxedSchedRuleBuilderTest.java:366)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at junit.framework.TestCase.runTest(TestCase.java:177)
	at junit.framework.TestCase.runBare(TestCase.java:142)
	at junit.framework.TestResult$1.protect(TestResult.java:122)
	at junit.framework.TestResult.runProtected(TestResult.java:142)
	at junit.framework.TestResult.run(TestResult.java:125)
	at junit.framework.TestCase.run(TestCase.java:130)
	at junit.framework.TestSuite.runTest(TestSuite.java:241)
	at junit.framework.TestSuite.run(TestSuite.java:236)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:137)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:148)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:88)
	at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:142)
	at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.start(HeadlessTestApplication.java:29)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
Caused by: junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at junit.framework.Assert.fail(Assert.java:57)
	at junit.framework.Assert.failNotEquals(Assert.java:329)
	at junit.framework.Assert.assertEquals(Assert.java:78)
	at junit.framework.Assert.assertEquals(Assert.java:234)
	at junit.framework.TestCase.assertEquals(TestCase.java:377)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$6.build(RelaxedSchedRuleBuilderTest.java:312)
	at org.eclipse.core.tests.internal.builders.TestBuilder.build(TestBuilder.java:116)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1020)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:247)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:506)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:454)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:536)
	at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:524)
	at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:326)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

!ENTRY org.eclipse.core.tests.resources 1 0 2023-04-18 16:12:06.640
!MESSAGE [testBuilderDeltaUsingRelaxedRuleBug343256] setUp
Possible frozen test case
"main": RUNNABLE
    java.base@17.0.6/java.lang.Thread.yield(Native Method)
    org.eclipse.core.tests.harness.TestBarrier2.doWaitForStatus(TestBarrier2.java:88)
    org.eclipse.core.tests.harness.TestBarrier2.waitForStatus(TestBarrier2.java:156)
    org.eclipse.core.tests.harness.TestBarrier2.waitForStatus(TestBarrier2.java:194)
    org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256(RelaxedSchedRuleBuilderTest.java:348)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    java.base@17.0.6/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
    junit.framework.TestCase.runTest(TestCase.java:177)
    junit.framework.TestCase.runBare(TestCase.java:142)
    junit.framework.TestResult$1.protect(TestResult.java:122)
    junit.framework.TestResult.runProtected(TestResult.java:142)
    junit.framework.TestResult.run(TestResult.java:125)
    junit.framework.TestCase.run(TestCase.java:130)
    junit.framework.TestSuite.runTest(TestSuite.java:241)
    junit.framework.TestSuite.run(TestSuite.java:236)
    org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
    org.junit.runners.Suite.runChild(Suite.java:128)
    org.junit.runners.Suite.runChild(Suite.java:27)
    org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    org.junit.runners.Suite.runChild(Suite.java:128)
    org.junit.runners.Suite.runChild(Suite.java:27)
    org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
    org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
    org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
    org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    java.base@17.0.6/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
    org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:137)
    org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:148)
    org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:88)
    org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:142)
    org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.start(HeadlessTestApplication.java:29)
    org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
    org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
    org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    java.base@17.0.6/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    java.base@17.0.6/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
    app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
    app//org.eclipse.equinox.launcher.Main.run(Main.java:1467)
    app//org.eclipse.equinox.launcher.Main.main(Main.java:1440)

"Reference Handler": RUNNABLE
    java.base@17.0.6/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
    java.base@17.0.6/java.lang.ref.Reference.processPendingReferences(Reference.java:253)
    java.base@17.0.6/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:215)

"Finalizer": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
    java.base@17.0.6/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
    java.base@17.0.6/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:172)

"Signal Dispatcher": RUNNABLE

"Common-Cleaner": TIMED_WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
    java.base@17.0.6/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140)
    java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
    java.base@17.0.6/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:162)

"Notification Thread": RUNNABLE

"Active Thread: Equinox Container: 31987a86-a5b2-4fb2-a7e2-3a16ce38ec91": TIMED_WAITING
    java.base@17.0.6/jdk.internal.misc.Unsafe.park(Native Method)
    java.base@17.0.6/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
    java.base@17.0.6/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
    java.base@17.0.6/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
    java.base@17.0.6/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    java.base@17.0.6/java.lang.Thread.run(Thread.java:833)

"Framework Event Dispatcher: Equinox Container: 31987a86-a5b2-4fb2-a7e2-3a16ce38ec91": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.Object.wait(Object.java:338)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)

"Start Level: Equinox Container: 31987a86-a5b2-4fb2-a7e2-3a16ce38ec91": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.Object.wait(Object.java:338)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)

"Bundle File Closer": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.Object.wait(Object.java:338)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)

"Refresh Thread: Equinox Container: 31987a86-a5b2-4fb2-a7e2-3a16ce38ec91": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.Object.wait(Object.java:338)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)

"SCR Component Actor": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.Object.wait(Object.java:338)
    org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:83)
    java.base@17.0.6/java.lang.Thread.run(Thread.java:833)

"EMF Reference Cleaner": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    java.base@17.0.6/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
    java.base@17.0.6/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
    org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:70)

"Worker-JM": WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:61)

"Worker-0: FreezeMonitor": RUNNABLE
    java.management@17.0.6/sun.management.ThreadImpl.getThreadInfo1(Native Method)
    java.management@17.0.6/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:197)
    org.eclipse.core.tests.resources.FreezeMonitor$1.run(FreezeMonitor.java:48)
    org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"Worker-1: IProject.build(1)": RUNNABLE
    java.base@17.0.6/java.lang.Thread.yield(Native Method)
    org.eclipse.core.tests.harness.TestBarrier2.doWaitForStatus(TestBarrier2.java:88)
    org.eclipse.core.tests.harness.TestBarrier2.waitForStatus(TestBarrier2.java:156)
    org.eclipse.core.tests.harness.TestBarrier2.waitForStatus(TestBarrier2.java:194)
    org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$6.getRule(RelaxedSchedRuleBuilderTest.java:295)
    org.eclipse.core.tests.internal.builders.TestBuilder.getRule(TestBuilder.java:129)
    org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:222)
    org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
    org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
    org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
    org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:506)
    org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:454)
    org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:536)
    org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:524)
    org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
    org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:326)
    org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"Worker-2: IProject.build(2)": TIMED_WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:200)
    org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:242)
    org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Worker-3: Sending build events with disabled autobuild": TIMED_WAITING
    java.base@17.0.6/java.lang.Object.wait(Native Method)
    org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:45)
    org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:174)
    org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:110)
    org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:87)
    org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:125)
    org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2332)
    org.eclipse.core.internal.events.AutoBuildJob$AutoBuildOffJob.run(AutoBuildJob.java:362)
    org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"process reaper": TIMED_WAITING
    java.base@17.0.6/jdk.internal.misc.Unsafe.park(Native Method)
    java.base@17.0.6/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
    java.base@17.0.6/java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:401)
    java.base@17.0.6/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:903)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
    java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    java.base@17.0.6/java.lang.Thread.run(Thread.java:833)



!ENTRY org.eclipse.core.resources 4 2 2023-04-18 16:12:06.971
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
!STACK 0
junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at junit.framework.Assert.fail(Assert.java:57)
	at junit.framework.Assert.failNotEquals(Assert.java:329)
	at junit.framework.Assert.assertEquals(Assert.java:78)
	at junit.framework.Assert.assertEquals(Assert.java:234)
	at junit.framework.TestCase.assertEquals(TestCase.java:377)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$6.build(RelaxedSchedRuleBuilderTest.java:312)
	at org.eclipse.core.tests.internal.builders.TestBuilder.build(TestBuilder.java:116)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1020)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:247)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:506)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:454)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:536)
	at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:524)
	at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:326)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

!ENTRY org.eclipse.core.jobs 4 2 2023-04-18 16:12:06.972
!MESSAGE An internal error occurred during: "IProject.build(1)".
!STACK 0
java.lang.AssertionError: build failed
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:335)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.eclipse.core.internal.resources.ResourceException: Errors occurred during the build.
	at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:541)
	at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:326)
	... 1 more

!ENTRY org.eclipse.core.tests.resources 1 0 2023-04-18 16:12:06.974
!MESSAGE [testBuilderDeltaUsingRelaxedRuleBug343256] tearDown
junit.framework.AssertionFailedError: 1.2: 
/testBuildDeltaUsingRelaxedRuleBug343256[~]: {} expected:<1> but was:<0>
	at junit.framework.Assert.fail(Assert.java:57)
	at junit.framework.Assert.failNotEquals(Assert.java:329)
	at junit.framework.Assert.assertEquals(Assert.java:78)
	at junit.framework.Assert.assertEquals(Assert.java:234)
	at junit.framework.TestCase.assertEquals(TestCase.java:377)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$6.build(RelaxedSchedRuleBuilderTest.java:312)
	at org.eclipse.core.tests.internal.builders.TestBuilder.build(TestBuilder.java:116)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1020)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:247)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:506)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:454)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:536)
	at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:524)
	at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:420)
	at org.eclipse.core.tests.internal.builders.RelaxedSchedRuleBuilderTest$7.run(RelaxedSchedRuleBuilderTest.java:326)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

@HeikoKlare
Copy link
Contributor

Yes, #413 is a draft for a fix containing the mentioned commits.
However, I did not find reliable way for ensuring a proper ordering of "getRule -> perform workspace changes -> build" yet. Increasing sleep time would reduce the chance of random failure, but as you mentioned, I would like to properly wait for the change being enqueued. More precisely: We do not have to wait for the change being enqueued but the job performing the modification being scheduled before starting the build operation.

I will assign the issue to myself, hoping that I find a proper solution.

@HeikoKlare HeikoKlare self-assigned this Apr 19, 2023
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 20, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 21, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 21, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 21, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 21, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
vogella pushed a commit to HeikoKlare/eclipse.platform that referenced this issue Apr 27, 2023
…rm#136

The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare added a commit that referenced this issue Apr 28, 2023
The test case
RelaxedSchedRuleBuilderTest.testBuilderDeltaUsingRelaxedRuleBug343256
performs a workspace change between calling getRule and build when
performing a build operation to ensure that build properly considers
changes performed in between. To ensure that the job performing a
workspace change is scheduled in between executing getRule and build,
getRule ends with a sleep to ensure that the workspace-changing job
reaches a point where it acquires a lock in between, so it is scheduled
before the build operation. Whenever the sleep is not sufficiently long,
the test fails.
This change makes the getRule operation finish when the
workspace-changing job has acquired a lock instead of waiting for a
specific amount of time. This ensure that the build operation is always
scheduled after the workspace-changing job.
HeikoKlare pushed a commit to HeikoKlare/eclipse.platform that referenced this issue Jul 3, 2023
Adjust LaunchConfigurationDelegate.isLaunchProblem(IMarker) to ignore
exceptions caused by deleted markers.

Fixes: eclipse-platform#136
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
HeikoKlare pushed a commit to HeikoKlare/eclipse.platform that referenced this issue Jul 3, 2023
Adjusted the exception type caught in
LaunchConfigurationDelegate.isLaunchProblem(IMarker), to match the
thrown ResourceException.

Fixes: eclipse-platform#136
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants