{"record":{"id":"8651ac47eb806597","repo":"quickwit-oss/quickwit","slug":"no-stream-summary-was-returned-from-aws","errorCode":null,"errorMessage":"no stream summary was returned from AWS","messagePattern":"no stream summary was returned from AWS","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-indexing/src/source/kinesis/api.rs","lineNumber":183,"sourceCode":"\n    /// Provides a summarized description of the specified Kinesis data stream without the shard\n    /// list. https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html\n    pub(crate) async fn describe_stream(\n        kinesis_client: &KinesisClient,\n        stream_name: &str,\n    ) -> anyhow::Result<StreamDescription> {\n        let response = aws_retry(&DEFAULT_RETRY_PARAMS, || async {\n            kinesis_client\n                .describe_stream()\n                .stream_name(stream_name.to_string())\n                .send()\n                .await\n        })\n        .await?;\n\n        response\n            .stream_description\n            .ok_or_else(|| anyhow!(\"no stream summary was returned from AWS\"))\n    }\n    /// Lists the Kinesis data streams.\n    /// https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html\n    pub(crate) async fn list_streams(\n        kinesis_client: &KinesisClient,\n        mut exclusive_start_stream_name: Option<String>,\n        limit_per_request: Option<usize>,\n    ) -> anyhow::Result<BTreeSet<String>> {\n        let mut stream_names = BTreeSet::new();\n        let mut has_more_streams = true;\n        let limit_per_request = limit_per_request.map(|limit| limit as i32);\n        while has_more_streams {\n            let response = aws_retry(&DEFAULT_RETRY_PARAMS, || async {\n                kinesis_client\n                    .list_streams()\n                    .set_exclusive_start_stream_name(exclusive_start_stream_name.clone())\n                    .set_limit(limit_per_request)\n                    .send()","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-indexing/src/source/kinesis/api.rs#L165-L201","documentation":"When describing a Kinesis stream, AWS may respond without the `stream_description` member. The client expects exactly one StreamDescriptionSummary and treats a missing one as an unexpected response, failing with this error instead of proceeding with `None`.","triggerScenarios":"Calling `describe_stream` (used by `wait_for_stream_status` while a source starts up) against an AWS Kinesis endpoint whose DescribeStream response lacks `stream_description` — e.g. stream in a transient/deleting state or a proxied/misbehaving endpoint returning a partial response.","commonSituations":"Source startup racing with stream deletion/recreation, wrong AWS region or endpoint (custom endpoint/proxy like LocalStack) returning minimal responses, or IAM-limited setups where the response shape is altered.","solutions":["Verify the stream name and region in the Kinesis source config point to an existing active stream.","Retry the source startup once the stream is in ACTIVE state (check `aws kinesis describe-stream-summary`).","If using a custom endpoint (LocalStack/proxy), verify it returns a full DescribeStream response.","Check IAM permissions for `kinesis:DescribeStream` and confirm no deletion of the stream is in progress."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"no stream summary was returned from AWS\") => {\n        // verify stream exists and is ACTIVE, then retry with backoff\n    }\n    other => other?,\n}","preventionTips":["Confirm the stream exists and is ACTIVE before starting the source.","Use the correct AWS region/endpoint in the Kinesis source config.","Ensure full DescribeStream responses (beware of proxies/LocalStack quirks).","Grant kinesis:DescribeStream permissions to the indexer's role."],"tags":["kinesis","aws","api-response"],"backgroundTag":"unexpected-api-response-shape","analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}