risingwavelabs/risingwave · error · SinkError::Iceberg

SinkError::Iceberg(anyhow!(err))

Error message

SinkError::Iceberg(anyhow!(err))

What it means

Generic conversion in impl From<::iceberg::Error> for SinkError: any error surfaced by the iceberg-rust library is wrapped as SinkError::Iceberg(anyhow!(err)). This is a mechanical adapter, not a specific fault; it fires whenever Iceberg table/catalog operations fail inside the Iceberg sink.

Solutions

  1. Inspect the wrapped iceberg::Error for the root cause (catalog, table metadata, commit conflict).
  2. Verify catalog configuration, table location, and object-store credentials.
  3. Retry commit-conflict errors; fix catalog/config issues permanently.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/connector/src/sink/mod.rs:1249 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/3b94a5c69411e4e8. Report an issue: GitHub.

Appendix: source

Thrown at src/connector/src/sink/mod.rs:1249

    ),
    #[error("Mongodb error: {0}")]
    Mongodb(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
    #[error("Redshift error: {0}")]
    Redshift(
        #[source]
        #[backtrace]
        anyhow::Error,
    ),
}

#[allow(clippy::disallowed_types)]
impl From<::iceberg::Error> for SinkError {
    fn from(err: ::iceberg::Error) -> Self {
        SinkError::Iceberg(anyhow!(err))
    }
}

impl From<sea_orm::DbErr> for SinkError {
    fn from(err: sea_orm::DbErr) -> Self {
        SinkError::Iceberg(anyhow!(err))
    }
}

impl From<OpendalError> for SinkError {
    fn from(error: OpendalError) -> Self {
        SinkError::File(error.to_report_string())
    }
}

impl From<parquet::errors::ParquetError> for SinkError {
    fn from(error: parquet::errors::ParquetError) -> Self {
        SinkError::File(error.to_report_string())

View on GitHub (pinned to 6469eb736d)