Add Chrysalis E3SM v3 archive ingestion - #281
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a Chrysalis-specific, targeted E3SM v3 archive ingestor that filters to a
static list of documented v3 simulations, scans archive snapshots from 2024-01,
packages each selected case, and uploads via the remote
/api/v1/ingestions/from-hpc-upload route (without using whole-snapshot
checkpoints).
Changes:
- Introduces
chrysalis_v3_archive_ingestor.pyand a v3 reconciliation summary
that fails the run when expected simulations are missing/transient/incomplete. - Extends the shared archive ingestion plumbing to support optional case-path
filtering, optional archive checkpointing, and a run-report object for
specialized runners. - Adds operator documentation and dedicated regression tests for the targeted
v3 backfill behavior.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| docs/deploy/hpc-api-token-authentication.md | Documents Chrysalis v3 backfill workflow and upload endpoint usage. |
| docs/architecture/metadata-ingestion.md | Explains how the v3 backfill specializes remote automated upload mode and why checkpointing is disabled. |
| backend/tests/features/ingestion/test_chrysalis_v3_archive_ingestor.py | Adds regression coverage for v3 filtering, forced config, checkpoint bypass, and reconciliation outcomes. |
| backend/app/scripts/README.md | Documents the new Chrysalis v3 backfill script entry point and operational expectations. |
| backend/app/scripts/ingestion/nersc_archive_ingestor.py | Adds IngestorRunReport, configurable env overrides, and optional case filtering + report capture during archive scans/ingest. |
| backend/app/scripts/ingestion/hpc_upload_archive_ingestor.py | Adds hooks for case filtering, disabling archive checkpointing, and emitting run-report details. |
| backend/app/scripts/ingestion/chrysalis_v3_archive_ingestor.py | Implements the targeted v3 archive scan/upload runner with reconciliation logging and non-checkpoint behavior. |
| DRY_RUN=true \ | ||
| uv run python -m app.scripts.ingestion.chrysalis_v3_archive_ingestor |
|
Need clarification on what directories to process v3 data. The v3 simulations were ran on Chrysalis, which means the performance data is there too. On the E3SM Data Docs, there are HPSS links to the output as well. We can either
|
Hey @chengzhuzhang, can you clarify where we should be ingesting v3 data? |
b2659df to
ce5fed1
Compare
2f1f053 to
20dcbe3
Compare
LCRC E3SM V3 dry-run results
A dry run completed successfully against the Chrysalis archive.
The runner found every expected V3 simulation, completed traversal, and found no transient or invalid execution metadata. The incomplete executions were excluded from submission as intended. Reproduce on ChrysalisRun from the repository's Run from the repository's git checkout devops/280-v3-ingestion
git rev-parse HEAD
uv syncCreate a local credentials file outside the repository: Optionally set OLD_PERF_ARCHIVE_ROOT when the archive is mounted somewhere other than the documented Chrysalis default. Run the dry run: Confirm the final v3_ingestion_summary reports:
Live run
Then restore |
LCRC E3SM V3 single-case ingestion validation
Live run
The selected case,
SimBoard page: https://simboard-dev.e3sm.org/cases/6f05ef88-79fc-45b8-be41-7ca28b26d69d Post-ingestion dry run
The follow-up dry run confirms that the uploaded executions are recognized as existing and will not be submitted again. |
LCRC E3SM V3 full ingestion run
Live run
All remaining qualified V3 cases were ingested successfully. Post-ingestion dry run
The final dry run confirms every qualified V3 execution is recognized as existing and will not be submitted again. |
|
@TonyB9000 @chengzhuzhang @rljacob @wlin7 @golaz The remote V3 ingestion path from LCRC to NERSC worked end-to-end, including archive creation and upload. This successfully processed 422 cases and 629 executions, giving us confidence that the same workflow should work for testing against both the staging and archive directories. More details above. You can view the results on the SimBoard UI here: https://simboard-dev.e3sm.org/cases (filter on Chrysalis, optionally Case Group set to v3.LR) |
|
@tomvothecoder I have had the chrysalis collection running continuously for the past 20 hours, launching every 15 minutes. In the listing below, the first two runs were "MAX=1" and can be ignored. The next launch (MAX=unlimited) took just over two hours (log size 3996606) and you can see that every 15 minutes cron would try to start up collection and abort with Here are the last lines of the 2 hr run. I am unsure how to interpret these numbers: I am thinking of issuing n "archive" run - but wanted feedback on this first, in case something is amiss. |
|
@TonyB9000 I think you meant to post your latest comment above in #169. I'll reply there. |
Description
Adds a targeted E3SM v3 archive ingestor that runs on Chrysalis and uploads cases to SimBoard through the remote HPC endpoint. This is required because v3 performance data is stored on Chrysalis rather than a filesystem accessible from NERSC.
2024-01Steps
performance_archive<timestamp>sub-directories to discover matching case names.Checklist
Deployment Notes (if any)
Run dry-run reconciliation on Chrysalis with an externally reachable
SIMBOARD_API_BASE_URLand service-account token before enabling uploads.