rustfs/rustfs · error · BucketMetadataError
Io error: {0}
Error message
Io error: {0} What it means
The Io variant of BucketMetadataError wraps std::io::Error from bucket metadata load/save. It fires when the underlying metadata file read or write fails (permissions, missing bucket dir, disk error); the real cause is in the wrapped io::Error.
Source
Thrown at crates/ecstore/src/bucket/error.rs:36
pub enum BucketMetadataError {
#[error("tagging not found")]
TaggingNotFound,
#[error("bucket policy not found")]
BucketPolicyNotFound,
#[error("bucket object lock not found")]
BucketObjectLockConfigNotFound,
#[error("bucket lifecycle not found")]
BucketLifecycleNotFound,
#[error("bucket SSE config not found")]
BucketSSEConfigNotFound,
#[error("bucket quota config not found")]
BucketQuotaConfigNotFound,
#[error("bucket replication config not found")]
BucketReplicationConfigNotFound,
#[error("bucket remote target not found")]
BucketRemoteTargetNotFound,
#[error("Io error: {0}")]
Io(std::io::Error),
}
impl BucketMetadataError {
pub fn other<E>(error: E) -> Self
where
E: Into<Box<dyn std::error::Error + Send + Sync>>,
{
BucketMetadataError::Io(std::io::Error::other(error))
}
}
impl From<Error> for BucketMetadataError {
fn from(e: Error) -> Self {
match e {
Error::Io(e) => e.into(),
_ => BucketMetadataError::other(e),
}View on GitHub (pinned to 35af688cd9)
Solutions
- Inspect the inner io::Error kind for the actual OS failure
- Check bucket metadata path permissions and drive health
- Distinguish I/O failure from the typed NotFound sentinels before mapping to S3 errors
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at crates/ecstore/src/bucket/error.rs:36 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of rustfs/rustfs@35af688cd9 (2026-08-20).
Data as JSON: /api/errors/edb68aa93e7eb05e.
Report an issue: GitHub.