feat: reconcile persisted Slurm state - #913
Conversation
|
28e7efe to
1300bc0
Compare
a3eac05 to
37ed0f4
Compare
1300bc0 to
a4f4035
Compare
37ed0f4 to
b17e493
Compare
a4f4035 to
91129f8
Compare
91129f8 to
57e9671
Compare
cf749b6 to
10353c8
Compare
57e9671 to
b00ccb1
Compare
b00ccb1 to
506de48
Compare
|
One more cross-layer gap: |
|
I found a provenance contract mismatch in the current base. The client produces a digest from the full per-attempt payload, but the finalizer accepts only |
|
Addressed the workspace-lease feedback from #913 (comment) in eec0b47. The allocation controller now acquires the existing shard dataset-workspace lease before client generation starts and holds it through process completion, result validation, and durable attempt-result binding. The regression asserts that both generation and publication occur while the lease is active and that the lease is released afterward. Validation: runtime controller 17 passed; full Slurm suite 1,274 passed; make check-slurm and git diff --check passed. |
|
Addressed the provenance feedback from #913 (comment) in eec0b47. ClientWorker now emits the stable resolved-plan SHA-256 required by winner finalization instead of an attempt-specific digest. Added a real ClientWorker → SlurmStateWriter publication → winner-finalization regression, plus the direct producer assertion. Validation: client worker 18 passed; full Slurm suite 1,274 passed; make check-slurm and git diff --check passed. The downstream worker-to-collection continuation will be covered in child PR #915, where collection is owned. |
|
Addressed the unrequeued-PREEMPTED liveness finding from #913 (comment) in final commit |
f38f7a1 to
b4af3be
Compare
b4af3be to
98b7bf7
Compare
b1924e0 to
8139aa0
Compare
Persist normalized scheduler observations and compose fresh-process run, shard, attempt, readiness, generation, and winner status. Preserve bounded accounting lag and immutable terminal evidence for status and benchmark refresh consumers. Part of #869 Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com>
Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com>
Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com>
8139aa0 to
6fedd31
Compare
Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com>
* feat(slurm): add retry and deterministic collection Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> * fix(slurm): recover ambiguous submissions Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> * fix(slurm): preserve collection snapshots Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> * fix(slurm): bind retries and collection ownership Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> * fix(slurm): preserve scheduler path on retry Render retry allocations with the same profile-configured Slurm command path as initial generation attempts so cluster-local srun and scontrol binaries remain discoverable. Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> * fix(slurm): isolate attempt observation clocks Apply persisted timestamp floors per scheduler identity so a clock-ahead sibling cannot expire another attempt's preemption-requeue window. Persist each active attempt with its own reconciled observation time. Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com> --------- Signed-off-by: Nabin Mulepati <nmulepati@nvidia.com>
andreatnvidia
left a comment
There was a problem hiding this comment.
Nice follow-through on the preemption edge cases. The latest change brings the public status and cancel paths onto the same bounded reconciliation flow. This looks good to merge.
📋 Summary
Reconcile a persisted Slurm run from normalized active-queue and accounting observations in a fresh process. The status composition preserves bounded accounting lag and immutable terminal evidence, validates readiness and generation records, and refuses to report a winner when scheduler evidence contradicts it.
🔗 Related Issue
Part of #869 (869#3).
🔀 Merge Order
This PR is the direct observation/reconciliation follow-up on
feat/slurm-execution, restacked ontoff766b14after #929 merged. The restack drops the resolved-plan provenance, one-node dataset lease/finalization, and launcher-submission work now owned by #929. Child PR #915 remains based on this branch and must stay open.🔄 Changes
squeue/sacctclient contract, including array-task and ordinary collection-job identities.SlurmStateReconciler.PREEMPTEDandREQUEUEDobservations transitionable. Queue-absent accountingPREEMPTEDevidence uses a fixed persisted requeue-visibility deadline, allowing a legitimate requeue to reappear before unrequeued work becomes terminal failure.status()andcancel()lifecycle projection through the same persisted reconciler so unrequeued preemption cannot remain active after that fixed deadline.🧪 Testing
make check-slurm— 176 files formatted and lintedmake test-slurm-wheel-install— CLI overhead 0.006sgit diff --check✅ Checklist
Description updated with AI