{"record":{"id":"edb68aa93e7eb05e","repo":"rustfs/rustfs","slug":"io-error-0-edb68a","errorCode":null,"errorMessage":"Io error: {0}","messagePattern":"Io error: (.+?)","errorType":"exception","errorClass":"BucketMetadataError","httpStatus":null,"severity":"error","filePath":"crates/ecstore/src/bucket/error.rs","lineNumber":36,"sourceCode":"pub enum BucketMetadataError {\n    #[error(\"tagging not found\")]\n    TaggingNotFound,\n    #[error(\"bucket policy not found\")]\n    BucketPolicyNotFound,\n    #[error(\"bucket object lock not found\")]\n    BucketObjectLockConfigNotFound,\n    #[error(\"bucket lifecycle not found\")]\n    BucketLifecycleNotFound,\n    #[error(\"bucket SSE config not found\")]\n    BucketSSEConfigNotFound,\n    #[error(\"bucket quota config not found\")]\n    BucketQuotaConfigNotFound,\n    #[error(\"bucket replication config not found\")]\n    BucketReplicationConfigNotFound,\n    #[error(\"bucket remote target not found\")]\n    BucketRemoteTargetNotFound,\n\n    #[error(\"Io error: {0}\")]\n    Io(std::io::Error),\n}\n\nimpl BucketMetadataError {\n    pub fn other<E>(error: E) -> Self\n    where\n        E: Into<Box<dyn std::error::Error + Send + Sync>>,\n    {\n        BucketMetadataError::Io(std::io::Error::other(error))\n    }\n}\n\nimpl From<Error> for BucketMetadataError {\n    fn from(e: Error) -> Self {\n        match e {\n            Error::Io(e) => e.into(),\n            _ => BucketMetadataError::other(e),\n        }","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/rustfs/rustfs/blob/35af688cd9d41b4346fbe27dcf7250ba72046c1f/crates/ecstore/src/bucket/error.rs#L18-L54","documentation":"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.","triggerScenarios":"Thrown at crates/ecstore/src/bucket/error.rs:36 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"35af688cd9d41b4346fbe27dcf7250ba72046c1f","analyzedAt":"2026-08-20T21:57:04.799Z","contentChangedAt":"2026-08-20T21:57:04.799Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}