Bug #21989
closedSpurious warning "X-Keep-Storage-Classes header not supported by the cluster" when arv-put interacts with keepstore service
Description
Symptom:¶
The behavior of arv-put
is inconsistent depending on whether it is talking to the keepstore service directly or via keep-proxy. When it is using keepstore (for example, when running on the same host as the server), running arv-put [input_files...]
command generates a spurious message like the following:
2024-07-08 13:45:14 arvados.keep[10196] WARNING: X-Keep-Storage-Classes header not supported by the cluster
Running the same command on a host using keep-proxy will not trigger this problem.
The expected behavior is that arv-put
should behave consistently no matter interfacing with keepstore or keep-proxy, and in particular it should not erroneously complain about missing storage-class support.
Cause:¶
This issue stems from how keepstore and keep-proxy generate the X-Keep-Storage-Classes-Confirmed
(and possibly other related) HTTP header differently.
Keep-proxy writes the header's value as a comma-separated string of substrings in the key=value
format, e.g.
X-Keep-Storage-Classes-Confirmed: default=1, hot=1
See: source:services/keepproxy/keepproxy.go@d9592ca6a1a9da3adb5c7a5b8201765dad3af93b#L506
However, keepstore decides that the separator should be a semicolon:
x-keep-storage-classes-confirmed: default=1; hot=1
See: source:services/keepstore/router.go@d9592ca6a1a9da3adb5c7a5b8201765dad3af93b#L131
Therefore the arv-put
client can't parse the output of keepstore and decides that the header is as good as missing; see: source:sdk/python/arvados/keep.py@d9592ca6a1a9da3adb5c7a5b8201765dad3af93b#L814
Suggested solution:¶
Settle on the comma, based on the HTTP semantics specification (RFC 9110). In this way, the client program doesn't need any modification.
Updated by Zoë Ma 6 months ago
Suggested patch as GitHub PR: https://github.com/arvados/arvados/pull/250
Updated by Peter Amstutz 6 months ago
- Target version set to Development 2024-07-24 sprint
Updated by Tom Clegg 6 months ago
- Status changed from New to In Progress
21989-headers @ 2f891cb46465e0f9109cbaf74d5fa3f295d21c1c -- developer-run-tests: #4332
Updated by Tom Clegg 6 months ago
21989-headers @ 2bd6e5028072c3210e654381e62af8a1e2ff04d7 -- developer-run-tests: #4333
Updated by Peter Amstutz 6 months ago
- Assigned To changed from Peter Amstutz to Tom Clegg
- Status changed from In Progress to New
Updated by Tom Clegg 6 months ago
- Status changed from In Progress to Resolved
Applied in changeset arvados|4ee64f8cfe6856c8a7962c4324a5b8bf13931bbf.