Yicong-Huang opened a new issue, #5546:
URL: https://github.com/apache/texera/issues/5546
### What happened?
`RegionExecutionCoordinatorSpec` failed on `main` with
`java.util.ConcurrentModificationException: mutation occurred during
iteration`. The probe `ControllerRpcProbe` stores RPC calls in a
`mutable.ArrayBuffer` (`calls`) that is appended to from the actor thread while
assertion helpers call `.filter(...)` on it from the test thread. Under Scala
2.13's `MutationTracker`, this race surfaces as a hard CME instead of a silent
wrong result.
Failing read site:
`amber/src/test/scala/org/apache/texera/amber/engine/architecture/scheduling/RegionCoordinatorTestSupport.scala:108`
```scala
def endWorkerCalls: Seq[WorkerRpcCall] =
calls.filter(_.methodName == EndWorker).toSeq
```
Sibling helpers on lines 103, 106, 112 (`methodTrace`, `initializedWorkers`,
`startedWorkers`, `onlyEndWorkerCall`) share the same unsynchronized read
pattern.
### How to reproduce?
Run on main:
```
sbt 'amber/testOnly
org.apache.texera.amber.engine.architecture.scheduling.RegionExecutionCoordinatorSpec'
```
The test "RegionExecutionCoordinator should retry EndWorker failures and
delay gracefulStop until a retry succeeds" fails non-deterministically. On the
CI commit referenced below it failed twice in the same run; subsequent runs on
later commits passed. Frequency depends on actor mailbox timing.
### Branch
main
### Commit Hash (Optional)
c0615e1d50a4f7088ad49f804216a944e59cd9ab
### Relevant log output
```
java.util.ConcurrentModificationException: mutation occurred during iteration
at
scala.collection.mutable.MutationTracker$.checkMutations(MutationTracker.scala:43)
at
scala.collection.mutable.CheckedIndexedSeqView$CheckedIterator.hasNext(CheckedIndexedSeqView.scala:47)
at
scala.collection.StrictOptimizedIterableOps.filterImpl(StrictOptimizedIterableOps.scala:225)
at
scala.collection.StrictOptimizedIterableOps.filterImpl$(StrictOptimizedIterableOps.scala:222)
at
scala.collection.mutable.ArrayBuffer.filterImpl(ArrayBuffer.scala:41)
at
scala.collection.StrictOptimizedIterableOps.filter(StrictOptimizedIterableOps.scala:218)
at
scala.collection.StrictOptimizedIterableOps.filter$(StrictOptimizedIterableOps.scala:218)
at scala.collection.mutable.ArrayBuffer.filter(ArrayBuffer.scala:41)
at
org.apache.texera.amber.engine.architecture.scheduling.RegionCoordinatorTestSupport$ControllerRpcProbe.endWorkerCalls(RegionCoordinatorTestSupport.scala:108)
at
org.apache.texera.amber.engine.architecture.scheduling.RegionExecutionCoordinatorSpec.$anonfun$new$5(RegionExecutionCoordinatorSpec.scala:99)
at
org.apache.texera.amber.engine.architecture.scheduling.RegionCoordinatorTestSupport$.waitUntil(RegionCoordinatorTestSupport.scala:213)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]