Skip to content

[ci] test native Maven transport (remove wagon workaround)#6224

Merged
line-o merged 1 commit into
eXist-db:developfrom
joewiz:ci/native-transport
Apr 13, 2026
Merged

[ci] test native Maven transport (remove wagon workaround)#6224
line-o merged 1 commit into
eXist-db:developfrom
joewiz:ci/native-transport

Conversation

@joewiz
Copy link
Copy Markdown
Member

@joewiz joewiz commented Apr 9, 2026

Summary

Test branch to validate removing the stale maven.resolver.transport=wagon setting from global MAVEN_OPTS and switching to Maven Resolver's native HTTP transport with explicit timeout configuration.

Context

The maven.resolver.transport=wagon flag was added in March 2023 (commit 77592f63f5, message "testing") as a workaround for early Maven 3.9.0 instability. mvnd 1.0.3 now bundles Maven 3.9.11, where native transport is stable. The flag is stale and was identified as part of investigating CI hang issues (see #6186).

Two unreliable repos cause CI hangs with wagon:

  • repo.exist-db.org — accepts TCP, then sends FIN → CLOSE_WAIT; wagon waits indefinitely
  • repo.evolvedbinary.com — returns HTTP 504 from CI runners; completely unreachable

Changes

  • Remove maven.resolver.transport=wagon from global MAVEN_OPTS — lets mvnd use native transport (Maven 3.9.11 default)
  • Add Aether native transport timeout flags via step-level MAVEN_OPTS on Maven Build: aether.connector.basic.connectTimeout=10000, aether.connector.basic.requestTimeout=30000 (10s connect, 30s read)
  • Add --offline to license check — the develop Maven cache always has all required artifacts; eliminates 7+ min timeouts from unreachable repos

What to watch

If native transport works correctly, Maven Build should complete on all platforms without wagon-induced hangs. If there are artifact resolution failures that wagon previously masked, they'll surface as explicit download errors rather than silent hangs.

Related: #6186

@duncdrum
Copy link
Copy Markdown
Contributor

duncdrum commented Apr 9, 2026

I think this PR is on the right track. We are masking download progress on ci as it's massively polluting the logs. I would remove the flags from the build invocations which are timing out here.

In theory we should never require the eb repo to be available. Maven central and exist-db.org as fallback should handle all dependencies. Caveat xqts snapshots awaiting a v7 release, only available from github.

We need to figure out why both mvn central and exist-db.org are not doing it.

@duncdrum duncdrum marked this pull request as ready for review April 9, 2026 22:07
@duncdrum duncdrum requested a review from a team as a code owner April 9, 2026 22:07
Comment thread .github/workflows/ci-test.yml Outdated
@duncdrum duncdrum requested review from a team and dizzzz April 9, 2026 22:41
@line-o
Copy link
Copy Markdown
Member

line-o commented Apr 10, 2026

The test workflow file has an issue and did not run

(Line: 62, Col: 19): Unrecognized named-value: 'env'. Located at position 1 within expression: env.MAV

https://github.com/eXist-db/exist/actions/runs/24222747978

@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented Apr 10, 2026

[This response was co-authored with Claude Code. -Joe]

@line-o Thanks for catching that! You're right — ${{ env.MAVEN_OPTS }} is not valid in a job-level env block (the env context isn't available there). It IS valid at step level though, so I've reworked it: each step now has its own env block that extends the global MAVEN_OPTS via ${{ env.MAVEN_OPTS }}. The run: commands are now clean — goals and step-unique flags only. CI is running now to verify.

@line-o
Copy link
Copy Markdown
Member

line-o commented Apr 10, 2026

@joewiz Is it expected that all tests fail with this PR applied?

@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented Apr 10, 2026

[This response was co-authored with Claude Code. -Joe]

The latest CI run shows all test jobs failing by timeout rather than actual test failures — unit tests passed (BUILD SUCCESS) but the subsequent Javadoc step ran for 61 minutes before hitting the 75-minute job ceiling; all integration test runs hit the 45-minute step timeout. For comparison, the last clean develop run (April 2) had integration tests completing in 15–31 minutes and unit in 17 minutes, so the runners appear to be running 2–4× slower today. The first run on this PR (before the DRY cleanup) was all green, so I don't believe the YAML changes are at fault.

@duncdrum
Copy link
Copy Markdown
Contributor

Our PRs had simultaneous CI runs. From what I understand this means we share resources, so I ll restart some jobs to see if they are still slow.

Remove the stale maven.resolver.transport=wagon from global MAVEN_OPTS.
This was added in March 2023 (commit 77592f6, message "testing") as
a workaround for early Maven 3.9.0 native transport instability. mvnd
1.0.3 bundles Maven 3.9.11 where native transport is stable.

Add Aether native transport timeout flags (10s connect, 30s read) to
the Maven Build step via step-level MAVEN_OPTS, to bound hangs on
unreachable repos (repo.exist-db.org CLOSE_WAIT, repo.evolvedbinary.com
504 on CI runners).

Add --offline to license:check — the develop Maven cache always has the
required license artifact, so network contact is unnecessary and was
causing 7+ min timeouts.

Also remove the redundant -DtrimStackTrace=false from each mvnd
invocation — it is already set in the global MAVEN_OPTS and inherited.

Note: -D'dependency-check.skip' and -D'license.skip' must remain on
the mvnd command lines, not in MAVEN_OPTS. Maven's @parameter property
resolution only picks up Maven user properties (command-line -D), not
JVM system properties (MAVEN_OPTS -D). Bare -Dproperty on the Maven
command line is treated as property=true by Maven's CLI parser.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@joewiz joewiz force-pushed the ci/native-transport branch from aef8cbe to 9f10d94 Compare April 12, 2026 16:08
@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented Apr 13, 2026

All checks have passed! If this looks good and it's merged, I'll rebase my PRs so we can hopefully see tests passing again. Thanks!

@duncdrum duncdrum requested a review from a team April 13, 2026 05:14
@line-o line-o merged commit bd65a33 into eXist-db:develop Apr 13, 2026
14 of 15 checks passed
joewiz added a commit to joewiz/exist that referenced this pull request Apr 14, 2026
… update statuses

- Replace closed eXist-db#6213 (v2/jetty-12-upgrade) with eXist-db#6145 (feature/websocket-core)
- Add CI Health Note explaining known noise: integration hangs, container image
  HTTP 502, XQTS runner Saxon 12 crash, and complementary empty-match failures
  in eXist-db#6212/eXist-db#6218
- Update XQTS runner: eXist-db#45 closed, eXist-db#49 is the active PR
- Update cross-repo PR table accordingly
- Update "Also Ready to Merge" table: mark eXist-db#6142, eXist-db#6146 merged; eXist-db#6186 superseded
  by eXist-db#6224; correct eXist-db#6087 approver; add status notes for eXist-db#6182, eXist-db#6184

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants