{"record":{"id":"263554cc6f92ebdd","repo":"risingwavelabs/risingwave","slug":"i-o-error-0-263554","errorCode":null,"errorMessage":"I/O error: {0}","messagePattern":"I/O error: (.+?)","errorType":"error_code","errorClass":"ArrayError","httpStatus":null,"severity":"error","filePath":"src/common/src/array/error.rs","lineNumber":29,"sourceCode":"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nuse std::convert::Infallible;\n\npub use anyhow::anyhow;\nuse risingwave_pb::PbFieldNotFound;\nuse thiserror::Error;\nuse thiserror_ext::Construct;\n\nuse crate::error::BoxedError;\n\n#[derive(Error, Debug, Construct)]\npub enum ArrayError {\n    #[error(\"Pb decode error: {0}\")]\n    PbDecode(#[from] prost::DecodeError),\n\n    #[error(\"I/O error: {0}\")]\n    Io(#[from] std::io::Error),\n\n    #[error(transparent)]\n    Internal(\n        #[from]\n        #[backtrace]\n        anyhow::Error,\n    ),\n\n    #[error(\"Convert from arrow error: {0}\")]\n    FromArrow(\n        #[source]\n        #[backtrace]\n        BoxedError,\n    ),\n\n    #[error(\"Convert to arrow error: {0}\")]\n    ToArrow(","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/common/src/array/error.rs#L11-L47","documentation":"A thiserror variant of ArrayError that wraps any std::io::Error (via #[from]) encountered while reading or writing array data in the common array module (e.g. deserializing an array from a byte stream). It is a generic I/O passthrough: the inner error carries the actual cause (unexpected EOF, corrupted/truncated buffer, etc.).","triggerScenarios":"Any array operation that internally performs I/O — e.g. writing/reading array bytes through io::Write/io::Read adapters — where the underlying stream or file fails.","commonSituations":"Disk full while flushing serialized arrays; broken pipe to a file/stream target; permission errors on backing files.","solutions":["Inspect the wrapped io::Error in the message/cause chain for the OS-level reason","Check disk space and file permissions on the target storage","Retry the operation once the underlying I/O issue is resolved"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Check writable space / file access before serializing arrays\nassert!(target_file.metadata().is_ok(), \"target file inaccessible\");","typeGuard":null,"tryCatchPattern":"match result {\n    Err(ArrayError::Io(e)) => {\n        log::error!(\"array I/O failed: {e}\");\n        // check disk space/permissions, then retry\n    }\n    other => other,\n}","preventionTips":["Monitor disk space on storage volumes","Verify file permissions for the process user","Handle broken pipes by validating stream targets before writing"],"tags":["io","serialization"],"backgroundTag":"file-write-failed","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}