On this page

How the storage verbs refuse

How the storage verbs refuse

stado storage put|get|objects|rm|url|cp|mv|endpoint|abort|cat|ls|stat|copy|backup|verify|archive refuse with the causes of stado.storage.objects (stado errors show stado.storage.objects prints each with its fix), beside the store's own (stado.store), the file operations' (stado.files) and the object API client's (stado.objects.api, below):

cause when exit
object-exists a create-only write (--if-absent, every release object) meets other bytes 1
write-unconfirmed the store took a write and did not give the same bytes back 69
object-absent the store answered and holds nothing at that key 1
release-immutable a release object asked to be deleted, replaced or compared-and-swapped 1
retire-needs-api a sources input retired where no object API is configured 1
api-unconfigured neither STADO_API_URL nor storage.stado.url names the object API 1
origin-invalid no one public origin publishes releases, or it is not a URL 1
presence-refused the store answered that this reader may not ask whether the object exists; its existence is unknown 1
presence-unavailable the store answered that it cannot say now; asking again may answer 69
presence-unreachable nothing answered whether the object exists 69
claim-invalid a release claim in the store is no claim, or one about another release 69
coordinate-invalid a release named out of <product>/<version>/<platform> form 2
release-unpublished the release store holds no such object 1
pin-absent a declaration pins an object the store answers is absent 1
release-public-only url --presign of a release object, endpoint of a release namespace 2
release-not-copied cp or mv of a release object 2
namespaces-differ cp or mv across namespaces 2
same-object cp or mv of an object onto itself 2
metadata-invalid custom metadata outside unique non-empty stado-* fields 2
prefixes-unlisted ls could not list some canonical prefixes; their counts are unknown 69
release-prefix-listed ls of a release-governed stado:// prefix 2
namespace-invalid endpoint of a namespace that is not lowercase letters, digits and - 2
backup-unconfigured backup with no disaster-recovery store 1
backup-not-a-replica the recovery store is the primary or on its disk 1
same-store copy or verify of a store with itself 2
addressing-differs copy between a namespace-qualified and a bare-key store 1
copy-incomplete some objects did not copy; re-running continues from the sentinel 69
stores-diverge verify found the stores holding different objects 69
archive-limits-undeclared archive with no storage.archive_limits 1
archive-source-invalid archive of a file or a link 2
archive-exists archive over a path that already holds something 1
archive-output-invalid archive into its own source, or onto a filesystem root 2

tests/storage/objects/ provokes twenty of them through the real binary against stores of its own (one object's causes in object.rs, whole stores' and archives' in stores.rs); a refused write leaves what was stored as it was.

The object API client

Every verb that reads or writes through the Stado object API (STADO_API_URL, or storage.stado.url where the queue backend is the object API) also meets the causes of stado.objects.api; stado errors show stado.objects.api prints each with its fix:

cause when exit
origin-out-of-form the origin is no URL, plain HTTP to a host that is not loopback, embeds credentials, or carries a query or fragment 1
release-origin-undeclared a release read with neither STADO_API_URL nor api.url 1
release-origin-plain a release delivered from a plain-HTTP origin that is not the target's own store 1
base-unusable the origin cannot carry a path 1
ca-not-pem storage.stado.ca_file is not a PEM certificate 1
token-undeclared none of STADO_API_TOKEN, STADO_API_TOKEN_FILE, storage.stado.token_file 1
token-not-unicode STADO_API_TOKEN or STADO_API_TOKEN_FILE is not UTF-8 1
token-file-not-regular the credential file is a directory, a link or a device 1
token-file-open others than its owner may read or write the credential file 1
token-file-malformed the credential file holds no bearer, or more than one line 1
publisher-unresolved a release-governed target that resolves to no one publisher 1
publishers-invalid release_api.publishers is not valid 1
publisher-undeclared release_api.publishers declares no publisher for the release 1
publisher-token-absent the publisher's vault item carries no token field 1
publisher-token-empty the publisher's bearer is empty 1
publisher-token-header the publisher's bearer carries a newline or control byte 1
address-held this host's resolver holds the object API's address unanswered 69
resolver-unreadable the resolver's state for that address cannot be read 69
connection-refused the object API refused the connection 69
unauthorized HTTP 401, 403 or 407: the credential presented is refused 1
not-found HTTP 404 or 410 1
timed-out HTTP 408 or 504 69
rate-limited HTTP 429 69
unsupported HTTP 501 or 505: the object API is another Stado 1
unavailable any other HTTP 5xx 69
refused any other refusal 1
answer-malformed an answer out of the object API's shape: not JSON, inconsistent, a bad Content-Range, a whole answer to a range, a redirect without Location 69
answer-too-large an answer declares more bytes than this machine addresses 69
body-broken a body stopped arriving before its end 69
redirect-loop a release redirect returns to an address already asked 69
threads-unreadable how many parts to send at once cannot be read from the host 69
too-many-parts an object needs more parts than an upload's part names carry 1

tests/storage/api.rs provokes the origin, credential and refused-connection causes through the real binary; a refused read writes nothing.

Source: this website