Skip to content

chore: UCT/TCP: Reuse maximum AM length - #10

Closed
roiedanino wants to merge 13 commits into
masterfrom
fix/tcp-am-rx-length-6069355
Closed

roiedanino wants to merge 13 commits into
masterfrom
fix/tcp-am-rx-length-6069355

Conversation

@roiedanino

Copy link
Copy Markdown
Owner

Intent

Close the current PR review comment on TCP active-message receive-length validation by deriving the maximum allowed AM length once and reusing that exact value for both the comparison and diagnostic. Keep behavior, APIs, wire format, and test scope unchanged. Push the existing fix/tcp-am-rx-length-6069355 branch that backs PR openucx#12081.

What Changed

aa7024e UCT/TCP: Reuse maximum AM length
c619274 UCT/TCP: Improve oversized AM diagnostics
2a7a1c8 UCT/TCP: Validate AM receive length
9af60a8 CI: Add Fedora 44, Ubuntu 26.10, Azure Linux 4.0, UOS and openEuler 22.03 SP4 / 24.03 SP3 (openucx#11906)
d76cd54 UCT/IB/MLX5: Treat a missing QP during RX token query as absent. (openucx#12063)
0f59999 UCT/IB/MLX5: support am zcopy in purge outstanding (openucx#11873)
fc262d7 Merge pull request openucx#11932 from Alexey-Rivkin/ci-no-draft-builds
651d644 AZP/SNAPSHOT: Point JUCX snapshots at Central Portal (openucx#11883)
65ea144 UCP/CONFIG: Allow 32 MDs per component on Vera Rubin (openucx#12064)
f417f09 UCP/CORE: Fix cleanup flow in ucp_fill_config (openucx#12067)
d8529c7 UCP/RNDV: Use local memory detection for RTR_REQ responder (openucx#12041)
ad6f25c UCP/GTEST: Add test for multi-rail load-balance (openucx#11842)
706a164 CI: Do not start the PR pipeline for draft pull requests

Testing

  • ⏭️ Test - skipped

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

⏭️ **Rebase** - skipped

Step was skipped.

⏭️ **Review** - skipped

Step was skipped.

⏭️ **Test** - skipped

Step was skipped.

⏭️ **Document** - skipped

Step was skipped.

⏭️ **Lint** - skipped

Step was skipped.

✅ **Push** - passed

✅ No issues found.

Alexey-Rivkin and others added 13 commits September 9, 2026 16:05
Marking a draft PR "ready for review" makes Azure queue a second run of
the same commit and auto-cancel the run already in progress. Over the
last 30 days this happened 26 times, 17 of them killing a running draft
build (one after 18 hours in the test queue). Azure has no option to
build drafts and skip that transition, so stop building drafts instead:
a draft gets its first PR pipeline run when it is marked ready.

Only the PR pipeline is gated. The snapshot and release pipelines do
real work on a PR only when asked via an "AZP/SNAPSHOT: " or
"AZP/RELEASE: " commit title, which is how packaging changes get tested
from draft PRs; their unrequested runs cost seconds, so they stay as is.

Checked on this PR: pushes while draft queued no UCX PR run, an
"/azp run UCX PR" comment on the draft was refused by Azure, and marking
the PR ready queued the run.

Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
* UCP/GTEST: Add test for multi-rail load-balance

* UCP/GTEST: Multi-rail LB test code optimization.

Reuse configured rates in m_port_speed.

Check resource index in advance of reading the lane's byte count.

Replace the manual resource lookup with ucp_ep_get_tl_rsc.

Signed-off-by: Zhenlong Ma <zhenlongm@nvidia.com>

---------

Signed-off-by: Zhenlong Ma <zhenlongm@nvidia.com>
* AZP/SNAPSHOT: Point JUCX snapshots at Central Portal

Every master CI run fails in Publish-Maven with a 400 Bad Request on
maven-metadata.xml. The snapshotRepository still points at the
ossrh-staging-api compatibility shim, which only serves the staging
deploy endpoint - snapshots moved to the Central Portal snapshot
repository. Release publishing is unaffected and keeps using the shim.

Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
CI: Do not start PR pipelines for draft pull requests
* UCT/IB/MLX5: Add WQE parser for am zcopy

UCT/IB/MLX5: cleanup

GTEST/UCT/IB: update gtest

GTEST/UCT/IB: update test

GTEST/UCT/IB: refactor test

UCT/IB/MXL5: cleanup

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

GTEST/UCT/FT: add zcopy test

UCT/IB/MLX5: address comments

UCT/IB/MLX5: const wrap

UCT/IB/MXL5: const wrap

UCT/IB/MXL5: const wrap

UCT/IB/MLX5: am zcopy parser

GTEST/UCT/IB: test am zcopy parser

UCT/IB/MLX5: cleanup

UCT/IB/MLX5: log level

UCT/IB/MLX5: cleanup

GTEST/UCT/IB: rm overlap gtests

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

UCT/IB/MLX5: address comments

GTEST/UCT/IB: add test for am zcopy

GTEST/UCT/IB: fix test

GTEST/UCT/IB: cleanup

UCT/IB/MLX5: align inline size

UCT/IB/MLX5: const wrap

UCT/IB/MLX5: add assertions

UCT/IB/MLX5: add doc for copy segs

UCT/IB/MLX5: copy segs

UCT/IB/MLX5: refactor am zcopy parser

UCT/IB/MLX5: address comments

UCT/IB/MLX5: cleanup

UCT/IB/MLX5: cleanup

UCT/IB/MLX5: unsupport tag

GTEST/UCT/IB: cleanup

UCT/IB/MLX5: fix num packets

UCT/IB/MLX5: refactor

UCT/IB/MLX5: format

UCT/IB/MLX5: format

UCT/IB/MLX5: comp status

UCT/IB/MLX5: am segs helper

UCT/IB/MLX5: format and cleanup

* GTEST/UCT/IB: fix mem check

* UCT/IB/MLX5: am zcopy handler

---------

Co-authored-by: Zihao Zhao <zizhao@nvidia.com>
…nucx#12063)

A resent failover token can name a queue pair that was already destroyed.
…2.03 SP4 / 24.03 SP3 (openucx#11906)

* CI: Add Fedora 44, Ubuntu 26.10, Azure Linux 4.0, UOS and openEuler 22.03 SP4 / 24.03 SP3

Six OSes across both arches, wired into the Azure PR pipeline - twelve
containers in buildlib/pr/main.yml and matching rows in the x86_64 and
aarch64 matrices of buildlib/pr/build_job.yml - plus the same twelve
rows in .ci/pipeline/build_matrix.yaml so the Jenkins matrix stays in
step. Every image exists on rdmz-harbor today.

Fedora 41 is long out of support, and openEuler is the line the OFED
trains are moving to: MLNX_OFED 26.07 dropped openeuler22.03sp3 in
favour of sp4, and DOCA 3.5 dropped EulerOS entirely, which is what the
euleros2sp12 row still builds against. That row stays; retiring it is a
separate change.

Fedora, Ubuntu 26.10 and Azure Linux 4.0 are inbox builds. No OFED train
builds Fedora past fc32 or Azure Linux past 3.0, and MLNX_OFED 26.07
predates Ubuntu 26.10 - a MOFED tag can follow once a train carries it.
Azure Linux 4.0 is a public preview; its image tracks the azurelinux-beta
channel until GA.

openEuler goes DOCA on x86_64 and MOFED on aarch64, because DOCA
publishes no aarch64 openEuler. UOS goes DOCA on x86_64 and inbox on
aarch64, because neither DOCA nor MOFED publishes aarch64 for 20.1060a.

Build modes follow the existing split: sanity for the inbox-only rows,
short for the OFED-backed ones and for everything on aarch64.

Images come from hpcx-build.

Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>

* CI: Retire EOL and superseded build rows

Agreed with UCX dev management after the new OS rows went in. Removed:
RHEL 7.6 (EOL 2024-06), Debian 10.9 (LTS ended 2024-06), Ubuntu 18.04
(EOL 2023-05), Ubuntu 20.04 and its ROCm 5.4 lane (EOL 2025-05), Ubuntu
22.10 (interim, EOL 2023-07), Fedora 41 (EOL 2025-12, replaced by 44),
EulerOS 2.0 SP12 (DOCA 3.5 dropped EulerOS; the openEuler rows cover it)
and Kylin V10 SP3 (OFED now targets Kylin V11 only). Debian 11.3 (LTS
ended 2026-08-31) stays as a sanity build; CentOS 7 stays as sanity.

Two containers were used outside the build matrix. Build_Static built on
Ubuntu 20.04 and 18.04; it now builds on 22.04 and 24.04, keeping two
Ubuntu static builds without the EOL images. rhel76 was the default of
the coverity.yml container parameter, which main.yml always overrides
with coverity_rh7; the default now says so.

The Jenkins matrix drops the same images.

* TEST: Carry the GCC 16 fixes from openucx#11908 (test only, drop before merge)

Temporary copy of openucx#11908 so the fedora44 rows in this PR build with GCC
16. Revert or drop this commit once openucx#11908 lands.

(cherry picked from commits 29aa3c1 and f1bea8d)

Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>

---------

Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
Validate wire-provided AM lengths at runtime before retaining the header for a later receive. Disconnect peers that advertise a payload larger than the configured receive segment.\n\nAdd a raw TCP regression that sends the protocol magic and an oversized AM header.
Report rejected oversized messages at diagnostic level and use a compile-time constant for the TCP magic value in the regression test.
@roiedanino roiedanino closed this Oct 20, 2026
@roiedanino
roiedanino deleted the fix/tcp-am-rx-length-6069355 branch October 20, 2026 12:15
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.

6 participants