{"record":{"id":"7c0677765a05b1b1","repo":"risingwavelabs/risingwave","slug":"state-table-is-not-registered-to-hummock","errorCode":null,"errorMessage":"state table {} is not registered to hummock","messagePattern":"state table (.+?) is not registered to hummock","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/meta/src/barrier/mod.rs","lineNumber":182,"sourceCode":"                for (actor_id, actor) in &fragment.actors {\n                    if !active_streaming_nodes\n                        .current()\n                        .contains_key(&actor.worker_id)\n                    {\n                        return Err(anyhow!(\n                            \"worker_id {} for actor {} does not exist\",\n                            actor.worker_id,\n                            actor_id\n                        )\n                        .into());\n                    }\n                    if !stream_actors.contains_key(actor_id) {\n                        return Err(anyhow!(\"cannot find StreamActor of actor {}\", actor_id).into());\n                    }\n                }\n                for state_table_id in &fragment.state_table_ids {\n                    if !state_table_committed_epochs.contains_key(state_table_id) {\n                        return Err(anyhow!(\n                            \"state table {} is not registered to hummock\",\n                            state_table_id\n                        )\n                        .into());\n                    }\n                }\n            }\n            for (job_id, fragments) in database_jobs {\n                let mut committed_epochs =\n                    InflightFragmentInfo::existing_table_ids(fragments.values()).map(|table_id| {\n                        (\n                            table_id,\n                            *state_table_committed_epochs\n                                .get(&table_id)\n                                .expect(\"checked exist\"),\n                        )\n                    });\n                let (first_table, first_epoch) = committed_epochs.next().ok_or_else(|| {","sourceCodeStart":164,"sourceCodeEnd":200,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/barrier/mod.rs#L164-L200","documentation":"validate_database_info requires every state table referenced by a fragment to be registered in state_table_committed_epochs (i.e. known to Hummock with a committed epoch). A fragment referencing an unregistered state table aborts recovery, since such a table cannot be read from or written to safely.","triggerScenarios":"Recovery where fragment.state_table_ids contains a table missing from the Hummock-registered state table epoch map — e.g. the table was never registered due to a failed barrier, or metadata divergence between stream graph and Hummock.","commonSituations":"Crash between fragment creation and Hummock registration; hummock version checkpoint missing the table; bugs in table registration during job creation.","solutions":["Retry recovery; if the table registration barrier never committed, rebuild/recreate the affected job","Verify hummock metadata contains the table and repair registration if possible","Check for version checkpoint corruption and roll back to a consistent snapshot","File a bug; fragments must never reference unregistered state tables"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"let unregistered: Vec<_> = fragments.iter()\n    .flat_map(|f| f.state_table_ids.iter())\n    .filter(|t| !state_table_committed_epochs.contains_key(*t))\n    .collect();\nif !unregistered.is_empty() { return Err(format!(\"tables not in hummock: {:?}\", unregistered)); }","typeGuard":null,"tryCatchPattern":"if e.to_string().contains(\"is not registered to hummock\") {\n    recreate_job_from_source(job_id)?; // rebuild tables and registration\n}","preventionTips":["Register state tables to Hummock in the same barrier that creates fragments","Verify registration success before activating a job","Audit hummock version checkpoints for table completeness"],"tags":["rust","meta","recovery","hummock","state-table"],"backgroundTag":"entity-not-found","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}