Skip to content

Move NERSC job/refdata transfers from SFAPI tasks to Perlmutter Slurm jobs - #744

Merged
MrCreosote merged 1 commit into
mainfrom
dev-service
Sep 9, 2026
Merged

Move NERSC job/refdata transfers from SFAPI tasks to Perlmutter Slurm jobs#744
MrCreosote merged 1 commit into
mainfrom
dev-service

Conversation

@MrCreosote

Copy link
Copy Markdown
Member

SFAPI async tasks are canceled ~10 minutes after completion, which was becoming a
reliability problem for tracking longer-running transfers. Downloads/ uploads for jobs and refdata now run as xfer QOS Slurm jobs on Perlmutter instead, submitted and polled through the regular Slurm APIs.

Refdata's final destination is a DTN-only-writable filesystem, so refdata downloads still need a DTN hop: the Perlmutter job stages files locally then rsyncs them to the DTN over the existing sshproxy key and writes the JAWS completion file remotely. Regular job I/O has no such constraint and stays entirely on Perlmutter.

Renames NERSC *_task_id fields/log fields/update_state functions to *_job_id, keeping the old fields as deprecated (nullable) for records written before the migration. Removes the now-unused jaws_staging_dir_dtn config/path. Also tracks per-file sizes in the checksum manifest so Slurm wall-time limits can be computed from total transfer size.

jobs

SFAPI async tasks are canceled ~10 minutes after completion, which was
becoming a
reliability problem for tracking longer-running transfers. Downloads/
uploads for jobs and refdata now run as `xfer` QOS Slurm jobs on
Perlmutter instead, submitted and polled through the regular Slurm APIs.

Refdata's final destination is a DTN-only-writable filesystem, so
refdata downloads still need a DTN hop: the Perlmutter job stages files
locally then rsyncs them to the DTN over the existing sshproxy key and
writes the JAWS completion file remotely. Regular job I/O has no such
constraint and stays entirely on Perlmutter.

Renames NERSC *_task_id fields/log fields/update_state functions to
*_job_id, keeping the old fields as deprecated (nullable) for records
written before the migration. Removes the now-unused
jaws_staging_dir_dtn config/path. Also tracks per-file sizes in the
checksum manifest so Slurm wall-time limits can be computed from total
transfer size.
@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 36.49635% with 87 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.39%. Comparing base (c2de2f9) to head (79db931).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
cdmtaskservice/nersc/manager.py 21.17% 67 Missing ⚠️
cdmtaskservice/nersc/remote.py 18.75% 13 Missing ⚠️
cdmtaskservice/jobflows/nersc_jaws.py 0.00% 7 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #744   +/-   ##
=======================================
  Coverage   64.38%   64.39%           
=======================================
  Files          68       68           
  Lines        6953     6971   +18     
=======================================
+ Hits         4477     4489   +12     
- Misses       2476     2482    +6     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MrCreosote
MrCreosote merged commit bde335b into main Sep 9, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant