Conversation
|
should we just try ? |
Thanks for chasing this. Transient dependency-download failures are a real tax on everyone's PRs and the two linked failures make the case clearly. Factoring the Maven bootstrap into a shared composite action is overdue, and the I do have concerns, mostly about scope and about one cache key. This is several independent changes in one PR As far as I can tell there are at least four separable pieces here: the shared The SBT cache key mixes Comet and Spark poms
If those two paths produce even slightly different file sets under
The
The transient-error regex matches anywhere in the log
One question on the preflight tests
|
|
Updated in 093db4c78. Addressed the mixed-log retry bug: explicit permanent HTTP/artifact/build errors now stop the attempt even when an earlier line reports a connection reset. The new regressions fail on the previous helper and verify one invocation, the original exit status, and no backoff; a long-summary case prevents a fixed-tail workaround. The helper remains restricted to dependency acquisition, and Maven goals/Spark compilation and tests are not rerun. All 26 download/cache/Delta checks pass locally, including Maven 3.9.6 against the loopback HTTP server. These are local results for the new commit; the previous hosted preflight ran the original 24 checks in about 36 seconds (29.105 seconds for download/cache tests and 4.942 seconds for Delta checks). For the other questions:
I have kept the related download changes together: SBT pre-resolution addresses the observed dependency failure, and Delta logging retains the failing command's diagnostics. No build/test retry scope was added. |
andygrove
left a comment
There was a problem hiding this comment.
The fix in 093db4c for the mixed-log retry bug addresses the concern I raised about a permanent failure getting retried just because an earlier line in the same log mentioned a transient one. The cache-key match and the setup-maven idempotency question both check out against the evidence in the thread, so I won't re-raise those.
This does overlap with #5782 in one concrete spot. Both PRs set aether.connector.http.retryHandler.count and aether.connector.http.retryHandler.serviceUnavailable, to different values, through different mechanisms. #5782's .mvn/maven.config applies those properties to every ./mvnw invocation, CI or local, with count 6 and service-unavailable codes 408,429,500,502,503,504. This PR's setup-maven/action.yaml sets count 3 and 429,500,502,503,504 through MAVEN_OPTS, which only takes effect where a job calls setup-maven. Landing both as written leaves two sources of truth for the same keys. .mvn/maven.config is the smaller change and the one that also helps contributors building locally, so I'd land #5782 first and have this PR drop its count and serviceUnavailable lines in favor of it, keeping the interval/intervalMax backoff pacing that .mvn/maven.config doesn't set.
Separately from #5782, this branch no longer merges cleanly against main. git merge-tree shows real conflicts in .github/workflows/ci.yml and .github/workflows/pyarrow_udf_test.yml. #5762 inserted a new preflight step at the same line this PR inserts Check CI download handling. #5561 inserted a new path filter and matrix entry at the same line this PR inserts .github/actions/setup-maven/**. More useful than the conflicts themselves: the celeborn-reflection-compatibility job that #5604 added to pr_build_linux.yml sets up its toolchain through setup-builder and then calls ./mvnw directly, bypassing java-test, rust-test, and setup-spark-builder, the three composite actions that now carry the Setup Maven step. Once this rebases, that job will still have neither the wrapper bootstrap retry nor the transfer-retry MAVEN_OPTS this PR is trying to make universal, so it's worth giving it a Setup Maven step in the same pass.
None of the new setup-maven action, retry-download.sh, or the SBT pre-resolution step gets a mention in .github/workflows/README.md. That matters more here because #5782 is adding a "Retrying flaky network operations" section to that same README describing ./.github/actions/java-test's bootstrap retry, which this PR moves into setup-maven. Whichever of the two lands second should update that section so it still matches where the mechanism actually lives.
|
Triage note: #5881 is doing the same thing — bootstrapping Maven from the setup actions so every That one is mine and it is the newer of the two, so I plainly missed this when I opened it. This PR also retries the artifact downloads rather than only the distribution, which #5881 does not do at all. Would you rather take the combined change here, or shall I rebase #5881 onto whatever survives? |
@sunchao I went ahead and merged #5881 since it was green in CI and already approved. Maybe you could rebase this one after that merges? |
|
do we still see network issues? |
Which issue does this PR close?
No issue is closed. This follows up on #5422 and addresses the dependency-download failures seen on #5481. The separate libhdfs crash is covered by #5036.
Rationale for this change
#5422 added Maven distribution caching and bootstrap retries to the Java test action. Other Maven callers still bootstrap independently, and downloading Maven itself does not protect subsequent artifact downloads.
On #5481, the Delta build gate failed downloading a Maven plugin dependency with
Connection reset, while a Spark 4.1 SQL shard failed resolving a Guava dependency with HTTP 502 before its tests started.What changes are included in this PR?
/root, which caused cache saving to fail withEACCES; root containers keep their existing distribution location. The changed cache path list causes one initial cache miss.How are these changes tested?
/home/runner/.m2/wrapper/distswithoutEACCES.The real Maven integration checks ran locally on JDK 21 and in preflight on JDK 11. Full Spark/JVM/native coverage is provided by the remaining PR CI matrix. This PR does not change the native crash fix in #5036.