risingwavelabs/risingwave · error
state store is not supported
Error message
{} state store is not supported What it means
Guard in StateStoreImpl::new: the configured state store identifier did not match any supported backend (`hummock`, `in_memory`, `sled://...`). The operator-supplied state_store string is unrecognized, so the node cannot construct a state store and fails at startup.
Solutions
- Correct the state store setting to a supported engine (e.g. hummock, in-memory, sled)
- Check release notes/config docs for renamed or removed state store types
- Verify the binary was built with the required feature flags for the intended engine
Example fix
// before (config) state_store = "tikv://127.0.0.1:2379" // after state_store = "hummock+memory"
Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED: [&str; 3] = ["hummock", "in-memory", "sled"];
fn is_supported(engine: &str) -> bool {
SUPPORTED.contains(&engine.split("://").next().unwrap_or(engine))
} Prevention
- Validate the state_store config value against supported engines before launching
- Keep config templates in sync with the deployed RisingWave version
- Add config validation at startup with a clear error instead of unimplemented!
When it happens
Trigger: Configuring a state store engine string (e.g. in the `state_store` config) that is not one of the supported variants (hummock, in-memory, sled, etc.), reaching the `other => unimplemented!` arm.
Common situations: Typos or deprecated engine names in the configuration file, using an engine removed in a newer RisingWave version, or copying a config from an incompatible build (non-production feature flags).
Related errors
- remote object store only supports s3, minio, gcs, oss, cos…
- storage_directory mismatch
- storage_url mismatch
- ambiguous auth: multiple auth options provided; remove one…
- auth.method=key_pair_object must not set `password`
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/3f1ace52f1780fb6.
Report an issue: GitHub.
Appendix: source
Thrown at src/storage/src/store_impl.rs:1007
StateStoreImpl::hummock(inner, storage_metrics)
}
"in_memory" | "in-memory" => {
tracing::warn!(
"In-memory state store should never be used in end-to-end benchmarks or production environment. Scaling and recovery are not supported."
);
StateStoreImpl::shared_in_memory_store(storage_metrics.clone())
}
sled if sled.starts_with("sled://") => {
tracing::warn!(
"sled state store should never be used in end-to-end benchmarks or production environment. Scaling and recovery are not supported."
);
let path = sled.strip_prefix("sled://").unwrap();
StateStoreImpl::sled(SledStateStore::new(path), storage_metrics.clone())
}
other => unimplemented!("{} state store is not supported", other),
};
Ok(store)
}
}
pub trait AsHummock: Send + Sync {
fn as_hummock(&self) -> Option<&HummockStorage>;
fn sync(
&self,
sync_table_epochs: Vec<(HummockEpoch, HashSet<TableId>)>,
) -> BoxFuture<'_, StorageResult<SyncResult>> {
async move {
if let Some(hummock) = self.as_hummock() {
hummock.sync(sync_table_epochs).await
} else {
Ok(SyncResult::default())View on GitHub (pinned to 6469eb736d)