Skip to content

build: add --build-infinia to bundle the Infinia DDN plugin into the whl#1941

Open
NirWolfer wants to merge 1 commit into
ai-dynamo:mainfrom
NirWolfer:infinia-wheel-build
Open

build: add --build-infinia to bundle the Infinia DDN plugin into the whl#1941
NirWolfer wants to merge 1 commit into
ai-dynamo:mainfrom
NirWolfer:infinia-wheel-build

Conversation

@NirWolfer

@NirWolfer NirWolfer commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

What?

Add an opt-in --build-infinia flag to contrib/build-container.sh that pulls the DDN Infinia libs from harbor.mellanox.com (reachable only from the internal network) on the host, stages them flat into the build context, and passes BUILD_INFINIA=true to the manylinux wheel build. Dockerfile.manylinux copies the staged libs to /opt/ddn/red before meson runs so libplugin_INFINIA.so is built into the wheel; libred_client/libred_async remain excluded by auditwheel. No harbor reference exists in the Dockerfile, so external/default builds (BUILD_INFINIA=false) are byte-for-byte unaffected

Why?

needed for the release

How?

It is optional, but for complex PRs, please provide information about the design,
architecture, approach, etc.

Summary by CodeRabbit

  • New Features
    • Added optional Infinia DDN plugin support to manylinux wheel builds.
    • Introduced build flags to enable bundling and to select a custom Infinia libraries image.
    • When enabled, the build workflow automatically stages the required Infinia libraries for packaging.
  • Chores
    • Updated CI Docker image tags across wheel and test matrices to the latest version.
    • Updated ignore rules to prevent staged Infinia libraries from being committed.

@NirWolfer NirWolfer requested review from a team as code owners July 14, 2026 12:24
@github-actions

Copy link
Copy Markdown

👋 Hi NirWolfer! Thank you for contributing to ai-dynamo/nixl.

Your PR reviewers will review your contribution then trigger the CI to test your changes.

🚀

@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR adds opt-in Infinia DDN library staging to container builds and packages the staged libraries in manylinux wheels. It also ignores the staging directory and updates six Jenkins matrix configurations to CI image tag 20260714-1.

Changes

Infinia wheel build

Layer / File(s) Summary
Infinia staging and CLI controls
contrib/build-container.sh, .gitignore
Adds Infinia options, configurable image staging, Docker build-argument wiring, cleanup, status output, help text, and an ignored staging directory.
Manylinux Infinia packaging
contrib/Dockerfile.manylinux
Conditionally installs libuuid-devel and copies staged Infinia libraries into /opt/ddn/red for the wheel build.

CI image tag refresh

