ci: shard Iceberg Spark tests across four runners - #5459
Open
sunchao wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why are the changes needed?
The main Iceberg Spark test task is one of Comet CI's longest paths. In a recent successful job, test execution consumed about 67 minutes, including 18.7 minutes in
TestStructuredStreamingRead3and 10.7 minutes inTestRewriteDataFilesAction. The job finished after 78 minutes including setup and compilation.Which issue does this PR close? None. This is a CI scheduling improvement that retains the existing supported versions and test coverage.
What changes were proposed in this PR?
Split the main Iceberg Spark test task across four isolated workers. Keep the long structured-streaming family together and assign all remaining classes automatically by a stable hash. New classes therefore receive a worker without maintaining a test allowlist. Nested classes stay with their enclosing class, and all classes remain available on the test classpath for inherited fixtures and framework discovery.
A workflow-side Gradle init script adds an exclusion predicate to the existing candidate selection. It does not replace Gradle's existing includes/excludes or JUnit's tag and parameterized-test handling. Each worker uploads its candidate inventory and JUnit reports, with distinct names for reruns.
Run a lightweight coverage-equivalence fixture once per Iceberg version in the existing short runtime job. Native compilation, extensions, runtime-test commands, and existing Comet/Gradle build flags are otherwise unchanged. This PR intentionally leaves repeated JVM compilation for separate work.
How was this PR tested?
git diff --check.Full Iceberg suites and hosted elapsed-time improvements have not been measured for this patch. Additional workers repeat the existing setup/compilation work; the expected improvement is in wall-clock test completion, not necessarily total runner-minutes. The main test workers have new shard-suffixed check names, so any external requirements that refer to the old individual check should be checked.