The GitHub Actions job "Required Checks" on 
texera.git/fix/7049-serialize-minio-test-suites has succeeded.
Run started by GitHub user Yicong-Huang (triggered by Yicong-Huang).

Head commit for run:
5228395e4558dbf7badbe9ba2ee48c8022726127 / Yicong-Huang 
<[email protected]>
test(workflow-core): add @NonParallelTest to de-flake shared-MinIO suites

`S3StorageClientSpec` intermittently failed 4 tests in the `build / amber` CI
job (scope `WorkflowCore / Test / test`). The four suites mixing
`S3StorageTestBase` (`S3StorageClientSpec`, `LargeBinaryManagerSpec`,
`LargeBinaryInputStreamSpec`, `LargeBinaryOutputStreamSpec`) share a JVM-wide
`S3StorageClient.s3Client` and a single `StorageConfig.s3Endpoint` pointed at
one shared MinIO container. ScalaTest's parallel suite distributor runs them
concurrently within a single in-process test task, so they contend for that one
container and intermittently time out. The existing
`Global / concurrentRestrictions += Tags.limit(Tags.Test, 1)` only bounds sbt
task concurrency, not ScalaTest's in-JVM distributor.

Introduce a reusable `@org.apache.texera.common.tags.NonParallelTest` marker
(a Java `@TagAnnotation`, mirroring amber's `IntegrationTest`) and tag the four
suites. `common/workflow-core/build.sbt` reflects over the tagged suites and
gives each its own forked JVM via `Test / testGrouping`; sbt runs forked groups
one at a time (the `Tags.ForkedTestGroup` limit), so tagged suites never overlap
while every untagged suite runs in parallel in a single forked group. sbt
discovers ScalaTest suites by subclass fingerprint (not by annotation), so the
tag is detected reflectively through the test class loader.

Forking is configured exactly like the FileService testcontainer suites
(`Test / fork := true` + per-group `SubProcess`), which is the layout sbt-jacoco
supports for forked coverage. An earlier attempt left `Test / fork := false` and
forked only some groups; that partially-forked layout ran jacoco-instrumented
classes in forked JVMs without the coverage runtime and aborted with
`$jacocoInit` `ClassCastException: Long cannot be cast to [Z`.

Also bound the concurrent-upload burst in the >1000-objects test from 16 to 4
threads so a single suite no longer floods the container.

Closes #7049

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

Report URL: https://github.com/apache/texera/actions/runs/30492530318

With regards,
GitHub Actions via GitBox

Reply via email to