{"record":{"id":"96b71a50a419ca20","repo":"risingwavelabs/risingwave","slug":"only-hummock-state-store-is-supported-in-risectl","errorCode":null,"errorMessage":"only Hummock state store is supported in risectl","messagePattern":"only Hummock state store is supported in risectl","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/ctl/src/common/hummock_service.rs","lineNumber":163,"sourceCode":"            )),\n            metrics.state_store_metrics.clone(),\n            metrics.object_store_metrics.clone(),\n            metrics.storage_metrics.clone(),\n            metrics.compactor_metrics.clone(),\n            None,\n            self.use_new_object_prefix_strategy,\n        )\n        .await?;\n\n        if let Some(hummock_state_store) = state_store_impl.as_hummock() {\n            Ok((\n                hummock_state_store\n                    .clone()\n                    .monitored(metrics.storage_metrics.clone()),\n                metrics,\n            ))\n        } else {\n            Err(anyhow!(\"only Hummock state store is supported in risectl\"))\n        }\n    }\n\n    pub async fn create_sstable_store(\n        &self,\n        use_new_object_prefix_strategy: bool,\n    ) -> Result<Arc<SstableStore>> {\n        let object_store = build_remote_object_store(\n            self.hummock_url.strip_prefix(\"hummock+\").unwrap(),\n            Arc::new(ObjectStoreMetrics::unused()),\n            \"Hummock\",\n            Arc::new(ObjectStoreConfig::default()),\n        )\n        .await;\n\n        let opts = self.get_storage_opts();\n\n        let meta_cache = HybridCacheBuilder::new()","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/ctl/src/common/hummock_service.rs#L145-L181","documentation":"create_hummock_store_with_metrics inspects the cluster's configured state store engine and builds a Hummock store only when the engine is Hummock. If the state store string is anything else (e.g. in-memory or an unrecognized value), risectl refuses, since its tooling only understands Hummock state stores.","triggerScenarios":"Pointing risectl at a cluster whose state_store is not Hummock (e.g. an in-memory dev cluster), or a config value for hummock_state_store that fails the engine check inside create_hummock_store_with_metrics.","commonSituations":"Trying to inspect an ephemeral/test cluster that uses a non-Hummock store; a misconfigured state_store string in the cluster config; using risectl against setups it was never designed for.","solutions":["Restart the cluster with a Hummock state store (shared storage, e.g. `use: minio` in risedev config).","Fix the state_store value in the cluster configuration to a valid hummock:// URL.","Use the compute engine's own tooling for non-Hummock clusters instead of risectl."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// confirm cluster state store before risectl\n// meta config: state_store must be a hummock:// URL","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only run risectl against clusters configured with the Hummock state engine","Validate state_store in the risedev config before deployment","Avoid pointing risectl at in-memory/test clusters"],"tags":["risectl","hummock","state-store"],"backgroundTag":"unsupported-operation","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"}