[https://nvbugs/6435642][fix] Revert killed-worker detection (#16338, #16444)#16522
[https://nvbugs/6435642][fix] Revert killed-worker detection (#16338, #16444)#16522sunnyqgg wants to merge 2 commits into
Conversation
…istration (NVIDIA#16444)" This reverts commit e158837.
…ers (NVIDIA#16338)" This reverts commit e05790a.
📝 WalkthroughWalkthroughThe proxy now detects MPI worker failures through futures and remote-session notifications instead of OS process monitoring. Worker startup readiness payloads omit process identities, and related lifecycle wiring and tests were updated. ChangesMPI worker liveness
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
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 `@tensorrt_llm/executor/proxy.py`:
- Line 269: Update the health-check flow in tensorrt_llm/executor/proxy.py at
lines 269-269 to call _check_remote_worker_death() after _check_mpi_futures()
and return unhealthy when a remote worker death is detected. In
tests/unittest/executor/test_fatal_error_health_check.py at lines 200-214,
mirror this behavior in ConcreteProxyExecutor and add a fake remote-session test
verifying immediate unhealthy status and shutdown.
🪄 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: CHILL
Plan: Enterprise
Run ID: 41cc7089-51d8-4d48-9672-851b5bf27874
📒 Files selected for processing (6)
tensorrt_llm/executor/proxy.pytensorrt_llm/executor/worker.pytensorrt_llm/executor/worker_process_monitor.pytests/integration/test_lists/waives.txttests/unittest/executor/test_fatal_error_health_check.pytests/unittest/executor/test_proxy_fast_death.py
💤 Files with no reviewable changes (2)
- tensorrt_llm/executor/worker_process_monitor.py
- tests/unittest/executor/test_proxy_fast_death.py
| return self._fatal_error is None and not self.doing_shutdown | ||
|
|
||
| if self._check_mpi_workers(): | ||
| if self._check_mpi_futures(): |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
Synchronously detect remote worker death. Remote sessions can have an empty mpi_futures list, so the current health check remains healthy until the monitor loop polls later.
tensorrt_llm/executor/proxy.py#L269-L269: call_check_remote_worker_death()after the future check and return unhealthy when it reports a death.tests/unittest/executor/test_fatal_error_health_check.py#L200-L214: mirror that check inConcreteProxyExecutorand add a fake remote-session test asserting immediate unhealthy status and shutdown.
As per path instructions, coverage is insufficient and needs the concrete test above.
📍 Affects 2 files
tensorrt_llm/executor/proxy.py#L269-L269(this comment)tests/unittest/executor/test_fatal_error_health_check.py#L200-L214
🤖 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 `@tensorrt_llm/executor/proxy.py` at line 269, Update the health-check flow in
tensorrt_llm/executor/proxy.py at lines 269-269 to call
_check_remote_worker_death() after _check_mpi_futures() and return unhealthy
when a remote worker death is detected. In
tests/unittest/executor/test_fatal_error_health_check.py at lines 200-214,
mirror this behavior in ConcreteProxyExecutor and add a fake remote-session test
verifying immediate unhealthy status and shutdown.
Source: Path instructions
|
Closing: superseded — #16444 already stopped the breakage (verified: zero |
Summary
Reverts #16338 and its follow-up #16444 (they form one chain: #16444 only exists to patch #16338's interaction with session reuse, so a clean revert must take both).
Context: #16338 added
isinstance(self.mpi_session, MpiPoolSession)inproxy.py, evaluated on everyLLM()creation. The session-reuse layer (#15777) replaces that module attribute with a factory at test time, so the check raisedTypeError: isinstance() arg 2 must be a typeand broke every bare-LLM test on post-7/15 bases (~8000 failures across 15+ builds / 12+ PRs in two days, including post-merge main). #16444 worked around it with an exclusion-based match.Reverting to restore a known-good
proxy.pybaseline while the interaction is settled properly. The killed-worker detection can re-land on top of #16520, which makes the reuse seam a real type (isinstance-transparent) and removes this hazard class — at that point the naturalisinstance(..., MpiPoolSession)form is safe again.Changes
worker_process_monitor.pyand the proxy/worker hooksTest plan
worker_process_monitor/WorkerProcessIdentity/_register_worker_processesafter reverttests/unittest/executor/test_fatal_error_health_check.pycollects cleanly (68 tests, pre-[https://nvbugs/6435642][fix] detect killed MPI executor workers #16338 form)Summary by CodeRabbit
Bug Fixes
Tests