wombatu-kun opened a new pull request, #16562:
URL: https://github.com/apache/iceberg/pull/16562

   Closes #16359
   
   ## Summary
   
   Several `spark-extensions` concurrency tests ran two worker threads in a 
barrier-synchronized loop bounded by `Integer.MAX_VALUE` while the main thread 
blocked on `assertThatThrownBy(<op>Future::get)` with no timeout, expecting a 
conflict exception. When that exception was never thrown, nothing bounded 
either thread — the append thread kept committing data files until CI hit its 
wall-clock limit or ran out of disk (as in #16303, where the runaway filled the 
GitHub Actions disk and was retriggered several times before the cause was 
found). This makes those tests fail fast instead of relying on external limits.
   
   ## What changed
   
   - Bounded both worker loops with a shared `MAX_OPERATIONS = 20` constant — 
the same value the sibling `*WithSnapshotIsolation` tests already use with this 
identical harness — so the loop can no longer run unbounded.
   - Wrapped the wait in `Future.get(OPERATION_TIMEOUT_MINUTES, 
TimeUnit.MINUTES)` (5 minutes) and cancelled the operation future in `finally`, 
so a stuck operation is interrupted and the wait can't block forever.
   - Hoisted `MAX_OPERATIONS` and `OPERATION_TIMEOUT_MINUTES` into 
`SparkRowLevelOperationsTestBase` so these concurrency tests share one bound 
(the snapshot-isolation siblings now reference the same constant).
   
   Affected methods (across Spark v3.5/v4.0/v4.1 where present): 
`testMergeWithSerializableIsolation`, `testDeleteWithSerializableIsolation`, 
`testUpdateWithSerializableIsolation`, and the copy-on-write 
`testMergeWithConcurrentTableRefresh`, `testDeleteWithConcurrentTableRefresh`, 
`testUpdateWithConcurrentTableRefresh`.
   
   In a passing run the conflict still fires within the first couple of 
iterations, so behavior is unchanged; in a regression the bounded loop plus 
timeout make the test fail fast with a clear assertion instead of exhausting CI 
resources.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to