{"record":{"id":"b94bfd4195dd1a5f","repo":"risingwavelabs/risingwave","slug":"trigger-manual-compaction-report-not-accepted-tas","errorCode":null,"errorMessage":"trigger_manual_compaction report not accepted. task_id {}","messagePattern":"trigger_manual_compaction report not accepted\\. task_id (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/src/hummock/manager/compaction/mod.rs","lineNumber":1166,"sourceCode":"            })\n        {\n            self.remove_compaction_task_report_waiter(task_id);\n            return Err(err.into());\n        }\n\n        let report_result = match report_rx.await {\n            Ok(result) => result,\n            Err(_) => {\n                self.remove_compaction_task_report_waiter(task_id);\n                return Err(anyhow::anyhow!(\n                    \"trigger_manual_compaction wait report failed. compaction_group {}\",\n                    compaction_group\n                )\n                .into());\n            }\n        };\n        if !report_result.reported {\n            return Err(anyhow::anyhow!(\n                \"trigger_manual_compaction report not accepted. task_id {}\",\n                report_result.task_id\n            )\n            .into());\n        }\n\n        if report_result.task_status == TaskStatus::NoAvailCpuResourceCanceled\n            || report_result.task_status == TaskStatus::NoAvailMemoryResourceCanceled\n        {\n            return Ok(ManualCompactionTriggerResult::Retry);\n        }\n\n        tracing::info!(\n            ?report_result,\n            duration = ?start_time.elapsed(),\n            \"Completed manual compaction task.\"\n        );\n","sourceCodeStart":1148,"sourceCodeEnd":1184,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/hummock/manager/compaction/mod.rs#L1148-L1184","documentation":"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).","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nif !report_result.reported {\n    return Err(anyhow!(\"trigger_manual_compaction report not accepted. task_id {}\", report_result.task_id));\n}\n// after\nif !report_result.reported {\n    warn!(task_id = %report_result.task_id, \"manual compaction report rejected; retrying trigger\");\n    return self.trigger_manual_compaction(manual_compaction_option).await; // bounded retries\n}","handlingStrategy":"retry","validationCode":"// verify the manager still tracks manual compaction tasks (no recent failover) before triggering\nif meta_recently_failed_over() { wait_until_stable(); }","typeGuard":null,"tryCatchPattern":"match trigger_manual_compaction(opt).await {\n    Err(e) if e.to_string().contains(\"report not accepted\") => {\n        // task was rejected (failover/cancel); re-trigger with a fresh task id\n        retry_with_backoff();\n    },\n    other => other?,\n}","preventionTips":["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"],"tags":["compaction","meta","task-tracking"],"backgroundTag":"invalid-state-transition","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}