{"record":{"id":"bb253282dd017873","repo":"risingwavelabs/risingwave","slug":"sst-0-is-invalid","errorCode":null,"errorMessage":"SST {0} is invalid","messagePattern":"SST (.+?) is invalid","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/meta/src/hummock/error.rs","lineNumber":46,"sourceCode":"    #[error(\"invalid hummock context {0}\")]\n    InvalidContext(HummockContextId),\n    #[error(\"failed to access meta store\")]\n    MetaStore(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(transparent)]\n    ObjectStore(\n        #[from]\n        #[backtrace]\n        ObjectError,\n    ),\n    #[error(\"compactor {0} is disconnected\")]\n    CompactorUnreachable(HummockContextId),\n    #[error(\"compaction group error: {0}\")]\n    CompactionGroup(String),\n    #[error(\"SST {0} is invalid\")]\n    InvalidSst(HummockSstableObjectId),\n    #[error(\"invalid manual compaction option: {0}\")]\n    InvalidManualCompactionOption(String),\n    #[error(\"invalid epoch range: {start_epoch}..={end_epoch}\")]\n    InvalidEpochRange { start_epoch: u64, end_epoch: u64 },\n    #[error(\"time-travel version expired: table {table_id}, epoch {epoch}\")]\n    TimeTravelVersionExpired { table_id: TableId, epoch: u64 },\n    #[error(\"time travel\")]\n    TimeTravel(\n        #[source]\n        #[backtrace]\n        anyhow::Error,\n    ),\n    #[error(transparent)]\n    Internal(\n        #[from]\n        #[backtrace]\n        anyhow::Error,","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/hummock/error.rs#L28-L64","documentation":"HummockMetaError::InvalidSst indicates the meta service encountered an SSTable object ID that is not valid or does not exist in its tracked state. It is thrown when internal metadata lookups fail to find or validate an SST, typically during compaction, version deduplication, or garbage-collection logic in the Hummock storage layer.","triggerScenarios":"Meta node internals reference an HummockSstableObjectId that is absent from the SST metadata store, e.g. during compaction task assembly or SST deletion when an SST was already removed or the version snapshot is stale.","commonSituations":"Corrupted or manually pruned object store state; meta/object-store divergence after a failed GC or manual cleanup; replaying stale versioned metadata; bugs in compaction scheduling referencing already-deleted SSTs.","solutions":["Verify the SST object exists in the meta SST store (hummock meta internal tables) and in the object store","Check whether a manual cleanup or GC deleted the object while it was still referenced","Restart the meta node to reload consistent version snapshots","If reproducible, file a bug with the failing SST id and meta logs — it usually indicates an internal invariant violation"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before issuing compaction/GC referencing an SST, confirm it is still tracked\nif !meta_client.sst_exists(sst_id)? {\n    // skip or refresh version snapshot before calling the meta API\n}\n","typeGuard":"fn is_valid_sst(err: &HummockMetaError) -> bool {\n    !matches!(err, HummockMetaError::InvalidSst(_))\n}\n","tryCatchPattern":"match res {\n    Err(HummockMetaError::InvalidSst(sst_id)) => warn!(\"SST {} vanished; refresh version and retry\", sst_id),\n    other => other?,\n}\n","preventionTips":["Never hand-delete SST objects while versions reference them","Keep GC retention consistent across meta and object store","Re-read version snapshots after meta restarts before operating on SST ids","Monitor for object-store/meta divergence"],"tags":["rust","storage","hummock","meta"],"backgroundTag":"resource-not-found","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"}