{"record":{"id":"dcb41147de12574c","repo":"risingwavelabs/risingwave","slug":"table-tracker-not-found-for-table","errorCode":null,"errorMessage":"Table tracker not found for table {}","messagePattern":"Table tracker not found for table (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/src/stream/refresh_manager.rs","lineNumber":147,"sourceCode":"    }\n\n    pub async fn mark_refresh_complete(&self, table_id: TableId) -> MetaResult<()> {\n        self.metadata_manager\n            .update_refresh_job_status(table_id, RefreshState::Idle, None, true)\n            .await?;\n        self.remove_progress_tracker(table_id, \"success\");\n        tracing::info!(%table_id, \"Table refresh completed, state updated to Idle\");\n        Ok(())\n    }\n\n    pub fn mark_list_stage_finished(\n        &self,\n        table_id: TableId,\n        actors: &HashSet<ActorId>,\n    ) -> MetaResult<bool> {\n        let mut guard = self.progress_trackers.lock();\n        let tracker = guard.inner.get_mut(&table_id).ok_or_else(|| {\n            MetaError::from(anyhow!(\"Table tracker not found for table {}\", table_id))\n        })?;\n        tracker.report_list_finished(actors.iter().copied());\n        tracker.is_list_finished()\n    }\n\n    pub fn mark_load_stage_finished(\n        &self,\n        table_id: TableId,\n        actors: &HashSet<ActorId>,\n    ) -> MetaResult<bool> {\n        let mut guard = self.progress_trackers.lock();\n        let tracker = guard.inner.get_mut(&table_id).ok_or_else(|| {\n            MetaError::from(anyhow!(\"Table tracker not found for table {}\", table_id))\n        })?;\n        tracker.report_load_finished(actors.iter().copied());\n        tracker.is_load_finished()\n    }\n","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/stream/refresh_manager.rs#L129-L165","documentation":"mark_list_stage_finished looks up the RefreshProgressTracker registered for a table in the refresh manager. This error means no tracker exists for the given table id, so the list-stage completion cannot be reported. The tracker is removed when a refresh job finishes or fails, so reporting afterwards is a stale/late callback.","triggerScenarios":"mark_list_stage_finished(table_id, actors) called for a table whose tracker was already removed (remove_trackers_by_database, remove_progress_tracker on failure/completion) or never created — e.g. a late actor completion message arriving after the refresh job ended, or recovery wiping in-memory trackers.","commonSituations":"MV/refresh (dynamic filter / shared source style refresh) jobs finishing concurrently while actors still report; meta node restart during an active refresh losing in-memory trackers; duplicated completion callbacks.","solutions":["Confirm the refresh job for the table already finished or failed; if so the error is a benign stale callback and can be ignored/logged.","Re-run or re-trigger the refresh so a tracker is re-registered before actors report.","Check whether a meta restart occurred mid-refresh; wait for the refresh job to be re-driven by the refresh scheduler.","If persistent for an in-progress refresh, file a bug with the table id — tracker lifecycle is out of sync."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match refresh_manager.mark_list_stage_finished(table_id, &actors) {\n    Err(e) if e.to_string().contains(\"Table tracker not found\") => {\n        // stale completion report after the refresh finished/failed; ignore\n        tracing::debug!(?table_id, \"tracker already removed; stale list-stage report\");\n    }\n    other => other?,\n}","preventionTips":["Check the refresh job's state before reporting stage completion for a table.","Suppress late actor completion callbacks once a job reaches a terminal state.","Re-register trackers deterministically after meta recovery restarts."],"tags":["refresh","progress-tracking","meta","table"],"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-23T08:17:48.524Z"}