{"record":{"id":"24d267e7f64d4fb2","repo":"risingwavelabs/risingwave","slug":"remote-sink-error-0","errorCode":null,"errorMessage":"Remote sink error: {0}","messagePattern":"Remote sink error: (.+?)","errorType":"exception","errorClass":"SinkError","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/mod.rs","lineNumber":1098,"sourceCode":"        )*\n    };\n}\n\ndef_sink_impl!();\n\npub type Result<T> = std::result::Result<T, SinkError>;\n\n#[derive(Error, Debug)]\npub enum SinkError {\n    #[error(\"Kafka error: {0}\")]\n    Kafka(#[from] rdkafka::error::KafkaError),\n    #[error(\"Kinesis error: {0}\")]\n    Kinesis(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(\"Remote sink error: {0}\")]\n    Remote(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(\"Encode error: {0}\")]\n    Encode(String),\n    #[error(\"Avro error: {0}\")]\n    Avro(#[from] apache_avro::Error),\n    #[error(\"Iceberg error: {0}\")]\n    Iceberg(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(\"config error: {0}\")]\n    Config(\n        #[source]","sourceCodeStart":1080,"sourceCodeEnd":1116,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/mod.rs#L1080-L1116","documentation":"Variant of `SinkError` used by the remote sink RPC layer: errors returned when the frontend/connector node talks to a remote sink worker over gRPC, or errors relayed from remote sink execution. The anyhow cause is preserved as source and backtrace.","triggerScenarios":"Remote sink communication fails (gRPC unavailable, remote worker panics/returns error) and the remote sink executor wraps it in SinkError::Remote; also used when delegating sink work to a remote connector node that reports failure.","commonSituations":"Connector node down or unreachable during distributed sink execution; version mismatch between meta/frontend and connector node; network partition in the cluster.","solutions":["Check the connector node is running and reachable; inspect its logs for the original error","Restart/repair the failing connector or compute node; verify cluster health via `risingwave ctl` or meta dashboard","Confirm component versions match after an upgrade (rolling-upgrade mismatch produces remote errors)"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// health-check the connector node before running remote sinks\ngrpc_health_probe -addr <connector-node>:50051 || echo \"connector node unreachable\"","typeGuard":null,"tryCatchPattern":"match err {\n    SinkError::Remote(e) if is_transient(&e) => retry_with_backoff(),\n    SinkError::Remote(e) => { log::error!(\"remote sink failed: {e:#}\"); return Err(e.into()); }\n    e => return Err(e.into()),\n}","preventionTips":["Monitor connector node liveness and restart policies in your orchestrator","Pin matching component versions across the cluster during upgrades"],"tags":["sink","grpc","distributed"],"backgroundTag":"upstream-api-error","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}