Skip to content

Release: develop -> main (maap-py v5, optional File/Directory inputs, PGT token hardening) - #24

Merged
sujen1412 merged 10 commits into
mainfrom
develop
Oct 20, 2026
Merged

sujen1412 merged 10 commits into
mainfrom
develop

Conversation

@sujen1412

Copy link
Copy Markdown
Collaborator

Promotes develop to main for the next release (previous tag: v1.1.0).

Fixes included

Verified

UAT: mocca-v29601 (optional modis03_file_3 / modis06_file_3 omitted) ran to completion on the develop image: optional inputs skipped, all STAC inputs staged, PGE succeeded, stage-out produced the outputs. Unit tests: 77 pass.

Known follow-ups (not in this release)

  • Per-asset download errors in stage_in are still only printed (e.g. s3:// alternate assets log No connection adapters).
  • The CI test step in .github/workflows/docker-build.yml installs maap-py unpinned; it should match the 5.1.0 pin.

After merge

Tag the release (suggest v1.2.0) to publish the versioned image, then point the OGC executor config at it.

sujen1412 and others added 10 commits October 12, 2026 12:58
Optional File?/Directory? inputs left empty at submission are now omitted
from inputs.yml instead of crashing on os.path.basename(None) or
attempting STAC staging from an empty URI. Empty required File/Directory
inputs fail early with a clear error.

Closes #12
fix(create_inputs): skip empty optional File/Directory inputs
ci: bump GitHub Actions to Node 24 versions and pin ubuntu-24.04
test: fix stale stage_in tests, pin pystac, run tests in CI
* Create MAAP client lazily in stage_in

Avoids the /api/environment/config call at import time for jobs with no
file inputs (fixes #10).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHifpuJ7Q83CrNkchsbuRj

* test(stage_in): fix duplicate self_href test left by merge, use _get_maap patch

---------

Co-authored-by: Claude <noreply@anthropic.com>
* fix: add timeout, retry and clear errors to get_maap_pgt_token

- 5s connect / 30s read timeout; up to 6 attempts with exponential
  backoff and jitter on connect errors, timeouts and 5xx
- 4xx and malformed responses fail immediately with PgtTokenError
- on failure, message goes to stderr (stdout is captured into MAAP_PGT),
  _alt_error.txt is written for the HySDS job `error` field, and the
  script exits 78; dps_wrapper.sh propagates the exit code
- resolve MAAP_API_HOST at call time instead of import time

Closes #8

* refactor: use urllib3 Retry for get_maap_pgt_token retries

Replace the hand-rolled retry loop with a requests session mounting an
HTTPAdapter(Retry(...)): exponential backoff with jitter (backoff_jitter
needs urllib3>=2), retries on connect errors, timeouts and 5xx. Pin
urllib3>=2 in the Dockerfile and CI. Retry behaviour is tested against a
local flaky HTTP server.
Fail with exit 78 and _alt_error.txt when _job.json has no username or
the API returns an empty/non-string session_key, instead of printing
nothing (or an empty token) and letting the container start.

Refs #9
…#23)

- stage_in: call download_granule (downloadGranule is a raising stub in
  maap-py v5, so every asset download failed with an unexpected
  'online_access_url' keyword error)
- pin maap-py==5.1.0 in environment.yaml and the Dockerfile
- create_inputs: retry transient HTTP errors (e.g. CMR 503) with backoff
  and a timeout, and raise a clear error instead of an AttributeError when
  a STAC input cannot be loaded
- tests: maap-py signature contract test, retry and download_granule tests
@sujen1412
sujen1412 merged commit a90e1e9 into main Oct 20, 2026
4 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.

create_inputs.py: skip empty optional File/Directory inputs instead of crashing

1 participant