Description
The test RemotingSpec — "should resume the outbound reader when passive read handoff fails" intermittently times out on the Scala 3 CI job.
Failure
java.lang.AssertionError: assertion failed: timeout (6 seconds) during expectMsg while waiting for after-handoff-failure
at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
at org.apache.pekko.testkit.TestKitBase.expectMsg_internal(TestKit.scala:471)
at org.apache.pekko.testkit.TestKitBase.expectMsg(TestKit.scala:448)
at org.apache.pekko.remote.classic.RemotingSpec.f$proxy19$1(RemotingSpec.scala:797)
Location
remote/src/test/scala/org/apache/pekko/remote/classic/RemotingSpec.scala:797
outboundRemoteHandle.association.write(payload("after-handoff-failure"))
receiverProbe.expectMsg("after-handoff-failure") // <-- times out here
Observed in
Analysis
The test sets up a passive read-only inbound association, sends a broken packet to trigger disassociation of the read-only endpoint, then expects the outbound writer to resume delivering messages. The expectMsg at line 797 times out, suggesting the outbound reader did not resume after the passive read handoff failure.
This is a timing-sensitive test involving multiple transport associations and handoffs. The 6-second timeout may be insufficient under CI load, or the resume logic may have a race condition that manifests more often on Scala 3 (possibly due to different compilation/optimization characteristics affecting thread scheduling).
Possible fixes
- Increase the
expectMsg timeout with a dilated factor
- Investigate whether the resume logic in the endpoint reader has a race condition
- Add retry or
awaitAssert around the assertion to tolerate transient timing
Description
The test
RemotingSpec—"should resume the outbound reader when passive read handoff fails"intermittently times out on the Scala 3 CI job.Failure
Location
remote/src/test/scala/org/apache/pekko/remote/classic/RemotingSpec.scala:797Observed in
Source.queuedeprecation): CI runAnalysis
The test sets up a passive read-only inbound association, sends a broken packet to trigger disassociation of the read-only endpoint, then expects the outbound writer to resume delivering messages. The
expectMsgat line 797 times out, suggesting the outbound reader did not resume after the passive read handoff failure.This is a timing-sensitive test involving multiple transport associations and handoffs. The 6-second timeout may be insufficient under CI load, or the resume logic may have a race condition that manifests more often on Scala 3 (possibly due to different compilation/optimization characteristics affecting thread scheduling).
Possible fixes
expectMsgtimeout with adilatedfactorawaitAssertaround the assertion to tolerate transient timing