risingwavelabs/risingwave · error
trigger_manual_compaction report not accepted. task_id
Error message
trigger_manual_compaction report not accepted. task_id {} What it means
The compactor did report back for the manual compaction task, but the report was not accepted (report_result.reported == false), meaning the manager rejected the result — typically because the task is no longer tracked (e.g. cancelled, already handled after failover, or the waiter was removed).
Solutions
- Retry the manual compaction to get a fresh task and report cycle.
- Check meta logs for why the task's report was rejected (unknown task id / cancelled).
- After meta failover, wait for the compactor to re-register and purge in-flight tasks before triggering manual compaction.
Example fix
// before
if !report_result.reported {
return Err(anyhow!("trigger_manual_compaction report not accepted. task_id {}", report_result.task_id));
}
// after
if !report_result.reported {
warn!(task_id = %report_result.task_id, "manual compaction report rejected; retrying trigger");
return self.trigger_manual_compaction(manual_compaction_option).await; // bounded retries
} Defensive patterns
Strategy: retry
Validate before calling
// verify the manager still tracks manual compaction tasks (no recent failover) before triggering
if meta_recently_failed_over() { wait_until_stable(); } Try / catch
match trigger_manual_compaction(opt).await {
Err(e) if e.to_string().contains("report not accepted") => {
// task was rejected (failover/cancel); re-trigger with a fresh task id
retry_with_backoff();
},
other => other?,
} Prevention
- Avoid triggering manual compaction during meta failover windows
- Don't cancel an in-flight manual compaction from another client and then wait on the old one
- Ensure compactors drop in-flight tasks after reconnecting to a new meta leader
When it happens
Trigger: Calling trigger_manual_compaction where the compactor's report_compact_task RPC returns reported=false: task id unknown to the manager after meta failover, the task was cancelled, or a duplicate/stale report from a previous attempt.
Common situations: Meta node restart/failover while the compactor was still working; manual compaction cancelled by another call; compactor retrying an old task after reconnecting; split-brain between an old compactor and a new meta leader.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- CompactionGroup error
- Failed to get compaction task for compaction_group
- id not found
- named already exists
- actor count ( ) exceeds vnode count ( )
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/b94bfd4195dd1a5f.
Report an issue: GitHub.
Appendix: source
Thrown at src/meta/src/hummock/manager/compaction/mod.rs:1166
})
{
self.remove_compaction_task_report_waiter(task_id);
return Err(err.into());
}
let report_result = match report_rx.await {
Ok(result) => result,
Err(_) => {
self.remove_compaction_task_report_waiter(task_id);
return Err(anyhow::anyhow!(
"trigger_manual_compaction wait report failed. compaction_group {}",
compaction_group
)
.into());
}
};
if !report_result.reported {
return Err(anyhow::anyhow!(
"trigger_manual_compaction report not accepted. task_id {}",
report_result.task_id
)
.into());
}
if report_result.task_status == TaskStatus::NoAvailCpuResourceCanceled
|| report_result.task_status == TaskStatus::NoAvailMemoryResourceCanceled
{
return Ok(ManualCompactionTriggerResult::Retry);
}
tracing::info!(
?report_result,
duration = ?start_time.elapsed(),
"Completed manual compaction task."
);
View on GitHub (pinned to 6469eb736d)