apache / apache/pekko-projection

ProjectionBehaviorSpec: must work with ProjectionManagement extension

Open
#106 1 comment 0 reactions 0 assignees View on GitHub
flaky test
Dominant language
Scala
Stars
27
Forks
16
Avg merge
1d 4h
Merged PRs (30d)
15

Description

This test appears to be flaky:

```
<-- [org.apache.pekko.projection.ProjectionBehaviorSpec: A ProjectionBehavior must work with ProjectionManagement extension] End of log messages of test that [Failed(java.lang.AssertionError: Received unexpected message StopObserved)]
[info] ProjectionBehaviorSpec:
[info] A ProjectionBehavior
[info] - must start immediately on demand (734 milliseconds)
[info] - must stop after receiving stop message (103 milliseconds)
[info] - must stop after stopping actor without stop message (28 milliseconds)
[info] - must also stop when stopping underlying stream results in failure (7 milliseconds)
[info] - must provide access to current offset (38 milliseconds)
[info] - must support update of current offset (59 milliseconds)
[info] - must handle offset operations sequentially (309 milliseconds)
[info] - must support pause/resume (11 milliseconds)
[info] - must handle pause/resume operations sequentially (9 milliseconds)
[info] - must work with ProjectionManagement extension *** FAILED *** (1 second, 456 milliseconds)
[info] java.lang.AssertionError: Received unexpected message StopObserved
[info] at org.apache.pekko.actor.testkit.typed.internal.TestProbeImpl.assertFail(TestProbeImpl.scala:410)
[info] at org.apache.pekko.actor.testkit.typed.internal.TestProbeImpl.expectNoMessage_internal(TestProbeImpl.scala:224)
[info] at org.apache.pekko.actor.testkit.typed.internal.TestProbeImpl.expectNoMessage(TestProbeImpl.scala:218)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.$anonfun$new$15(ProjectionBehaviorSpec.scala:502)
[info] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info] at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] at org.scalatest.Transformer.apply(Transformer.scala:22)
[info] at org.scalatest.Transformer.apply(Transformer.scala:20)
[info] at org.scalatest.wordspec.AnyWordSpecLike$$anon$3.apply(AnyWordSpecLike.scala:1239)
[info] at org.apache.pekko.actor.testkit.typed.scaladsl.LogCapturing.withFixture(LogCapturing.scala:79)
[info] at org.apache.pekko.actor.testkit.typed.scaladsl.LogCapturing.withFixture$(LogCapturing.scala:77)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.withFixture(ProjectionBehaviorSpec.scala:214)
[info] at org.scalatest.wordspec.AnyWordSpecLike.invokeWithFixture$1(AnyWordSpecLike.scala:1237)
[info] at org.scalatest.wordspec.AnyWordSpecLike.$anonfun$runTest$1(AnyWordSpecLike.scala:1249)
[info] at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
[info] at org.scalatest.wordspec.AnyWordSpecLike.runTest(AnyWordSpecLike.scala:1249)
[info] at org.scalatest.wordspec.AnyWordSpecLike.runTest$(AnyWordSpecLike.scala:1231)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.runTest(ProjectionBehaviorSpec.scala:214)
[info] at org.scalatest.wordspec.AnyWordSpecLike.$anonfun$runTests$1(AnyWordSpecLike.scala:1308)
[info] at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
[info] at scala.collection.immutable.List.foreach(List.scala:431)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:390)
[info] at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:427)
[info] at scala.collection.immutable.List.foreach(List.scala:431)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
[info] at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
[info] at org.scalatest.wordspec.AnyWordSpecLike.runTests(AnyWordSpecLike.scala:1308)
[info] at org.scalatest.wordspec.AnyWordSpecLike.runTests$(AnyWordSpecLike.scala:1307)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.runTests(ProjectionBehaviorSpec.scala:214)
[info] at org.scalatest.Suite.run(Suite.scala:1114)
[info] at org.scalatest.Suite.run$(Suite.scala:1096)
[info] at org.apache.pekko.actor.testkit.typed.scaladsl.ScalaTestWithActorTestKit.org$scalatest$BeforeAndAfterAll$$super$run(ScalaTestWithActorTestKit.scala:41)
[info] at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
[info] at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
[info] at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.org$scalatest$wordspec$AnyWordSpecLike$$super$run(ProjectionBehaviorSpec.scala:214)
[info] at org.scalatest.wordspec.AnyWordSpecLike.$anonfun$run$1(AnyWordSpecLike.scala:1353)
[info] at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
[info] at org.scalatest.wordspec.AnyWordSpecLike.run(AnyWordSpecLike.scala:1353)
[info] at org.scalatest.wordspec.AnyWordSpecLike.run$(AnyWordSpecLike.scala:1351)
[info] at org.apache.pekko.projection.ProjectionBehaviorSpec.run(ProjectionBehaviorSpec.scala:214)
[info] at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
[info] at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
[info] at sbt.TestRunner.runTest$1(TestFramework.scala:153)
[info] at sbt.TestRunner.run(TestFramework.scala:168)
[info] at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
[info] at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
[info] at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
[info] at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
[info] at sbt.TestFunction.apply(TestFramework.scala:348)
[info] at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
[info] at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
[info] at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[info] at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[info] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[info] at sbt.Execute.work(Execute.scala:292)
[info] at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[info] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:[265](https://github.com/apache/incubator-pekko-projection/actions/runs/7831923269/job/21369593583?pr=105#step:6:266))
[info] at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:[266](https://github.com/apache/incubator-pekko-projection/actions/runs/7831923269/job/21369593583?pr=105#step:6:267))
[info] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info] - failureInsideProjectionPropagatesToTestkit
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[info] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[info] at java.lang.Thread.run(Thread.java:750)
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with ProjectionBehaviorSpec, especially the ProjectionManagement test around line 502, and run that test repeatedly to reproduce the unexpected StopObserved message. Trace the test's timing and message expectations; done means the test reliably passes without receiving an unexpected StopObserved.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.