[Test] Fix OpenUSD thread limit in LEAPP tests - #7229
Conversation
There was a problem hiding this comment.
Isaac Lab Review Bot
The test-only mitigation sets PXR_WORK_THREAD_LIMIT=1 at the shared LEAPP subprocess boundary and adds a focused environment-contract probe plus an isaaclab_rl .skip changelog fragment. The patch is narrowly scoped to the affected integration tests.
- Design and architecture: Applying the OpenUSD limit in
_run_checkedconsistently covers checkpoint creation and export subprocesses before their Python modules initialize, while retaining the existing Kit-side thread limit. This centralization avoids duplicating environment setup across subprocess call sites. - API: The changed constant and helper are private to the test module, so no public API or compatibility surface changes. Copying
os.environbefore overridingPXR_WORK_THREAD_LIMITpreserves the subprocesses' inherited environment. - Implementation: The changed subprocess path injects only the intended variable, reuses the existing thread-limit constant, and retains timeout, output capture, and error reporting behavior. The probe verifies environment propagation rather than OpenUSD behavior itself, but the existing LEAPP export coverage exercises the affected process path.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
Greptile SummaryThe PR applies
Confidence Score: 5/5The PR appears safe to merge, with the startup environment override consistently applied to every subprocess in the LEAPP export flow. All relevant checkpoint and export children run through the modified helper, which preserves the parent environment while setting the required OpenUSD thread limit before child initialization. Important Files Changed
Sequence DiagramsequenceDiagram
participant Test as LEAPP pytest
participant Helper as _run_checked
participant Child as LEAPP child process
participant USD as OpenUSD
Test->>Helper: checkpoint/export command
Helper->>Child: "start with PXR_WORK_THREAD_LIMIT=1"
Child->>USD: import and initialize
USD-->>Child: use single-threaded parsing
Reviews (1): Last reviewed commit: "Limit OpenUSD threads in LEAPP tests" | Re-trigger Greptile |
## Description Bundled backport to `release/3.0.0` to reduce CI load. Source PRs reviewed for this bundle: - #7020 — already represented in `release/3.0.0`; its cherry-pick was empty, so no duplicate commit was added. - #7207 - #7229 - #7227 - #7231 - #6762 - #7208 - #7168 — backports the current PR head while the source PR is still open. - #7157 - #7216 ## Type of change - Bug fix - Documentation update - Workflow / packaging update ## Checklist - [x] I have read and understood the contribution guidelines. - [x] I have run formatting checks. - [x] Documentation changes are included. - [x] Documentation build generates no new warnings. - [x] Focused regression coverage passed. - [x] Required changelog fragments are included by the source PRs. - [x] Contributors are already listed or included by the source PRs. --------- Signed-off-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com> Co-authored-by: Richard Lei <rilei@nvidia.com> Co-authored-by: Mustafa Haiderbhai <mhaiderbhai@nvidia.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Description
Fix the recurring
isaaclab_rlLEAPP export failure forIsaac-Reach-Frankaon Newton MJWarp.The existing workaround passes
limit_cpu_threads=1toSimulationApp, but the failing stack is in OpenUSD's concurrent parser and OpenUSD readsPXR_WORK_THREAD_LIMITduring process startup. Set that environment variable on every LEAPP child process so USD is serialized before any USD module is imported, while retaining the existing Kit-side limit.This keeps the current task and Newton backend coverage. It also adds a deterministic subprocess probe for the environment contract.
Observed in unrelated PRs:
OpenUSD documents
PXR_WORK_THREAD_LIMIT=1as single-threaded mode: https://openusd.org/dev/api/thread_limits_8h.htmlType of change
Validation
uv run --extra sb3 --extra skrl --extra rl-games --extra leapp python -m pytest source/isaaclab_rl/test/export/test_leapp_export_flow.py -k 'openusd_thread_limit or rsl_rl-Isaac-Reach-Franka' -vv(2 passed)uv run isaaclab -fuv run python tools/changelog/cli.py check developChecklist
uv run isaaclab -fCONTRIBUTORS.md