Project

General

Profile

Actions

Bug #21989

closed

Spurious warning "X-Keep-Storage-Classes header not supported by the cluster" when arv-put interacts with keepstore service

Added by Zoë Ma 6 months ago. Updated 4 months ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
Keep
Story points:
-
Release:
Release relationship:
Auto

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.

Actions #1

Updated by Zoë Ma 6 months ago

Suggested patch as GitHub PR: https://github.com/arvados/arvados/pull/250

Actions #2

Updated by Peter Amstutz 6 months ago

  • Target version set to Development 2024-07-24 sprint
Actions #3

Updated by Peter Amstutz 6 months ago

  • Assigned To set to Peter Amstutz
Actions #4

Updated by Tom Clegg 6 months ago

  • Status changed from New to In Progress
Actions #6

Updated by Peter Amstutz 6 months ago

  • Assigned To changed from Peter Amstutz to Tom Clegg
  • Status changed from In Progress to New
Actions #7

Updated by Tom Clegg 6 months ago

  • Status changed from New to In Progress
Actions #8

Updated by Tom Clegg 6 months ago

  • Status changed from In Progress to Resolved
Actions #9

Updated by Peter Amstutz 4 months ago

  • Release set to 70
Actions

Also available in: Atom PDF