risingwavelabs/risingwave · error · HummockError
SstObjectIdTracker error: {0}
Error message
SstObjectIdTracker error: {0} What it means
HummockError::SstObjectIdTrackerError (src/storage/src/hummock/error.rs:69-70, constructor sst_object_id_tracker_error at error.rs:161-163) wraps a failure of the SST object-id allocator, the component that hands out monotonically increasing unique IDs for SSTables (typically fetched from the meta service). It signals an object-ID could not be allocated, initialized, or persisted consistently.
Source
Thrown at src/storage/src/hummock/error.rs:69
#[error("Change log retention miss: table {table_id}, epoch {epoch}")]
ChangeLogRetentionMiss { table_id: TableId, epoch: u64 },
#[error("Time-travel version expired: table {table_id}, epoch {epoch}")]
TimeTravelVersionExpired { table_id: TableId, epoch: u64 },
#[error(
"Committed epoch mismatch: table {table_id}, committed_epoch {committed_epoch}, read_epoch {read_epoch}"
)]
CommittedEpochMismatch {
table_id: TableId,
committed_epoch: u64,
read_epoch: u64,
},
#[error("Barrier read is unavailable for now. Likely the cluster is recovering")]
ReadCurrentEpoch,
#[error("CompactionExecutor error: {0}")]
CompactionExecutor(String),
#[error("FileCache error: {0}")]
FileCache(String),
#[error("SstObjectIdTracker error: {0}")]
SstObjectIdTrackerError(String),
#[error("CompactionGroup error: {0}")]
CompactionGroupError(String),
#[error("SstableUpload error: {0}")]
SstableUploadError(String),
#[error("Read backup error: {0}")]
ReadBackupError(String),
#[error("Foyer error: {0}")]
FoyerError(#[from] foyer::Error),
#[error("Other error: {0}")]
Other(String),
}
impl HummockError {
pub fn invalid_format_version(v: u32) -> HummockError {
HummockErrorInner::InvalidFormatVersion(v).into()
}
View on GitHub (pinned to 6469eb736d)
Solutions
- Check meta node health and connectivity from compute/compactor nodes, since ID allocation is served by meta
- Retry the operation; ID allocation is transiently retried and usually succeeds once meta is reachable
- Verify all nodes run compatible RisingWave versions (tracker metadata format is version-sensitive)
- Inspect the meta store (e.g. state tables in the meta backend) for corruption if errors persist after meta recovers
Example fix
// before: compactor fails hard on SstObjectIdTracker error during meta blip
// after: retry ID allocation transiently
let ids = match hummock_manager.alloc_sst_ids(n).await {
Ok(ids) => ids,
Err(e) if e.is_meta_error() || e.to_string().contains("SstObjectIdTracker") => {
retry::retry_async(RETRY_INTERVAL, |_, _| Ok(())).await?;
hummock_manager.alloc_sst_ids(n).await?
}
Err(e) => return Err(e),
}; Defensive patterns
Strategy: retry
Validate before calling
// before heavy write/compaction work, check meta connectivity let health = meta_client.get_cluster_info().await; assert!(health.is_ok(), "meta node unreachable; SST id allocation will fail");
Type guard
fn is_sst_object_id_tracker_err(e: &HummockError) -> bool {
e.to_report_string().starts_with("SstObjectIdTracker error:")
} Try / catch
match hummock_manager.alloc_sst_ids(n).await {
Err(e) if is_sst_object_id_tracker_err(&e) => {
// allocation is transient: back off and retry while meta recovers
retry::retry_async(retry::RETRY_INTERVAL, |_, _| Ok(())).await?;
hummock_manager.alloc_sst_ids(n).await
}
other => other,
} Prevention
- Monitor meta node health and meta store latency; ID allocation depends on it
- Keep all nodes on the same RisingWave version during rolling upgrades
- Retry id-allocation errors instead of dropping tasks; they are usually transient
- Avoid running cleanup tools against meta state while the cluster is under write load
When it happens
Trigger: The compactor or streaming compute node requests a batch of SST object IDs from the meta node and the allocation fails or the ID tracker state is inconsistent; the tracker's internal range is exhausted or its persisted state cannot be read.
Common situations: Meta node connectivity or meta store issues during heavy compaction/write load; version skew after upgrade where tracker metadata format changed; a cluster recovering while ID ranges are being re-acquired.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- SST {0} is invalid
- CompactionGroup error: {0}
- Storage error: {0}
- Storage error: {0}
- StorageError {error}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/2bc50edf1dc66977.
Report an issue: GitHub.