risingwavelabs/risingwave · error · HummockError
CompactionExecutor error: {0}
Error message
CompactionExecutor error: {0} What it means
A generic wrapper for failures inside the Hummock compaction executor — the component that merges SSTs, runs GC, and executes compaction/backup plans. Any error surfaced by the compaction task machinery (task panic-like conditions, plan execution failures, or explicit cancellations such as the string "Plan cancelled", matched in `src/storage/src/hummock/compactor/mod.rs:1621`) is stringified here via `HummockError::compaction_executor(error)` in src/storage/src/hummock/error.rs:157.
Source
Thrown at src/storage/src/hummock/error.rs:65
#[error("Wait epoch error: {0}")]
WaitEpoch(String),
#[error("Next epoch error: {0}")]
NextEpoch(String),
#[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 {View on GitHub (pinned to 6469eb736d)
Solutions
- If the message is "Plan cancelled", treat it as a benign cancellation — the compaction plan was superseded or the compactor is stopping; no action needed.
- Inspect the wrapped message and compactor logs for the underlying cause (object-store errors, task panics) and fix that root cause.
- If compaction repeatedly fails, check object storage connectivity/credentials and compactor memory settings.
- If needed, re-trigger compaction for the affected compaction group after the compactor is healthy.
Example fix
// before: cancelling is surfaced as a real failure
if err.inner() == &HummockError::compaction_executor("Plan cancelled") { return Err(err); }
// after: ignore cancellation, propagate the rest
fn is_cancelled_iceberg_compaction_error(err: &HummockError) -> bool {
matches!(err.inner(), HummockErrorInner::CompactionExecutor(message) if message == "Plan cancelled")
} Defensive patterns
Strategy: try-catch
Type guard
fn is_plan_cancelled(err: &HummockError) -> bool {
matches!(err.inner(), HummockErrorInner::CompactionExecutor(m) if m == "Plan cancelled")
} Try / catch
match err.inner() {
HummockErrorInner::CompactionExecutor(msg) if msg == "Plan cancelled" => {
// benign: plan was superseded or compactor is stopping; ignore or log at info
}
HummockErrorInner::CompactionExecutor(msg) => {
// inspect underlying compaction failure and surface it
}
_ => return Err(err),
} Prevention
- Explicitly classify "Plan cancelled" as benign so shutdowns and plan replacements do not alarm.
- Monitor compactor memory and object-store error rates — most non-cancellation causes originate there.
- Alert on repeated compaction_executor failures for the same compaction group.
- Keep SST merge inputs valid; verify object-store checksums on upload.
When it happens
Trigger: Compaction/backup/iceberg-compaction task execution fails or is cancelled; `HummockError::compaction_executor(err.to_string())` is called from compactor task code, including `"Plan cancelled"` messages when a compaction plan is aborted (e.g. during shutdown or plan replacement).
Common situations: Compactor shutdown or barrier-driven plan cancellation (benign "Plan cancelled"); S3/object-store I/O failures during compaction write/upload; compaction task crash or panic under memory pressure; an incompatible or corrupted SST input in a merge.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- Unsupported task type for copy-on-write iceberg compaction:
- 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/e87066c03b43d165.
Report an issue: GitHub.