Layer / File(s) Summary
Jenkins CI image tags
.ci/jenkins/lib/*matrix.yaml
Updates CI_IMAGE_TAG to 20260714-1 across build, wheel, DL, EP, test, and sanitizer matrices.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant build-container.sh
  participant INFINIA_LIBS_IMAGE
  participant Dockerfile.manylinux
  build-container.sh->>INFINIA_LIBS_IMAGE: pull and extract /infinia/$ARCH/
  build-container.sh->>Dockerfile.manylinux: pass BUILD_INFINIA=true
  Dockerfile.manylinux->>Dockerfile.manylinux: copy libraries into /opt/ddn/red
Loading

Suggested reviewers: alexey-rivkin, ovidiusm

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: adding the opt-in Infinia build flag to bundle the plugin into the wheel.
Description check ✅ Passed The description includes the required What and Why sections and sufficiently explains the change; the optional How section may be omitted.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu · commit 81fe45f4

TL;DR: The podman build in the "Compiling NIXL Docker Image for DL" step failed with invalid reference format because the image tag nixl-ci-dl-gpu-test-:1473 had an empty ${ucx_version}; fix the tag construction so the ucx-version axis variable is populated (or drop the trailing -).

Full analysis

Summary: All matrix branches of nixl-ci-dl-gpu #1473 failed at the "Compiling NIXL Docker Image for DL" step with Error: tag ...nixl-ci-dl-gpu-test-:1473: invalid reference format (podman exit code 125).

Root cause: In .ci/jenkins/lib/test-dl-matrix.yaml, the step builds PR_IMAGE=${registry_host}${registry_path}/pr/${arch}/nixl-ci-dl-gpu-test-${ucx_version}:${BUILD_NUMBER}. In the actual run ${ucx_version} expanded to empty (visible as --build-arg UCX_VERSION= with nothing after it and the tag nixl-ci-dl-gpu-test-:1473), leaving a trailing - directly before :. Podman rejects ...-test-:1473 as an invalid image reference. The ${ucx_version} axis variable is not in scope / not interpolated for this step (it is declared parallel: false and selected by containerSelector: build_helper_dl, i.e. outside the per-axis matrix expansion), so it resolves to empty even though the matrix axis defines master and v1.22.x. Note the same empty-${ucx_version} pattern also appears in later dockerImage/containerName args, so those steps would fail too.

Implicated commit: Not definitively isolated from history, but the matrix restructuring/rename in [REDACTED:Hex High Entropy String] "CI: rename container images (#1839)" (yaroslavs) is the most likely origin of the nixl-ci-dl-gpu-test-${ucx_version} naming; recent edits to test-dl-matrix.yaml include [REDACTED:Hex High Entropy String] (Alexey Rivkin) and [REDACTED:Hex High Entropy String] (Mikhail Brinskiy, UCX v1.22.x bump).

File: .ci/jenkins/lib/test-dl-matrix.yaml — the steps: → "Compiling NIXL Docker Image for DL" block, line with export PR_IMAGE=...nixl-ci-dl-gpu-test-${ucx_version}:${BUILD_NUMBER} (also the dockerImage:/containerName: args in the "Run DL ..." steps that reference ${ucx_version}).

Suggested fix: Ensure ${ucx_version} is actually populated in this step's execution context. Since this build step is parallel: false and runs on the build_helper_dl selector (outside matrix-axis expansion), the axis variable isn't substituted. Either (a) move the image compile into the matrix-expanded per-axis context so ${ucx_version} resolves, or (b) reference the axis variable via the correct matrix-scoped name the framework exposes. As a minimal guard, if a single default image is intended, drop the trailing - (use nixl-ci-dl-gpu-test:${BUILD_NUMBER}) or add a fallback default (${ucx_version:-master}) so the reference is always valid. Verify the fix by confirming the resolved tag no longer contains -:.

Related: PR #1941 (triggering PR); likely regression from PR #1839 "CI: rename container images". No existing issue found for invalid reference format on this image.

🛡️ This comment had 1 potential secret(s) redacted (Hex High Entropy String). See request_id 15f903d6-271a-4ca4-acd5-d09b1e5a38f2 in the triage console for the audit trail.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-gpu · commit 81fe45f4

TL;DR: The podman build step failed with invalid reference format because the PR image tag was rendered as nixl-ci-gpu-test-:2728 — an empty name segment (the UCX-version suffix) left a dangling - right before the :tag. Fix the image-name template so the suffix variable is populated (or the trailing - is dropped when it's empty).

Full analysis

Summary: "Compiling NIXL Docker Image" stage failed (exit 125) — podman build --tag artifactory.nvidia.com/.../nixl-ci-gpu-test-:2728 returned Error: tag ...: invalid reference format.

Root cause: PR_IMAGE is constructed from a template like nixl-ci-gpu-test-${UCX_VERSION}:${BUILD}, but the UCX-version suffix expanded to empty (note --build-arg UCX_VERSION= is also empty in the same command). That left the reference as nixl-ci-gpu-test-:2728 — a repository name ending in - immediately followed by the : tag separator, which podman/OCI rejects as an invalid reference. This is a variable-substitution/naming bug, not a test or infra flake; every build_helper matrix leg (ucx-master, ucx-v1.22.x) failed identically at image compile before any tests ran.

Implicated commit: Most likely [REDACTED:Hex High Entropy String] "CI: rename container images (#1839)" by yaroslavs (introduced the nixl-ci-gpu-test-… naming scheme). The empty UCX suffix may also relate to [REDACTED:Hex High Entropy String] "build: bump UCX version to v1.22.x (#1868)" by Mikhail Brinskiy. Not fully confirmed — exact template file could not be located in this repo checkout.

File: The CI pipeline/image-name template that defines PR_IMAGE / the nixl-ci-gpu-test-<suffix> tag (under .ci/jenkins/pipeline/…; exact path not resolvable from the available tree). Failing command originates from the "Compiling NIXL Docker Image" stage.

Suggested fix: Ensure the UCX-version (or matrix-axis) variable that fills the image-name suffix is set before PR_IMAGE is expanded, or make the template omit the trailing separator when the suffix is empty — e.g. use nixl-ci-gpu-test${SUFFIX:+-$SUFFIX}:${BUILD_NUMBER} instead of nixl-ci-gpu-test-${SUFFIX}:${BUILD_NUMBER}. Also pass a valid UCX_VERSION build-arg (currently empty) so the matrix leg's UCX version is reflected in both the tag and the Dockerfile arg.

Related: #1839 (container image rename), #1868 (UCX v1.22.x bump)

🛡️ This comment had 1 potential secret(s) redacted (Hex High Entropy String). See request_id 4d63a6e3-d4d7-4192-929d-aa231d23fe22 in the triage console for the audit trail.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-gpu · commit 81fe45f4

TL;DR: The Docker/podman build failed with invalid reference format because the PR_IMAGE tag was constructed as nixl-ci-gpu-test-:2729 — a variable meant to suffix the image name (matching the empty UCX_VERSION= build arg) resolved to an empty string, leaving a dangling - before the :tag. Fix the image-name interpolation so the UCX-version suffix is populated (or drop the trailing -).

Full analysis

Summary: Compiling NIXL Docker Image stages (and both build_helper parallel legs for ucx-master and ucx-v1.22.x) fail at the podman build step with Error: tag ...nixl-ci-gpu-test-:2729: invalid reference format.

Root cause: The PR_IMAGE reference is built as artifactory.nvidia.com/sw-nbu-swx-nixl-docker-local/ci/pr/x86_64/nixl-ci-gpu-test-:2729. The segment nixl-ci-gpu-test- ends in a dash immediately before the :tag, which podman rejects as an invalid reference. The same command passes --build-arg UCX_VERSION= (empty), which is the giveaway: a per-matrix suffix (the UCX version, e.g. master / v1.22.x) that is supposed to be appended after nixl-ci-gpu-test- is resolving to an empty string, so both parallel legs generate the identical broken tag. This is a shell/pipeline variable-interpolation bug in how PR_IMAGE (and UCX_VERSION) are populated per matrix entry — not a code/test failure. The image-rename commit [REDACTED:Hex High Entropy String] ("CI: rename container images", #1839) is the most likely origin of the naming template that now leaves a trailing -.

Implicated commit: [REDACTED:Hex High Entropy String] — yaroslavs, "CI: rename container images (#1839)" (most likely; the exact PR_IMAGE/UCX_VERSION assignment file could not be opened to confirm the line).

File: The pipeline step that exports PR_IMAGE=...nixl-ci-gpu-test-:2729 and passes --build-arg UCX_VERSION= (Jenkins pipeline/matrix config under .ci/jenkins/ — exact path not resolvable via the tools available here).

Suggested fix: Ensure the UCX-version matrix variable is set before PR_IMAGE is constructed so the tag becomes e.g. nixl-ci-gpu-test-master:2729 / nixl-ci-gpu-test-v1.22.x:2729, and pass a non-empty --build-arg UCX_VERSION=<version>. Alternatively, if no suffix is intended, remove the trailing - from the image-name template (nixl-ci-gpu-test:${BUILD_NUMBER}). Add a guard that fails fast with a clear message if the suffix variable is empty.

Related: PR #1941 (under test); CI image rename PR #1839; UCX bump PR #1868.

🛡️ This comment had 1 potential secret(s) redacted (Hex High Entropy String). See request_id 4a385e29-d99a-474d-b50a-ef8ef8d86de2 in the triage console for the audit trail.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu-ep · commit 81fe45f4

TL;DR: The Compiling NIXL EP Docker Image for DL stage failed because the PR_IMAGE tag is malformed — it renders as .../nixl-ci-dl-gpu-ep-test-:292 (trailing - right before :), which podman rejects as an "invalid reference format." A variable expected to fill in the -test-<suffix> portion of the image name is empty.

Full analysis

Summary: podman build fails with Error: tag ...nixl-ci-dl-gpu-ep-test-:292: invalid reference format (exit code 125) in the EP Docker image build stage.

Root cause: PR_IMAGE is composed as artifactory.nvidia.com/sw-nbu-swx-nixl-docker-local/ci/pr/aarch64/nixl-ci-dl-gpu-ep-test-${SUFFIX}:${BUILD}, but ${SUFFIX} (the per-matrix suffix, evidently the UCX version — note --build-arg UCX_VERSION= is also empty in the same command) expands to an empty string. This yields the repository name nixl-ci-dl-gpu-ep-test- ending in a hyphen immediately before the :292 tag, which is not a valid OCI reference. Both matrix legs (ucx-master/1 and ucx-v1.22.x/2) produced the identical empty-suffix tag, confirming the interpolation — not one specific UCX value — is broken.

Implicated commit: Most likely [REDACTED:Hex High Entropy String] CI: rename container images (#1839) by yaroslavs (introduced the -test-<suffix> naming). The empty UCX_VERSION also points at interaction with [REDACTED:Hex High Entropy String] build: bump UCX version to v1.22.x (#1868) by Mikhail Brinskiy. Not confirmable to a line without the pipeline definition file.

File: The Jenkins pipeline/matrix definition that exports PR_IMAGE and passes --build-arg UCX_VERSION for nixl-ci-dl-gpu-ep (under .ci/jenkins/; the exact file could not be located via the available tools). .ci/dockerfiles/Dockerfile.gpu-test is the build target but is not the source of the bad tag.

Suggested fix: Ensure the matrix suffix / UCX_VERSION variable is actually populated before building PR_IMAGE. Either (a) pass the UCX version through to the tag so it becomes ...-test-<ucx_version>:292, or (b) if no suffix is intended, drop the trailing - so the name is nixl-ci-dl-gpu-ep-test:292. Add a guard that fails fast with a clear message if the suffix variable is empty, to avoid emitting an invalid image reference.

Related: PR #1941 (this build); likely regression from #1839 (CI: rename container images) and #1868 (UCX bump). No existing issue found for this exact error.

🛡️ This comment had 1 potential secret(s) redacted (Hex High Entropy String). See request_id 85ad1ec4-f19c-4606-a2d3-00c0af80ad91 in the triage console for the audit trail.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu · commit 81fe45f4

TL;DR: The Compiling NIXL Docker Image for DL stage failed because ${ucx_version} expanded to an empty string, producing an invalid podman tag nixl-ci-dl-gpu-test-:1474; the matrix-axis variable is not being propagated into that step's shell environment. Reference ${ucx_version} correctly (or guard against empty) in the step's run: block in test-dl-matrix.yaml.

Full analysis

Summary: podman build failed with Error: tag ...nixl-ci-dl-gpu-test-:1474: invalid reference format in both parallel DL build branches (ucx-master and ucx-v1.22.x).

Root cause: In the Compiling NIXL Docker Image for DL step, PR_IMAGE is built as ...nixl-ci-dl-gpu-test-${ucx_version}:${BUILD_NUMBER}. At execution time ${ucx_version} resolved to empty (confirmed by the sibling --build-arg UCX_VERSION= also being empty), yielding nixl-ci-dl-gpu-test-:1474 — a trailing - immediately before : is an invalid Docker/OCI reference, so podman aborted with exit code 125. The matrix axis value (master / v1.22.x, visible in the taskName and branch names) is not being interpolated into this step's shell env, so the tag and the UCX_VERSION build-arg both come out blank. This is a pipeline variable-expansion problem, not a defect in PR #1941's code (that PR only added --build-infinia wheel bundling and bumped CI_IMAGE_TAG).

Implicated commit: unknown — the offending run: block in .ci/jenkins/lib/test-dl-matrix.yaml predates the recent listed commits; no commit in the last 10 touching this file altered the ${ucx_version} interpolation. The failure is triggered by the matrix framework not exporting the axis variable into the step environment.

File: .ci/jenkins/lib/test-dl-matrix.yamlsteps[0] ("Compiling NIXL Docker Image for DL"), the line export PR_IMAGE=${registry_host}${registry_path}/pr/${arch}/nixl-ci-dl-gpu-test-${ucx_version}:${BUILD_NUMBER} (and the --build-arg UCX_VERSION=${ucx_version}).

Suggested fix:

  • Ensure the matrix axis ucx_version is exported into the step's shell env (e.g. pass it as an explicit env:/args entry for that step, matching how it works in other steps that reference ${ucx_version} via the framework substitution rather than raw shell expansion).
  • Add a fail-fast guard so a malformed tag is caught early, e.g. at the top of the run: block:
    : "${ucx_version:?ucx_version is empty — matrix axis not propagated}"
  • Confirm whether the other steps that use dockerImage: "${registry_host}#${ARTIFACTORY_PATH}/pr/${arch}/nixl-ci-dl-gpu-test-${ucx_version}:${BUILD_NUMBER}" use the framework-level ${...} substitution while this step relies on a plain shell export — if so, align this step to the same substitution mechanism.

Related: none found (searched "PR_IMAGE invalid reference format nixl-ci-dl-gpu-test"; the triggering PR is #1941, which is unrelated to the tag-construction logic).

@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.ci/jenkins/lib/build-wheel-matrix.yaml:
- Around line 285-309: Update the Build Wheel (Infinia) command invoking
contrib/build-container.sh to pass a distinct image tag via --tag, separate from
the default nixl:${VERSION} reference. Keep the existing build arguments
unchanged and ensure the later sanity-image selection cannot choose this Infinia
image accidentally.
- Around line 285-294: Add Harbor authentication to the “Build Wheel (Infinia)”
matrix path, alongside the existing Artifactory credential setup, so its docker
pull from harbor.mellanox.com succeeds. Reuse the repository’s established
Harbor credential/login mechanism and scope the change only to the Infinia wheel
build.

In `@contrib/Dockerfile.manylinux`:
- Around line 375-381: Update the BUILD_INFINIA branch in the Dockerfile RUN
command to verify that /workspace/nixl/infinia-libs contains files before
copying it to /opt/ddn/red. Fail the build when the source tree is empty, while
preserving the existing package installation and staging behavior for non-empty
trees.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 44668112-f42b-44ac-bcf8-4de4c85f4f50

📥 Commits

Reviewing files that changed from the base of the PR and between a9abcb5 and 6c4c8f5.

📒 Files selected for processing (10)
  • .ci/docs/ci-overview.md
  • .ci/jenkins/lib/build-matrix.yaml
  • .ci/jenkins/lib/build-wheel-matrix.yaml
  • .ci/jenkins/lib/test-dl-ep-matrix.yaml
  • .ci/jenkins/lib/test-dl-matrix.yaml
  • .ci/jenkins/lib/test-matrix.yaml
  • .ci/jenkins/lib/test-sanitizer-matrix.yaml
  • .gitignore
  • contrib/Dockerfile.manylinux
  • contrib/build-container.sh

Comment thread .ci/jenkins/lib/build-wheel-matrix.yaml Outdated
Comment thread .ci/jenkins/lib/build-wheel-matrix.yaml Outdated
Comment thread contrib/Dockerfile.manylinux
@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-build-wheel · commit a8462b6c

TL;DR: The SGLang sanity test (stage 615) failed because HuggingFace returned HTTP 429 Too Many Requests when prefetching Qwen/Qwen3-8B — an unauthenticated rate limit on the CI egress IP, not a code bug. Fix by passing an HF_TOKEN and/or pre-caching the model so the run doesn't hit the public HF API anonymously.

Full analysis

Summary: Run SGLang sanity failed during model prefetch of Qwen/Qwen3-8B with a HuggingFace 429 rate-limit error.

Root cause: In .gitlab/test_vllm_sglang_sanity.sh sglang, the step "[sanity:sglang] prefetching Qwen/Qwen3-8B" calls huggingface_hub.snapshot_download anonymously. HF rate-limited the shared CI egress IP (216.228.125.131): 429 Too Many Requests: you have reached your 'api' rate limit ... make sure you pass a HF_TOKEN if you're using the API. With no local cache and no auth token, snapshot_download raised LocalEntryNotFoundError and the script (set -e) exited 1. The wheel build itself succeeded (all Build Wheel stages SUCCESS; the aarch64 nixl_cu13-1.4.0 wheel was produced and installed), so this is an environmental/infra failure, not a regression from commit a8462b6.

Implicated commit: unknown (not a source regression — external HF rate limit)

File: .gitlab/test_vllm_sglang_sanity.sh (the "prefetching Qwen/Qwen3-8B" / snapshot_download step)

Suggested fix:

  • Provide an authenticated HF_TOKEN to the sanity job (higher/authenticated rate limits) and export it in the srun container env.
  • Pre-cache/mount the model on the cluster (e.g. a shared HF_HOME/HF_HUB_CACHE) and set HF_HUB_OFFLINE=1 for the run so it doesn't hit the public API.
  • Add retry-with-backoff on 429 around the prefetch call (respect the Retry after header).
  • This is transient — a re-run once the 300s rate window clears will likely pass, but the token/cache fix prevents recurrence.

Related: none found

Side note: no secrets need quoting here; the SSH key values were already redacted as **** in the log.

@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
contrib/Dockerfile.manylinux (1)

375-381: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Guard the Infinia staging copy with a non-empty check (unresolved from a prior review pass).

cp -a /workspace/nixl/infinia-libs/. /opt/ddn/red/ succeeds even when the source directory exists but is empty, so a failed/partial stage flows into the Meson build with no error until the wheel silently lacks libplugin_INFINIA.so. This was already flagged on this exact block in a previous review round and remains unaddressed.

🛡️ Suggested fix
 RUN if [ "$BUILD_INFINIA" = "true" ]; then \
         dnf install -y libuuid-devel && \
         mkdir -p /opt/ddn/red && \
-        cp -a /workspace/nixl/infinia-libs/. /opt/ddn/red/; \
+        if [ -z "$(ls -A /workspace/nixl/infinia-libs 2>/dev/null)" ]; then \
+            echo "ERROR: infinia-libs staging directory is empty" >&2 && exit 1; \
+        fi && \
+        cp -a /workspace/nixl/infinia-libs/. /opt/ddn/red/; \
     fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@contrib/Dockerfile.manylinux` around lines 375 - 381, Update the
BUILD_INFINIA block to validate that /workspace/nixl/infinia-libs contains at
least one staged file before running the cp command. Fail the Docker build when
the directory is missing or empty, while preserving the existing package
installation and destination setup for valid stages.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@contrib/build-container.sh`:
- Around line 314-317: Move the INFINIA_LIBS_DIR initialization, removal,
creation, and EXIT trap into the existing BUILD_INFINIA=true guard in
contrib/build-container.sh. Ensure non-Infinia builds do not touch the staging
directory or install this trap, while preserving the current setup and cleanup
behavior for Infinia builds.

---

Duplicate comments:
In `@contrib/Dockerfile.manylinux`:
- Around line 375-381: Update the BUILD_INFINIA block to validate that
/workspace/nixl/infinia-libs contains at least one staged file before running
the cp command. Fail the Docker build when the directory is missing or empty,
while preserving the existing package installation and destination setup for
valid stages.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 554a7b07-6a52-4f48-b0d6-f6093f5c9122

📥 Commits

Reviewing files that changed from the base of the PR and between 6c4c8f5 and 69f858c.

📒 Files selected for processing (9)
  • .ci/jenkins/lib/build-matrix.yaml
  • .ci/jenkins/lib/build-wheel-matrix.yaml
  • .ci/jenkins/lib/test-dl-ep-matrix.yaml
  • .ci/jenkins/lib/test-dl-matrix.yaml
  • .ci/jenkins/lib/test-matrix.yaml
  • .ci/jenkins/lib/test-sanitizer-matrix.yaml
  • .gitignore
  • contrib/Dockerfile.manylinux
  • contrib/build-container.sh

Comment thread contrib/build-container.sh Outdated
@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu-ep · commit c4a23d2c

TL;DR: The pipeline failed in the "Allocate DL EP Environment" stage because salloc on the gb200nvl72_cx8 Slurm partition timed out after its 1-hour --immediate=3600 window with no nodes available — a cluster capacity/infrastructure issue, not a code or build defect.

Full analysis

Summary: Stage "Allocate DL EP Environment" (node 245) failed after ~60 min with salloc: error: Unable to allocate resources: Connection timed out; the NIXL build and Docker image push all succeeded beforehand.

Root cause: The GB200 Slurm partition (gb200nvl72_cx8) had no free nodes. salloc -N 1 -p gb200nvl72_cx8 --immediate=3600 --time=01:30:00 ... --account=blackwell was issued at 16:12:35, the job was queued (Pending job allocation 1552862 ... queued and waiting for resources), and after the 3600 s immediate window elapsed the scheduler returned "Unable to allocate resources: Connection timed out" at 17:12:44, giving exit code 1. Continuous behavior (single blocking salloc honoring its own timeout) confirms a scheduler-capacity wait, not a code hang. This is unrelated to PR #1941's changes.

Implicated commit: unknown — not a code regression; infrastructure/scheduler capacity.

File: N/A (CI/Slurm allocation step in the nixl-ci-dl-gpu-ep pipeline; the slurm.allocation shared-library call)

Suggested fix: Re-run the build once GB200 nodes are available; this is a transient capacity failure. To reduce false failures: (1) add automatic retry/backoff on the salloc allocation step, (2) raise --immediate / add a queue-wait budget, or (3) route to a less-contended partition or reserve capacity for --account=blackwell. No source change in PR #1941 is required. If failures persist, check GB200 partition health/quota with cluster admins.

Related: none found (no code issue to search against).

copy-pr-bot Bot pushed a commit that referenced this pull request Jul 15, 2026
Mirror the UCX spcx wiring for the Infinia DDN plugin (#1941): a
BUILD_INFINIA bool (default off) plus an optional INFINIA_IMAGE override,
passed through to build-container.sh --build-infinia only when enabled.
Off by default keeps nightly and poller-triggered builds unchanged.
@NirWolfer NirWolfer force-pushed the infinia-wheel-build branch from 69f858c to 0d144d4 Compare July 15, 2026 08:49
@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@contrib/build-container.sh`:
- Around line 303-334: Validate that staged Infinia libraries are non-empty
before continuing: in contrib/build-container.sh lines 303-334, check
INFINIA_LIBS_DIR immediately after docker cp and fail via error with the
architecture and image details when empty; in contrib/Dockerfile.manylinux lines
375-381, add a guard around the BUILD_INFINIA copy block that fails when
/workspace/nixl/infinia-libs is empty before copying.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: b83692b6-1d3e-411e-a2fd-91f24a74e638

📥 Commits

Reviewing files that changed from the base of the PR and between 69f858c and 0d144d4.

📒 Files selected for processing (9)
  • .ci/jenkins/lib/build-matrix.yaml
  • .ci/jenkins/lib/build-wheel-matrix.yaml
  • .ci/jenkins/lib/test-dl-ep-matrix.yaml
  • .ci/jenkins/lib/test-dl-matrix.yaml
  • .ci/jenkins/lib/test-matrix.yaml
  • .ci/jenkins/lib/test-sanitizer-matrix.yaml
  • .gitignore
  • contrib/Dockerfile.manylinux
  • contrib/build-container.sh

Comment thread contrib/build-container.sh
@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@contrib/Dockerfile.manylinux`:
- Around line 381-383: Update the wheel-stage command sequence near the
libuuid-devel installation to run dnf clean all and remove /var/cache/dnf after
the conditional install, before the staged libraries are copied into
/opt/ddn/red.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: febcad87-cbdb-4c90-bc81-5e917f4e1135

📥 Commits

Reviewing files that changed from the base of the PR and between 0d144d4 and f4d4d6a.

📒 Files selected for processing (9)
  • .ci/jenkins/lib/build-matrix.yaml
  • .ci/jenkins/lib/build-wheel-matrix.yaml
  • .ci/jenkins/lib/test-dl-ep-matrix.yaml
  • .ci/jenkins/lib/test-dl-matrix.yaml
  • .ci/jenkins/lib/test-matrix.yaml
  • .ci/jenkins/lib/test-sanitizer-matrix.yaml
  • .gitignore
  • contrib/Dockerfile.manylinux
  • contrib/build-container.sh

Comment thread contrib/Dockerfile.manylinux
Alexey-Rivkin
Alexey-Rivkin previously approved these changes Jul 15, 2026

@Alexey-Rivkin Alexey-Rivkin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pls update the PR body

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-build-wheel · commit 6974e172

TL;DR: Both the vLLM (#593) and SGLang (#552) sanity stages failed at the model-prefetch step because HuggingFace returned HTTP 429 "Too Many Requests" (rate-limited the CI egress IP 216.228.125.129) — an unauthenticated snapshot_download with no token or local cache. Fix by passing an HF_TOKEN and/or a persistent HF cache to the sanity jobs so the download is authenticated and not re-fetched every run.

Full analysis

Summary: The Run vLLM sanity and Run SGLang sanity stages both exited with code 1 during model prefetch of Qwen/Qwen3-8B; the wheel build itself succeeded.

Root cause: In .gitlab/test_vllm_sglang_sanity.sh line 99, snapshot_download('Qwen/Qwen3-8B') runs anonymously against huggingface.co. HuggingFace rate-limited the shared CI egress IP: 429 Too Many Requests: you have reached your 'api' rate limit … We had to rate limit your IP (216.228.125.129) … make sure you pass a HF_TOKEN. With set -euo pipefail, the raised LocalEntryNotFoundError aborts the script (exit 1). This is an infrastructure/environment failure, not a code defect in the PR — no application hang (both failures occurred within ~1s of the prefetch line, no stalls) and the build stages passed.

Implicated commit: unknown — not caused by a code change; the failure is external HF rate-limiting. The prefetch logic lives in .gitlab/test_vllm_sglang_sanity.sh (added to support runtime model prefetch).

File: .gitlab/test_vllm_sglang_sanity.sh:99

Suggested fix:

  • Provide an authenticated token to the sanity jobs (set HF_TOKEN in the SLURM/enroot environment) so requests aren't anonymously rate-limited. The 429 message explicitly recommends this.
  • Mount/reuse a persistent HuggingFace cache (HF_HOME/HUGGINGFACE_HUB_CACHE) across runs, or bake Qwen/Qwen3-8B into the base image, so the prefetch is a no-op cache hit on repeat runs.
  • As a resilience measure, add retry/back-off around the prefetch (e.g. snapshot_download(..., etag_timeout=..., max_retries=...) or a shell retry loop honoring the Retry after hint) and consider setting HF_HUB_ENABLE_HF_TRANSFER/offline mode when the cache is present.
  • Re-running the PR after the 300s rate-limit window will likely pass, but the underlying anonymous-download pattern will keep flaking without a token/cache.

Related: none found.

COPY . /workspace/nixl
WORKDIR /workspace/nixl

# Opt-in: place the pre-staged DDN Infinia libs (from infinia-libs/ in the build

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to diverge from https://github.com/ai-dynamo/nixl/pull/1832/changes where libred_client seems to need liburing.so.2 and libldap.so.2 plus jansson/libjose/xxhash from @nv-nmailhot

Also how does the rest of the build use this library if there is no LD_LIBRARY_PATH adjustment?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please ask @nv-nmailhot for review?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference here? the only dep that was failing the build was libuuid which i added to the installation
Local verification shows that the infinia so file lands in the whl at the end of the build

@NirWolfer NirWolfer requested review from a team and nv-nmailhot July 15, 2026 12:49
…wheel

Add an opt-in --build-infinia flag to contrib/build-container.sh that pulls
the DDN Infinia libs from harbor.mellanox.com (reachable only from the internal
network) on the host, stages them flat into the build context, and passes
BUILD_INFINIA=true to the manylinux wheel build. Dockerfile.manylinux installs
libuuid-devel and copies the staged libs to /opt/ddn/red before meson runs so
libplugin_INFINIA.so is built into the wheel; libred_client/libred_async remain
excluded by auditwheel. Both sides fail fast if the extraction is empty (wrong
arch / misconfigured image) rather than silently shipping a wheel without the
plugin. No harbor reference exists in the Dockerfile, so external/default builds
(BUILD_INFINIA=false) are byte-for-byte unaffected: no filesystem writes, no
trap, no plugin.

CI wiring is intentionally deferred; when added it will fold into the normal
Build Wheel step rather than run as a separate step. CI_IMAGE_TAG is now
auto-derived by cidemo-init.sh from the CI-file commit SHA, so the
Dockerfile.manylinux change needs no manual matrix-YAML tag bump.

Signed-off-by: NirWolfer <nwolfer@nvidia.com>
@NirWolfer

Copy link
Copy Markdown
Contributor Author

/build

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu · commit 97b9bb62

TL;DR: All Docker-image build stages failed because apt-get could not reach ports.ubuntu.com ("Network is unreachable" / connection timed out) — a transient CI network/infrastructure outage, not a code defect. Re-run the build once the network/mirror is reachable (or point apt at an internal mirror).

Full analysis

Summary: Every "Compiling NIXL Docker Image for DL" stage (nodes 220, 210) and the ucx build stages (176, 177) failed at Dockerfile STEP 15/17 during apt-get install gdb gdb-multiarch with exit code 100.

Root cause: apt could not connect to the Ubuntu ports mirror: Cannot initiate the connection to ports.ubuntu.com:80 ... - connect (101: Network is unreachable) and connection timed out for both the IPv6 and IPv4 addresses. All 8 .deb fetches failed, so apt-get install returned exit 100 and podman aborted the build. This is an environmental network outage on the aarch64 build agent (IPv6 unreachable + IPv4 mirror timeouts), unrelated to PR #1941. Note the base-image pull from artifactory.nvidia.com and the packages.microsoft.com repo (Hit:1) both succeeded — only the external ports.ubuntu.com mirror was unreachable, consistent with a transient/egress network issue rather than agent-wide loss of connectivity.

Implicated commit: None — this is infrastructure, not a code change. The failing apt-get install gdb gdb-multiarch line predates the PR (last Dockerfile edit was 3ab92dc / 9ac7ada on 2026-07-07, both before the build).

File: .ci/dockerfiles/Dockerfile.gpu-test (STEP 15/17: RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends gdb gdb-multiarch && .gitlab/build.sh ...)

Suggested fix: Retry the build once the CI network/egress to ports.ubuntu.com is restored — this should pass on re-run. To harden against recurrence: (1) point the aarch64 agents' apt sources at a reliable internal/Artifactory Ubuntu mirror instead of ports.ubuntu.com, and/or (2) add apt-get retry options (-o Acquire::Retries=3) and disable IPv6 for apt (-o Acquire::ForceIPv4=true) since the IPv6 routes were unreachable, and/or (3) bake gdb/gdb-multiarch into the base image so the per-PR build doesn't depend on external apt mirrors.

Related: none

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-build-wheel · commit 97b9bb62

TL;DR: The Build sanity image stage failed because apt update/apt install -y curl git in contrib/Dockerfile.vllm couldn't reach ports.ubuntu.com (connection timeouts / "Network is unreachable"), so git had "no installation candidate". This is an infrastructure/network flake, not a code bug — the wheel built successfully.

Full analysis

Summary: Stage 621 "Build sanity image" (building contrib/Dockerfile.vllm for aarch64) failed at exit code 100 during apt install -y curl git.

Root cause: The Ubuntu ports.ubuntu.com (arm64) archive mirror was unreachable during the build — repeated Connection failed / Network is unreachable / connection-timeout errors on jammy, jammy-updates, jammy-backports, and jammy-security InRelease fetches. Because apt update couldn't refresh the package index, apt install git reported E: Package 'git' has no installation candidate and the RUN step exited 100. Note the wheel build (stage 470's downstream builds and the Build Wheel stages) succeeded; the vllm build_helper (470) was a pipline stop-style abort tied to this same downstream sanity-image failure.

Implicated commit: b594eb0 (NirWolfer, "ci: add vLLM/SGLang NIXL disaggregation sanity testing", #1777) added the apt install -y curl git step — but the actual trigger is transient network unavailability of ports.ubuntu.com, not that commit.

File: contrib/Dockerfile.vllm:22-25

Suggested fix: This is a transient mirror-connectivity failure — retry the build first. To harden against recurrence: (1) point apt at a reliable internal/artifactory mirror instead of ports.ubuntu.com inside the CI network, and/or (2) make the step resilient, e.g. apt-get update -o Acquire::Retries=5 and retry apt-get install, or bake curl/git into the vllm-nixl-base base image so the PR sanity image doesn't need external apt access at build time. Do not treat this as a source-code defect.

Related: PR #1777 (introduced the apt step); none found for the mirror outage specifically.

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-gpu · commit 97b9bb62

TL;DR: The "Run CPP tests" stage failed because UCX could not initialize CUDA on test node mizu03cuDeviceGetCount() failed: initialization error — which made nearly every UCX test emit the "UCX CUDA support was not found" warning (exit code 42) and caused HardwareWarningTest.NoWarningWhenIbAndCudaSupported to hard-fail. This is an environmental/infrastructure problem on the GPU node, not a code defect in PR #1941; re-run on a healthy node or fix the container's CUDA driver access.

Full analysis

Summary: Both parallel "Run CPP tests" stages (nodes 272 ucx-master and 294 ucx-v1.22.x) exited with code 42 with 67–69 UCX gtests reported failed, and one test genuinely FAILED.

Root cause: On node mizu03, CUDA is not usable inside the test container: UCX logs cuda_ctx.c:52 UCX ERROR cuDeviceGetCount(&num_devices) failed: initialization error, so despite 8 GPUs being visible, UCX's CUDA transport is unavailable. This triggers the ucx_utils.cpp:639 warning "8 NVIDIA GPU(s) were detected, but UCX CUDA support was not found!" on essentially every UCX test — the CI harness treats that unexpected warning as a problem and returns exit code 42. The single true failure, HardwareWarningTest.NoWarningWhenIbAndCudaSupported, requests the ib,cuda UCX transports and throws C++ exception ... "Failed to create UCX context: No such device" because neither transport can initialize. Both matrix legs fail identically and the warning-emitting code (ucx_utils.cpp) hasn't changed since Jan 2026, confirming this is an environment failure, not a regression from PR #1941.

Implicated commit: unknown (not a code regression; environmental CUDA-init failure on the test host). The warning path in src/plugins/ucx/ucx_utils.cpp is unchanged since commit 62d647c, 2026-01-28.

File: src/plugins/ucx/ucx_utils.cpp:639 (and :646) — the warning source; the hard failure surfaces via UCX cuda_ctx.c:52.

Suggested fix: Treat this as a node/infra issue: (1) verify the CUDA driver/libcuda.so and /dev/nvidia* are correctly mounted and the driver version matches inside the enroot/pyxis container on mizu03 (a cuDeviceGetCount "initialization error" typically means the driver isn't reachable or is version-mismatched), then re-run the build; (2) if the node cannot be fixed immediately, drain/replace mizu03 and retry on a healthy GPU node. No source change in PR #1941 is warranted based on this log.

Related: none

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-dl-gpu · commit 97b9bb62

TL;DR: The Docker image build failed because apt-get install gdb gdb-multiarch could not download .deb packages from ports.ubuntu.com ("Network is unreachable" / "connection timed out") — a transient CI network/infra outage, not a code defect; the automatic retry (build stage 168) succeeded.

Full analysis

Summary: Stages "build_helper_dl/aarch64/ucx-master" (124) and "Compiling NIXL Docker Image for DL" (150) failed at apt-get install during the Docker image build with exit code 100.

Root cause: During RUN sudo apt-get update && sudo apt-get install -y ... gdb gdb-multiarch in Dockerfile.gpu-test, apt could reach the metadata (apt-get update succeeded at ~130 kB/s) but every package .deb download failed with "Cannot initiate the connection to ports.ubuntu.com:80 ... Network is unreachable" (IPv6) and "connection timed out" (IPv4 91.189.91.x). This is a transient network/mirror reachability problem in the CI runner, external to the PR. The retried stage 168 built the same image successfully and all downstream tests (Python/Rust/CPP/Nixlbench) passed.

Implicated commit: none — not caused by 97b9bb6 (PR #1941); this is an environmental/infra failure.

File: .ci/dockerfiles/Dockerfile.gpu-test:34-35 (the apt-get install layer where the failure surfaced)

Suggested fix: No code change required — re-run the build; it is already green on retry (stage 168). To reduce future flakiness, harden the apt step against transient mirror outages: force IPv4 and add retries, e.g. sudo apt-get -o Acquire::ForceIPv4=true -o Acquire::Retries=5 update && sudo apt-get -o Acquire::ForceIPv4=true -o Acquire::Retries=5 install -y --no-install-recommends gdb gdb-multiarch, and/or point the runner at a reliable internal apt mirror instead of ports.ubuntu.com.

Related: none

@svc-nixl

Copy link
Copy Markdown
Collaborator

🤖 CI Triage Agentnixl-ci-build-wheel · commit 97b9bb62

TL;DR: The wheel built fine; the "Build sanity image" stage failed because apt update/apt install -y curl git in contrib/Dockerfile.vllm could not reach ports.ubuntu.com (network unreachable / connection timed out), so git had "no installation candidate." This is a transient network/infra failure, not a code bug — retry the build (and/or fix the build node's egress to ports.ubuntu.com).

Full analysis

Summary: Stage 504 "Build sanity image" (docker build -f contrib/Dockerfile.vllm) failed at RUN apt update && apt install -y curl git with E: Package 'git' has no installation candidate.

Root cause: During the Docker build, apt could not fetch the Ubuntu package indices from http://ports.ubuntu.com — every mirror returned "Cannot initiate the connection ... Network is unreachable" (IPv6 2620:2d:4002:1::10a/b/c) and "connection timed out" (IPv4 91.189.91.102/103/104). apt fell back to stale/empty lists ("Some index files failed to download"), so git had no installation candidate and apt install exited 100. The build_helper_vllm/aarch64 FAILURE at stage 366 is the pipeline correctly stopping the downstream helper after this build-image failure — not an independent error. The wheel compile + auditwheel repair completed successfully just before this.

Implicated commit: Not a code regression. The apt install curl git step was introduced in b594eb0 (NirWolfer, "ci: add vLLM/SGLang NIXL disaggregation sanity testing", #1777), but the actual failure is transient network unavailability on the aarch64 build node reaching ports.ubuntu.com.

File: contrib/Dockerfile.vllm:22-25

Suggested fix:

  1. Immediate: re-run the build — this is a transient egress failure to ports.ubuntu.com. If it recurs, fix the aarch64 build agent's network/DNS/proxy so it can reach the Ubuntu ports mirror (the IPv6 route is unreachable and IPv4 times out — likely a missing proxy or blocked egress).
  2. Hardening for contrib/Dockerfile.vllm: make the apt step resilient — e.g. force IPv4 (apt -o Acquire::ForceIPv4=true update), point at an internal/artifactory apt mirror instead of the public ports.ubuntu.com, and add retry logic so a mirror hiccup doesn't fail the whole pipeline.

Related: PR #1941 (this build); apt step added in PR #1777. No existing issue found for the ports.ubuntu.com connectivity failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants