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]

Reply via email to