docs: remote files after the adversarial review

CHANGELOG, the clawhdf5-remote and h5rs READMEs and the remote-files
known issues: redirect rules, scaled timeouts (min_speed), URL redaction,
claimed lengths never allocated (download, --max-download), a 200 for a
small file accepted, and ObjectStoreStorage from any thread.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
osobh
2026-09-26 18:37:05 -05:00
co-authored by Claude Opus 5.5
parent efb88f94e3
commit 0e98ffc498
4 changed files with 53 additions and 6 deletions
+16 -4
View File
@@ -829,11 +829,23 @@ cache, but:
ETag (`W/"…"`) cannot be sent as `If-Match`, so it counts as none.
- **Credentials:** HTTP takes extra headers (`HttpOptions::headers`, e.g.
`Authorization`); `h5rs` has no option for them. The cloud stores read
credentials from the environment only.
credentials from the environment only. Messages and `Debug` output show
URLs through `redact_url` (no userinfo, query values `REDACTED`);
`HttpStorage::url()` returns the URL as given and must not be logged.
- **Redirects:** at most `HttpOptions::max_redirects` (5) per request,
never from `https` to `http`, and the custom headers are not sent once a
redirect leaves the URL's origin. The redirect target is not remembered:
every request of a redirected file costs its hops again.
- **Timeouts:** ureq has no idle timeout, only a total one for the body,
so the body's budget is `timeout + size / min_speed` (30 s + 16 KiB/s
by default). A connection that stalls mid-body is detected only when
that budget runs out (94 s for a 1 MiB block, 9 min for an 8 MiB run).
- Each `ObjectStoreStorage` owns a tokio runtime with two worker threads.
- `h5rs check` downloads a remote file whole (it validates every byte), and
a URL cannot carry a `FILE/OBJECT` suffix; `h5rs` uses the default cache
settings.
A read called from inside another runtime blocks that runtime's thread
for its duration (it works, but `spawn_blocking` is the better place).
- `h5rs check` downloads a remote file whole (it validates every byte), up
to `--max-download` (1 GiB by default), and a URL cannot carry a
`FILE/OBJECT` suffix; `h5rs` uses the default cache settings.
- The zero-copy methods and `File::as_bytes` are unavailable on a remote
file (see the range-read limits above).