Skip to content

Merge from development - #44

Merged
oskaresparza merged 5 commits into
stagingfrom
development
Aug 27, 2026
Merged

Merge from development#44
oskaresparza merged 5 commits into
stagingfrom
development

Conversation

@oskaresparza

Copy link
Copy Markdown
Collaborator

No description provided.

blikij and others added 5 commits August 25, 2026 14:18
…s words

Pairs with EEALakeHouse@46cc872, where the server learned to refuse a transfer
its storage self-test has already shown will fail: `503` with
`{"error": "storage_unavailable"}` and a message written for whoever is about to
read it — that DDS cannot write to the S3 behind the catalog, that this is a
dependency problem for an administrator rather than anything the caller did, and
that nothing has been uploaded.

Arriving here as a bare `IngestApiError`, that message came out wrapped as "DDS
ingest API error 503 on POST /api/v1/ingest/begin: …", which buries the
explanation behind plumbing and reads, in a notebook traceback, like the caller
broke something.

* `StorageUnavailableError` — a subclass, so existing `except IngestApiError`
  handling still catches it — raised on DDS's own `storage_unavailable` slug and
  nothing else. A 503 from a proxy or load balancer in front of the service has
  no such body and stays a plain `IngestApiError`, rather than being mislabelled
  as a storage fault.
* Its `str()` is the server's message verbatim; the class name carries what the
  prefix used to. `status_code`, `message` and `where` stay available for code
  that handles it programmatically.
* `_error_slug()` reads the machine-readable half of the `{error, message, path}`
  body, which `_error_message()` was throwing away.

`FolderIngest.run()` therefore stops at `begin` with an error that explains
itself, having uploaded nothing — the point of the server-side pre-flight, and
what the new folder test asserts.

51 passed; mypy clean on the changed modules.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HFZRQnGnYw8mBCVsp9seds
feat(dds_ingestion): tell the user when DDS cannot write to S3, in it…
@oskaresparza
oskaresparza merged commit ec5361f into staging Aug 27, 2026
10 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.

2 participants