{"record":{"id":"c1b3e9772d55444c","repo":"risingwavelabs/risingwave","slug":"kinesis-error-0","errorCode":null,"errorMessage":"Kinesis error: {0}","messagePattern":"Kinesis error: (.+?)","errorType":"exception","errorClass":"SinkError","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/mod.rs","lineNumber":1092,"sourceCode":"        $(\n            impl From<$sink_type> for SinkImpl {\n                fn from(sink: $sink_type) -> SinkImpl {\n                    SinkImpl::$variant_name(Box::new(sink))\n                }\n            }\n        )*\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]","sourceCodeStart":1074,"sourceCodeEnd":1110,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/mod.rs#L1074-L1110","documentation":"Variant of `SinkError` representing failures from the Kinesis connector. Because the AWS SDK error is boxed as `anyhow::Error` with `#[source]` and `#[backtrace]`, it renders as 'Kinesis error: <cause>' and preserves the underlying AWS error chain.","triggerScenarios":"Kinesis sink/connector operations fail: PutRecords throttling, stream not found, credential retrieval failure, network errors returned by the AWS SDK and wrapped into SinkError::Kinesis.","commonSituations":"Missing or expired AWS credentials (no IMDS role, wrong profile); stream name typo or stream in another region; provisioned throughput exceeded (throttled PutRecords).","solutions":["Inspect the inner AWS SDK error and fix auth: set valid credentials (IAM role, env vars) via the configured credential chain","Verify region and stream name in the sink WITH options match the actual Kinesis stream","Handle throttling by increasing shards or retrying with backoff; RisingWave sink retries may need commit_checkpoint_interval/decouple tuning"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// pre-check credentials and stream before creating the sink\naws kinesis describe-stream --stream-name <name> --region <region> || echo \"stream/credentials issue\"","typeGuard":null,"tryCatchPattern":"match err {\n    SinkError::Kinesis(e) if e.to_string().contains(\"ThrottlingException\") => {\n        tokio::time::sleep(backoff).await; // retry with exponential backoff\n    }\n    SinkError::Kinesis(e) => return Err(e.into()), // auth/stream-name errors: fail fast\n    e => return Err(e.into()),\n}","preventionTips":["Verify IAM credentials/role attach correctly to RisingWave nodes before deploying Kinesis sinks","Confirm stream name and region in WITH options; monitor CloudWatch for throttling and add shards"],"tags":["kinesis","aws","sink"],"backgroundTag":"http-error-response","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}