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
- Inspect the wrapped iceberg::Error for the root cause (catalog, table metadata, commit conflict).
- Verify catalog configuration, table location, and object-store credentials.
- 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)