Repository navigation
fix(ci): retry Brev lookups that run before allocation - #1895
Merged
chaofengw-nv merged 1 commit intoOct 29, 2026
Merged
Conversation
Between Oct 16 and 29, 32 dev-lane runs failed on Brev control-plane errors before or without a usable VM: a catalog that did not list g6.4xlarge exactly once for about 40 hours, login 503s, a mismatched TLS certificate and an unavailable organization check. Each failed the run on its first error. - Retry brev login five times, 30 to 120 seconds apart, in the GPU and cleanup jobs. - Retry the organization check (HTTP 429, 5xx or no response) and the catalog search up to four times, 60 to 180 seconds apart. Both run before the create request, so a retry cannot allocate a second VM. - Report how many offers the catalog returned and from which provider, so an empty catalog can be told apart from a duplicated one. Signed-off-by: chaofengw <chaofengw@nvidia.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
4 tasks done
3 of 11 tasks
zhenshanx-nv
added a commit
to zhenshanx-nv/TensorRT-Model-Connect
that referenced
this pull request
Oct 29, 2026
Community GPU CI has seen 30+ failures in two weeks from Brev catalog searches returning empty or duplicated results for the standard g6.4xlarge type. The existing preflight retries (NVIDIA#1895) give up if capacity never returns. Retry once against g6e.4xlarge, the same type already used by the manual GPU_PROFILE=large qualification lane, after the primary type's retries are exhausted on a capacity-shaped failure. A deterministic rejection (bad disk, wrong provider, credentials) is never retried. Signed-off-by: Zhenshan Xie <zhenshanx@nvidia.com>
zhenshanx-nv
added a commit
that referenced
this pull request
Oct 30, 2026
…#1906) Community GPU CI has seen 30+ failures in two weeks from Brev catalog searches returning empty or duplicated results for the standard g6.4xlarge type. The existing preflight retries (#1895) give up if capacity never returns. Retry once against g6e.4xlarge, the same type already used by the manual GPU_PROFILE=large qualification lane, after the primary type's retries are exhausted on a capacity-shaped failure. A deterministic rejection (bad disk, wrong provider, credentials) is never retried. Signed-off-by: Zhenshan Xie <zhenshanx@nvidia.com>
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.
Background
Between Oct 16 and Oct 29, 32 Dev Community CI runs (on
ci/developerat3a6a6562d) failed on Brev control-plane errors before any test ran. None of them was caused by the PR under test:Brev catalog must contain exactly one requested instance typebrev loginreturned503 Service UnavailableBrev cleanup request is unavailable; organization check failedbrev loginreceived a mismatched TLS certificateBrev environment setup failedbrev login, the organization check and the catalog search each fail the run on their first error. The catalog error also does not say whether the type was missing or listed more than once, which need different fixes. Example runs: 39451003914 (catalog), 39847833005 (login 503), 39454247954 (TLS), 40603625522 (organization check).Exit Criteria
brev loginin the GPU and cleanup jobs survives a few minutes of Brev unavailability.main), a Nebius fallback when AWS has no capacity (it changes the GPU from L4 to L40S), and failures after the VM exists.Implementation
.github/workflows/community-ci.yml: bothLog in to Brevsteps retry five times, 30, 60, 90 and 120 seconds apart, then fail with an annotation.tools/brev_exec.py:PreflightUnavailable(ProvisionError)for read-only lookups that failed before the create request._allocation_organizationraises it for HTTP 429 and 5xx. Other non-200 responses keep raisingProvisionErrorand are not retried._select_instanceraises it when the search fails, returns invalid JSON, or lists the requested type zero or several times. The message now includes the number of matching offers, their providers and the catalog size, for examplefound 2 g6.4xlarge offers from aws, aws among 2._preflightretries those lookups andInventoryErrorup toPREFLIGHT_ATTEMPTS = 4times, 60, 120 and 180 seconds apart, within the provisioning deadline.provision()uses it for the organization check and the catalog search, which both run beforecreate_startedis set..github/community-ci.md: documents the new retries next to the existing create-429 policy.Change categories
Validation
Commands and Results
All commands ran on CPU with
CUDA_VISIBLE_DEVICES=''andPYTHONPATH=core/builder:apps/benchmark:..python -m pytest -q -n 8 tools/tests/test_community_gpu_ci.py tools/tests/test_community_ci.py tools/tests/test_community_gpu_lease.py: 1249 passed, 1 skipped.New tests in
tools/tests/test_community_gpu_ci.py:With
tools/brev_exec.pyreverted, 7 of these cases fail; only the disk-mismatch check passes.python -m pytest -q -n 8 tools/tests/test_architecture.py tools/tests/test_family_impact.py tools/tests/test_public_source_hygiene.py tools/tests/test_new_ci.py tools/tests/test_pr_metadata.py: 154 passed.ruff checkandruff format --checkon the changed Python files: clean.python tools/legal_headers.py --check: 0 findings.git diff --check: clean.The
Log in to Brevscript, extracted from the workflow and run with a stubbrevandsleep: two failures then success exits 0 after sleeping 30 and 60 seconds. Five failures exit 1 after sleeping 30, 60, 90 and 120 seconds.Hardware, Environment, and Revisions
Base
ci/developerat3a6a6562d. Python 3.12 on a Linux x86_64 host; no GPU was used.Not Run / Remaining Gaps
FakeBrevandFakeCleanupAPIfixtures and a stub CLI.actionlintrun; the workflow file was parsed with PyYAML.Contributor Self-Review
Notes For Future Readers
_preflightand the two call sites inprovision(), then_select_instanceand_allocation_organization, then the workflow and the tests.--attempts 1and the one-allocation rule are unchanged; the new retries stop beforecreate_startedis set.virtualenv==21.14.6in the shared GPU base lock, which needspackaging>=26.3, while NeMo'slightning<=2.4.0needspackaging<25. Both need separate changes.Risk level
Retries only repeat read-only lookups and an idempotent login, and only before any create request. The worst case is that a run reports the same infrastructure failure a few minutes later.