{"record":{"id":"5ee4e729fc259667","repo":"rustfs/rustfs","slug":"io-error-0-5ee4e7","errorCode":null,"errorMessage":"IO Error:{0}","messagePattern":"IO Error:(.+?)","errorType":"validation","errorClass":"ParseConfigError","httpStatus":null,"severity":"error","filePath":"crates/notify/src/rules/xml_config.rs","lineNumber":51,"sourceCode":"    #[error(\"There can only be one 'suffix' in the filter rule\")]\n    DuplicateSuffixFilter,\n    #[error(\"Missing event name\")]\n    MissingEventName,\n    #[error(\"Duplicate event name:{0}\")]\n    DuplicateEventName(String), // EventName is usually an enum, and here String is used to represent its text\n    #[error(\"Repeated queue configuration: ID={0:?}, ARN={1}\")]\n    DuplicateQueueConfiguration(Option<String>, String),\n    #[error(\"Unsupported configuration types (e.g. Lambda, Topic)\")]\n    UnsupportedConfiguration,\n    #[error(\"ARN not found:{0}\")]\n    ArnNotFound(String),\n    #[error(\"Unknown area:{0}\")]\n    UnknownRegion(String),\n    #[error(\"ARN parsing error:{0}\")]\n    ArnParseError(#[from] ArnError),\n    #[error(\"TargetID parsing error:{0}\")]\n    TargetIDParseError(#[from] TargetIDError),\n    #[error(\"IO Error:{0}\")]\n    IoError(#[from] std::io::Error),\n    #[error(\"Region mismatch: Configure region {config_region}, current region {current_region}\")]\n    RegionMismatch { config_region: String, current_region: String },\n    #[error(\"ARN {0} Not found in the provided list\")]\n    ArnValidation(String),\n}\n\n#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]\npub struct FilterRule {\n    #[serde(rename = \"Name\")]\n    pub name: String,\n    #[serde(rename = \"Value\")]\n    pub value: String,\n}\n\nimpl FilterRule {\n    fn validate(&self) -> Result<(), ParseConfigError> {\n        if !self.name.eq_ignore_ascii_case(\"prefix\") && !self.name.eq_ignore_ascii_case(\"suffix\") {","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/rustfs/rustfs/blob/35af688cd9d41b4346fbe27dcf7250ba72046c1f/crates/notify/src/rules/xml_config.rs#L33-L69","documentation":"ParseConfigError wrapper for an underlying std::io::Error raised while reading the notification configuration stream (the parser reads from an io::Read source). The io error is embedded; it distinguishes transport/read failure from XML content problems, so callers can retry the read instead of reporting invalid XML.","triggerScenarios":"Thrown at crates/notify/src/rules/xml_config.rs:51 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the wrapped I/O error (truncated body, broken stream, permissions)","Resend/reload the configuration once the I/O condition is fixed"],"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-14T05:17:10.506Z"}