risingwavelabs/risingwave · error · ArrayError
I/O error: {0}
Error message
I/O error: {0} What it means
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.).
Source
Thrown at src/common/src/array/error.rs:29
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use std::convert::Infallible;
pub use anyhow::anyhow;
use risingwave_pb::PbFieldNotFound;
use thiserror::Error;
use thiserror_ext::Construct;
use crate::error::BoxedError;
#[derive(Error, Debug, Construct)]
pub enum ArrayError {
#[error("Pb decode error: {0}")]
PbDecode(#[from] prost::DecodeError),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error(transparent)]
Internal(
#[from]
#[backtrace]
anyhow::Error,
),
#[error("Convert from arrow error: {0}")]
FromArrow(
#[source]
#[backtrace]
BoxedError,
),
#[error("Convert to arrow error: {0}")]
ToArrow(View on GitHub (pinned to 6469eb736d)
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
Defensive patterns
Strategy: try-catch
Validate before calling
// Check writable space / file access before serializing arrays assert!(target_file.metadata().is_ok(), "target file inaccessible");
Try / catch
match result {
Err(ArrayError::Io(e)) => {
log::error!("array I/O failed: {e}");
// check disk space/permissions, then retry
}
other => other,
} Prevention
- Monitor disk space on storage volumes
- Verify file permissions for the process user
- Handle broken pipes by validating stream targets before writing
When it happens
Trigger: 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.
Common situations: Disk full while flushing serialized arrays; broken pipe to a file/stream target; permission errors on backing files.
Understand the failure class
Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.
Related errors
- I/O error: {0}
- ser/de proto message error: {0}
- Pb decode error: {0}
- could not open schema from {filename}
- json ref error
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/263554cc6f92ebdd.
Report an issue: GitHub.