{"record":{"id":"e1b9ddb177fc5584","repo":"influxdata/influxdb","slug":"failed-to-list-table-index-snapshots-from-object-store","errorCode":null,"errorMessage":"Failed to list table index snapshots from object store","messagePattern":"Failed to list table index snapshots from object store","errorType":"error_code","errorClass":"TableIndexError","httpStatus":null,"severity":"error","filePath":"influxdb3_write/src/table_index.rs","lineNumber":31,"sourceCode":"use influxdb3_wal::SnapshotSequenceNumber;\n\nuse crate::{\n    ParquetFile, PersistedSnapshot, PersistedSnapshotVersion,\n    paths::{SnapshotInfoFilePath, TableIndexPath, TableIndexSnapshotPath},\n};\n\n#[derive(Debug, Error)]\npub enum TableIndexError {\n    #[error(\"Failed to load table index from object store\")]\n    LoadIndex(#[source] object_store::Error),\n\n    #[error(\"Failed to deserialize table index\")]\n    SerializeIndex(#[source] serde_json::Error),\n\n    #[error(\"Failed to deserialize table index\")]\n    DeserializeIndex(#[source] serde_json::Error),\n\n    #[error(\"Failed to list table index snapshots from object store\")]\n    ListSnapshots(#[source] object_store::Error),\n\n    #[error(\"Failed to list table indices from object store\")]\n    ListIndices(#[source] object_store::Error),\n\n    #[error(\"Failed to load table index snapshot from object store\")]\n    LoadSnapshot(#[source] object_store::Error),\n\n    #[error(\"Failed to deserialize table index snapshot\")]\n    DeserializeSnapshot(#[source] serde_json::Error),\n\n    #[error(\"Failed to persist table index to object store\")]\n    PersistIndex(#[source] object_store::Error),\n\n    #[error(\"Failed to delete table index snapshot from object store\")]\n    DeleteSnapshot(#[source] object_store::Error),\n\n    #[error(\"Cannot merge table indices with mismatched identifiers: {expected} != {actual}\")]","sourceCodeStart":13,"sourceCodeEnd":49,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_write/src/table_index.rs#L13-L49","documentation":"TableIndexError::ListSnapshots wraps an object_store::Error raised while listing the snapshot objects referenced by a table index. The code issues list() against the snapshot prefix and collects entries into a Vec; any listing failure (network, auth, throttling) is mapped to this variant. The source object_store::Error identifies the exact cause.","triggerScenarios":"Calling the table-index snapshot enumeration path that does .collect::<Result<Vec<_>, _>>() over the object store list stream and maps the error to ListSnapshots (table_index.rs:380).","commonSituations":"S3/Azure/GCS throttling or 5xx during list pagination; misconfigured credentials that pass auth for GET but fail LIST; wrong bucket or prefix permissions (s3:ListBucket denied).","solutions":["Check #[source] object_store::Error for the HTTP status and operation","Verify the identity has list permission on the bucket/prefix (e.g. s3:ListBucket)","Retry with backoff — list failures are frequently transient throttling","Confirm the configured bucket/endpoint matches the environment that wrote the snapshots"],"exampleFix":"// before: IAM policy missing list rights\n{\"Effect\":\"Deny\",\"Action\":\"s3:ListBucket\",\"Resource\":\"arn:aws:s3:::mybucket\"}\n// after\n{\"Effect\":\"Allow\",\"Action\":\"s3:ListBucket\",\"Resource\":\"arn:aws:s3:::mybucket\"}","handlingStrategy":"retry","validationCode":"// pre-flight: confirm LIST permission on the snapshot prefix\nclient.list(Some(snapshot_prefix)).next().await.transpose()?;","typeGuard":"fn is_list_snapshots(e: &TableIndexError) -> bool {\n    matches!(e, TableIndexError::ListSnapshots(_))\n}","tryCatchPattern":"match list_result {\n    Err(e) if is_list_snapshots(&e) => retry_with_backoff(list, 5),\n    other => other?,\n}","preventionTips":["Grant s3:ListBucket / equivalent on the data prefix","Configure request rate limits and retries in the object_store client","Verify bucket/endpoint/region config at startup","Watch for throttling (503 SlowDown) and add backoff"],"tags":["object-store","listing","network","table-index"],"backgroundTag":"network-request-failed","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}