Errors
Every Storage error carries a stable numeric error_code and a machine-readable
reason. This page lists the logical error codes Storage can return, across its domain
groups (8_3xx) and infrastructure groups (8_6xx).
For the full error envelope (the google.rpc.Status shape, the reason and
metadata fields, and how codes are structured) see Errors.
Storage codes begin with 8 (for example 8300002, read as 8_300_002:
service, group, specific error). The wire value is always the flat integer; you
can match on either error_code or reason, both are stable.
The Status column is the canonical gRPC status the error maps to, which the
gateway renders as the matching HTTP status (see the
status codes table).
| Code | Reason | Status | Description |
|---|---|---|---|
8300001 | NON_EMPTY_BUCKET_DELETION | INVALID_ARGUMENT | Cannot delete a non-empty bucket. |
8300002 | BUCKET_NOT_FOUND | NOT_FOUND | Bucket not found. |
8300003 | BUCKET_ALREADY_EXISTS | ALREADY_EXISTS | A bucket with this name already exists. |
8300004 | BUCKET_NAME_VALIDATION | INVALID_ARGUMENT | Bucket name must be 3 to 63 characters, use lowercase dot-separated labels with hyphens only inside labels, and not be an IPv4 address. |
8300005 | BUCKET_WORKSPACE_ID_NOT_VALID | INVALID_ARGUMENT | Bucket workspace ID is required. |
8300006 | BUCKET_LOCATION_NOT_VALID | INVALID_ARGUMENT | Bucket location is required. |
8300007 | BUCKET_DEFAULT_STORAGE_CLASS_NOT_VALID | INVALID_ARGUMENT | Bucket default storage class ID is not valid. |
8300008 | BUCKET_PROVIDER_VALIDATION_NOT_IMPLEMENTED | INVALID_ARGUMENT | Bucket validation is not yet implemented for this provider. |
8300009 | BUCKET_NOT_MARKED_FOR_DELETION | FAILED_PRECONDITION | Bucket must be marked for deletion before removal. |
8300011 | BUCKET_RECONCILE_STATE_UNKNOWN | INVALID_ARGUMENT | Bucket reconcile state code is not recognised. |
8300012 | BUCKET_SIZE_NOT_VALID | INVALID_ARGUMENT | Bucket size must be a real, non-negative byte count. |
8300013 | BUCKET_DESCRIPTION_NOT_VALID | INVALID_ARGUMENT | Bucket description must be at most 1024 characters and carry no control or bidirectional characters. |
8300014 | BUCKET_DISPLAY_NAME_TOO_LONG | INVALID_ARGUMENT | Bucket display name must not exceed 128 characters. |
8300015 | BUCKET_DISPLAY_NAME_NOT_VALID | INVALID_ARGUMENT | Bucket display name must not contain control characters. |
8300016 | BUCKET_IDENTITY_IS_IMMUTABLE | FAILED_PRECONDITION | A bucket workspace and name are immutable. |
8300017 | MANAGED_BUCKET_DELETION_REFUSED | FAILED_PRECONDITION | A bucket the platform manages cannot be deleted. |
8300018 | BUCKET_VERSIONING_UNKNOWN | INVALID_ARGUMENT | Bucket versioning state is not recognised. |
8300019 | BUCKET_VERSIONING_NOT_SUPPORTED | UNIMPLEMENTED | This provider cannot set the requested versioning state on a bucket. |
8300020 | VERSIONED_BUCKET_NOT_SUPPORTED | UNIMPLEMENTED | A bucket that keeps earlier versions of an object is not supported. |
8301001 | STORAGE_CLASS_NOT_FOUND | NOT_FOUND | Storage class not found. |
8301002 | STORAGE_CLASS_ALREADY_EXISTS | ALREADY_EXISTS | A storage class with this name already exists for this engine. |
8301003 | STORAGE_CLASS_NAME_VALIDATION | INVALID_ARGUMENT | Storage class name must be a DNS-label handle: 1 to 63 lowercase letters, digits and hyphens, letter-initial, no adjacent hyphens, and not itself a UUID. |
8301004 | STORAGE_CLASS_REDUNDANCY_NOT_VALID | INVALID_ARGUMENT | Storage class redundancy scheme is required and must be a known scheme. |
8301005 | STORAGE_CLASS_PERFORMANCE_CLASS_NOT_VALID | INVALID_ARGUMENT | Storage class performance class is required and must be a known class. |
8301006 | STORAGE_CLASS_COMPRESSION_TYPE_NOT_VALID | INVALID_ARGUMENT | Storage class compression type is not valid. |
8301007 | STORAGE_CLASS_NOT_MARKED_FOR_DELETION | FAILED_PRECONDITION | Storage class must be marked for deletion before removal. |
8301008 | STORAGE_CLASS_DESCRIPTION_NOT_VALID | INVALID_ARGUMENT | StorageClass description must be at most 1024 characters and carry no control or bidirectional characters. |
8301009 | STORAGE_CLASS_DISPLAY_NAME_TOO_LONG | INVALID_ARGUMENT | StorageClass display name must not exceed 128 characters. |
8301010 | STORAGE_CLASS_DISPLAY_NAME_NOT_VALID | INVALID_ARGUMENT | StorageClass display name must not contain control characters. |
8301011 | STORAGE_CLASS_REFERENCE_NOT_VALID | INVALID_ARGUMENT | Storage class reference does not resolve to a known storage class. |
8302001 | OBJECT_NAME_IS_BLANK | INVALID_ARGUMENT | Object name must not be blank. |
8302002 | OBJECT_NAME_NOT_VALID | INVALID_ARGUMENT | Object name is not valid. |
8302003 | DIRECTORY_NAME_NOT_VALID | INVALID_ARGUMENT | Directory name is not valid. |
8302004 | BYTE_RANGE_NOT_VALID | INVALID_ARGUMENT | Byte range is not valid. |
8302005 | BYTE_RANGE_INCOMPLETE | INVALID_ARGUMENT | Byte range must name both of its bounds. |
8302006 | REGISTRY_FIXTURE_DIGEST_NOT_VALID | INVALID_ARGUMENT | Declared digest does not describe the content. |
8302020 | OBJECT_ETAG_NOT_STAGED | DATA_LOSS | Stored object carries no change-detection token to publish. |
8302021 | OBJECT_NOT_FOUND | NOT_FOUND | Object not found. |
8302022 | OBJECT_DELETION_IN_VERSIONED_BUCKET_NOT_SUPPORTED | UNIMPLEMENTED | Deleting an object from a bucket that keeps versions is not supported yet. |
8302023 | DELIMITER_HAS_NO_SUCCESSOR | INVALID_ARGUMENT | Delimiter must not end at the highest Unicode code point. |
8303001 | STORAGE_OPERATION_PROGRESS_OUT_OF_RANGE | INVALID_ARGUMENT | Operation progress must be between 0 and 100. |
8303002 | STORAGE_OPERATION_END_TIME_BEFORE_START_TIME | INVALID_ARGUMENT | Operation end time must not be before start time. |
8303005 | STORAGE_OPERATION_SCOPE_TYPE_NOT_VALID | INVALID_ARGUMENT | Operation scope type is not valid. |
8304001 | STORAGE_LOCATION_NOT_FOUND | NOT_FOUND | The location referenced by the storage request does not exist. |
8304002 | STORAGE_LOCATION_NOT_ACTIVE | FAILED_PRECONDITION | The location referenced by the storage request is not active. |
8304003 | STORAGE_LOCATION_GLOBAL_NOT_ALLOWED | INVALID_ARGUMENT | A storage resource cannot be placed at the global location. |
8304004 | STORAGE_LOCATION_KIND_NOT_SUPPORTED | UNIMPLEMENTED | Placing a storage resource at this location kind is not yet supported — only a region is honored. |
8304005 | STORAGE_LOCATION_CATALOGUE_UNAVAILABLE | UNAVAILABLE | The topology location catalogue could not be read. |
8304006 | STORAGE_LOCATION_HANDLE_IS_AMBIGUOUS | INVALID_ARGUMENT | More than one location carries the requested handle; address it by identifier instead. |
8304007 | STORAGE_LOCATION_ENGINE_NOT_SUPPORTED | UNIMPLEMENTED | The location catalogue reported an engine this release does not support. |
8305001 | INSTANCE_NOT_FOUND | NOT_FOUND | Storage class instance not found. |
8305002 | STORAGE_CLASS_NOT_AVAILABLE_IN_REGION | FAILED_PRECONDITION | Storage class is not available in the requested location. |
8305003 | STORAGE_CLASS_REFERENCED_BY_BUCKET | FAILED_PRECONDITION | Storage class is still referenced by a bucket. |
8305004 | INSTANCE_STORAGE_CLASS_NOT_VALID | INVALID_ARGUMENT | Storage class is required. |
8305005 | INSTANCE_LOCATION_NOT_VALID | INVALID_ARGUMENT | Location is required. |
8305006 | INSTANCE_STATE_INCONSISTENT | INVALID_ARGUMENT | Instance state is inconsistent. |
8305007 | INSTANCE_NOT_MARKED_FOR_DELETION | FAILED_PRECONDITION | Storage class instance must be marked for deletion before removal. |
8306001 | ROLLUP_COUNTS_NOT_VALID | INVALID_ARGUMENT | Rollup counts and size must not be negative. |
8306002 | ROLLUP_WORKSPACE_NOT_VALID | INVALID_ARGUMENT | Rollup workspace ID is required. |
8306003 | EGRESS_NOT_VALID | INVALID_ARGUMENT | Egress must not be negative. |
8306004 | EGRESS_WORKSPACE_NOT_VALID | INVALID_ARGUMENT | Egress workspace ID is required. |
8306005 | OPERATION_NOT_VALID | INVALID_ARGUMENT | Operation count must not be negative. |
8306006 | OPERATION_WORKSPACE_NOT_VALID | INVALID_ARGUMENT | Operation workspace ID is required. |
8306007 | METRIC_NOT_VALID | INVALID_ARGUMENT | Metric must be one of egress, operations, spend, stored size, object count, or bucket count. |
8306008 | PERIOD_RANGE_NOT_VALID | INVALID_ARGUMENT | Metric history range must not be inverted and must span at most $MAX_METRIC_HISTORY_MONTHS months. |
8306009 | FEDERATED_COST_CURRENCIES_DIFFER | INVALID_ARGUMENT | Costs across the covered providers are in different currencies and cannot be totalled. |
8307001 | COST_AMOUNT_NOT_VALID | INVALID_ARGUMENT | Cost amount must not be negative. |
8307002 | COST_PERIOD_NOT_VALID | INVALID_ARGUMENT | Cost billing period is required. |
8307003 | COST_WORKSPACE_NOT_VALID | INVALID_ARGUMENT | Cost workspace ID is required. |
8307004 | COST_CURRENCY_NOT_CONSISTENT | INVALID_ARGUMENT | Cost and projection must be in the same currency. |
8307005 | STORAGE_PRICE_NOT_AVAILABLE | FAILED_PRECONDITION | No storage price is available. |
8307006 | CURRENCY_NOT_SUPPORTED | UNIMPLEMENTED | The currency is not supported. |
8307007 | CURRENCY_CODE_CORRUPT | DATA_LOSS | The stored currency code is not a supported currency. |
8307008 | MONEY_AMOUNT_CORRUPT | DATA_LOSS | The reported monetary amount is not a readable decimal. |
8307009 | MONEY_FIELD_NOT_ON_CONTRACT | FAILED_PRECONDITION | The inbound message declares no such monetary field. |
8307010 | PROJECTION_CURRENCY_ABSENT | DATA_LOSS | A projected cost is stored without its currency. |
8307011 | MONEY_AMOUNT_OUT_OF_CONTRACT | DATA_LOSS | The reported monetary amount is too large for the contract. |
8307012 | COST_AMOUNT_NOT_STORABLE | DATA_LOSS | The rated cost amount is larger than the platform can store. |
8308001 | WORKSPACE_STORE_IDENTITY_WORKSPACE_NOT_VALID | INVALID_ARGUMENT | Workspace is required. |
8308002 | WORKSPACE_STORE_IDENTITY_UID_NOT_VALID | INVALID_ARGUMENT | Store user id must be derived from the workspace. |
8308003 | WORKSPACE_STORE_IDENTITY_SECRET_PATH_NOT_VALID | INVALID_ARGUMENT | Secret path is required. |
8308004 | WORKSPACE_STORE_IDENTITY_TRANSITION_NOT_ALLOWED | FAILED_PRECONDITION | Store identity does not allow this lifecycle transition. |
8309001 | WORKSPACE_STORE_SECRET_NOT_FOUND | NOT_FOUND | The secret store holds no credential for the workspace. |
8309002 | WORKSPACE_STORE_SECRET_UNAVAILABLE | UNAVAILABLE | The secret store could not be reached. |
8309003 | WORKSPACE_STORE_SECRET_ACCESS_REFUSED | FAILED_PRECONDITION | The secret store refused the platform’s own credential. |
8309004 | WORKSPACE_STORE_SECRET_REQUEST_REJECTED | INVALID_ARGUMENT | The secret store refused the request. |
8309005 | WORKSPACE_STORE_SECRET_NOT_READABLE | DATA_LOSS | The stored credential is missing the fields storage wrote. |
8310001 | WORKSPACE_STORE_CREDENTIAL_NOT_PROVISIONED | FAILED_PRECONDITION | The workspace has no usable store identity yet. |
8310002 | WORKSPACE_STORE_CREDENTIAL_REVOKED | FAILED_PRECONDITION | The workspace’s store identity has been revoked. |
8311001 | RESOURCE_REFERENCE_IS_AMBIGUOUS | INVALID_ARGUMENT | A resource reference carries both an identifier and a handle; supply exactly one. |
8601004 | CEPH_BUCKET_STATS_FAILED | UNAVAILABLE | Ceph RadosGW bucket stats operation failed. |
8605001 | UNKNOWN_SCHEMA_VERSION | DATA_LOSS | Schema version is not recognized. |
8605002 | STORAGE_OPERATION_NOT_FOUND | NOT_FOUND | The storage operation was not found. |
8605003 | OBJECT_HEAD_CONFLICT | ABORTED | Another version was published as the current version of this object. |
8605004 | OBJECT_METADATA_PUBLICATION_FAILED | ABORTED | The object was not published because concurrent writers kept claiming it. |
8605005 | OBJECT_VERSION_ROW_IS_NOT_A_BLOB | DATA_LOSS | The stored object version is recorded as a file but holds no storage tier. |
8606001 | UNSUPPORTED_DATA_UNIT | INVALID_ARGUMENT | The storage data unit is not supported. |
8606002 | UNKNOWN_INTEGRATION_VERSION | INVALID_ARGUMENT | The integration version is not recognized. |
8606003 | EVENT_FIELD_NOT_ON_CONTRACT | FAILED_PRECONDITION | The inbound event declares no such field. |
8606004 | MONEY_NOT_PUBLISHABLE | DATA_LOSS | The monetary amount cannot be represented on the platform’s wire contract. |
8607001 | CEPH_PROBE_DEVICE_CLASSES_FAILED | UNAVAILABLE | Ceph admin probe of OSD device classes failed. |
8607002 | CEPH_CREATE_POOL_PLACEMENT_FAILED | UNAVAILABLE | Ceph admin create pool/placement operation failed. |
8607003 | CEPH_CATALOG_LOOKUP_FAILED | UNAVAILABLE | Storage redundancy/performance catalog lookup failed. |
8608001 | CEPH_BUCKET_USAGE_FETCH_FAILED | UNAVAILABLE | Ceph RadosGW admin bucket-usage fetch failed. |
8608002 | CEPH_BUCKET_USAGE_UNAVAILABLE | UNAVAILABLE | Ceph RadosGW admin bucket-usage transport is not configured. |
8608004 | CEPH_BUCKET_USAGE_LOG_FETCH_FAILED | UNAVAILABLE | Ceph RadosGW admin usage-log fetch failed. |
8609001 | OBJECT_STORE_RATE_LIMITED | RESOURCE_EXHAUSTED | The object store throttled the request. |
8609002 | OBJECT_STORE_UNREACHABLE | UNAVAILABLE | The object store could not be reached. |
8609003 | OBJECT_STORE_TIMED_OUT | DEADLINE_EXCEEDED | The object store call exceeded its deadline. |
8609004 | OBJECT_LISTING_ABSORPTION_CAP_EXCEEDED | DATA_LOSS | Object listing absorbed more provider pages than the server-side bound permits. |
8609005 | OBJECT_STORE_REJECTED_REQUEST | INVALID_ARGUMENT | The object store refused the request. |
8609006 | OBJECT_STORE_RESOURCE_NOT_FOUND | NOT_FOUND | The object store does not hold the addressed bucket or object. |
8609007 | OBJECT_STORE_RESOURCE_ALREADY_EXISTS | ALREADY_EXISTS | The object store already holds the addressed resource. |
8609008 | OBJECT_STORE_CREDENTIAL_REFUSED | FAILED_PRECONDITION | The object store refused the platform’s own credential. |
8609009 | OBJECT_STORE_CREDENTIAL_NOT_RETURNED | DATA_LOSS | The object store reported success without returning a key pair. |
8610001 | RADOS_OBJECT_NOT_FOUND | NOT_FOUND | The object does not exist in the store. |
8610002 | RADOS_UNAVAILABLE | UNAVAILABLE | The storage cluster is unreachable. |
8610003 | RADOS_OPERATION_FAILED | UNAVAILABLE | The storage operation failed. |
8610004 | RADOS_POOL_FULL | FAILED_PRECONDITION | The storage pool has no capacity remaining. |
8610005 | RADOS_MANIFEST_CORRUPT | DATA_LOSS | The object chunk set could not be read. |
8610006 | RADOS_LISTING_NOT_SUPPORTED | UNIMPLEMENTED | The RADOS engine cannot enumerate a bucket. |
Codes that reach you on an operation, not on a call
Section titled “Codes that reach you on an operation, not on a call”Two codes are never the status of a request. They describe why a provisioning
operation did not finish, so they arrive in the errors list of the operation
record rather than as a failed call, and the request that started the operation
succeeded:
| Code | Reason | Description |
|---|---|---|
8303003 | STORAGE_CLASS_INSTANCE_UNSUPPORTED | The storage class cannot be provisioned at the requested location. |
8303004 | STORAGE_CLASS_INSTANCE_PROVISIONING_TIMED_OUT | The storage class instance did not become available within the reconcile timeout. |
Poll the operation and read its errors to see either of these. A request that
returned an operation is not a request that succeeded at what the operation was
for.
Codes that are reported, not returned
Section titled “Codes that are reported, not returned”None of these is ever a request’s error_code. They say why something further
down refused, and they surface in one of two places: the errors list of an
operation record, or the detail of the error actually returned, written as
code:reason. Read them as the cause behind the status you were given.
| Code | Reason | Description |
|---|---|---|
8303003 | STORAGE_CLASS_INSTANCE_UNSUPPORTED | The storage class cannot be provisioned at the requested location. |
8303004 | STORAGE_CLASS_INSTANCE_PROVISIONING_TIMED_OUT | The storage class instance did not become available within the reconcile timeout. |
8608003 | CEPH_BUCKET_ABSENT_FROM_BACKEND | Bucket is not present in the storage backend. |