{"record":{"id":"7455fb6173f4fd9a","repo":"risingwavelabs/risingwave","slug":"table-fragment-does-not-exist-id-0","errorCode":null,"errorMessage":"table_fragment does not exist: id={0}","messagePattern":"table_fragment does not exist: id=(.+?)","errorType":"error_code","errorClass":"MetaError","httpStatus":null,"severity":"error","filePath":"src/meta/src/error.rs","lineNumber":80,"sourceCode":"        #[backtrace]\n        RpcError,\n    ),\n\n    #[error(\"{0}\")]\n    PermissionDenied(String),\n\n    #[error(\"Invalid worker: {0}, {1}\")]\n    InvalidWorker(WorkerId, String),\n\n    #[error(\"Invalid parameter: {0}\")]\n    InvalidParameter(#[message] String),\n\n    // Used for catalog errors.\n    #[error(\"{0} id not found: {1}\")]\n    #[construct(skip)]\n    CatalogIdNotFound(&'static str, String),\n\n    #[error(\"table_fragment does not exist: id={0}\")]\n    FragmentNotFound(FragmentId),\n\n    #[error(\"{0} named {1} already exists{under_creation}\", under_creation = (.2).map(|_| \" and is still being created\").unwrap_or(\"\"))]\n    Duplicated(\n        &'static str,\n        String,\n        // if under creation, take streaming job id, otherwise None\n        Option<JobId>,\n    ),\n\n    #[error(\"Service unavailable: {0}\")]\n    Unavailable(#[message] String),\n\n    #[error(\"Election failed: {0}\")]\n    Election(#[source] BoxedError),\n\n    #[error(\"Cancelled: {0}\")]\n    Cancelled(String),","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/error.rs#L62-L98","documentation":"The meta node could not find a streaming table fragment with the given FragmentId. Fragments are the distributed execution units of a streaming job; this error means the fragment manager has no record of that id.","triggerScenarios":"Querying or modifying fragment state (scaling APIs, fragment backfill, fragment detail lookup) with a fragment id belonging to a dropped streaming job or an id from another cluster.","commonSituations":"Stream job dropped concurrently while its fragments are being inspected, stale fragment ids cached in tooling after recovery/migration, misapplied id mapping after cluster restore.","solutions":["Verify the owning streaming job still exists (`SHOW MATERIALIZED VIEWS` / `SHOW SOURCES`) and use its current fragments.","Re-fetch fragment ids via risectl meta list-fragments instead of cached values.","If the job was dropped, the fragments are gone by design; stop using those ids.","After cluster restore/migration, re-query fragment mappings."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"let fragments = meta_client.list_fragments(job_id).await?;\nassert!(fragments.iter().any(|f| f.fragment_id == fragment_id));","typeGuard":null,"tryCatchPattern":"match meta_result {\n    Err(MetaError::FragmentNotFound(id)) => { /* refresh fragment list or stop using dropped job's fragments */ }\n    other => other?,\n}","preventionTips":["Confirm the owning streaming job still exists before fragment operations.","Re-list fragments instead of reusing cached fragment ids.","Avoid inspecting fragments of jobs that may be dropped concurrently."],"tags":["meta","streaming","fragment","not-found"],"backgroundTag":"record-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"}