{"record":{"id":"f0891d100de9aa9a","repo":"risingwavelabs/risingwave","slug":"remote-object-store-only-supports-s3-minio-gc","errorCode":null,"errorMessage":"{} remote object store only supports s3, minio, gcs, oss, cos, azure blob, hdfs, disk, memory.","messagePattern":"(.+?) remote object store only supports s3, minio, gcs, oss, cos, azure blob, hdfs, disk, memory\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/object_store/src/object/mod.rs","lineNumber":1054,"sourceCode":"                );\n            } else {\n                tracing::warn!(\n                    \"You're using in-memory remote object store for {}. This should never be used in benchmarks and production environment.\",\n                    ident\n                );\n            }\n            ObjectStoreImpl::InMem(InMemObjectStore::shared().monitored(metrics, config))\n        }\n        #[cfg(debug_assertions)]\n        \"memory-isolated-for-test\" /* isolated memory is only available for tests */ => {\n            ObjectStoreImpl::InMem(InMemObjectStore::for_test().monitored(metrics, config))\n        }\n        #[cfg(madsim)]\n        sim if sim.starts_with(\"sim://\") => {\n            ObjectStoreImpl::Sim(SimObjectStore::new(url).monitored(metrics, config))\n        }\n        other => {\n            unimplemented!(\n                \"{} remote object store only supports s3, minio, gcs, oss, cos, azure blob, hdfs, disk, memory.\",\n                other\n            )\n        }\n    }\n}\n\n#[inline(always)]\nfn get_retry_strategy(\n    config: &ObjectStoreConfig,\n    operation_type: OperationType,\n) -> impl Iterator<Item = Duration> + use<> {\n    let attempts = get_retry_attempts_by_type(config, operation_type);\n    exponential_backoff(\n        Duration::from_millis(config.retry.req_backoff_interval_ms),\n        config.retry.req_backoff_factor,\n        Duration::from_millis(config.retry.req_backoff_max_delay_ms),\n    )","sourceCodeStart":1036,"sourceCodeEnd":1072,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/object_store/src/object/mod.rs#L1036-L1072","documentation":"build_remote_object_store calls unimplemented!() when given a remote store URL whose scheme is not among the supported ones (s3, minio, gcs, oss, cos, azblob/azure blob, hdfs, disk, memory, sim under madsim). This aborts the process with the listed supported schemes.","triggerScenarios":"Any caller (get_object_store, create_sstable_store, etc.) receiving a URL with an unrecognized prefix — e.g. a typo like s3a://, fs://, or a scheme removed in a newer version.","commonSituations":"Typo in the state store URL in config, using a scheme from another system, or a removed/renamed scheme after an upgrade.","solutions":["Fix the URL prefix to one of: s3://, minio://, gcs://, oss://, cos://, azblob://, hdfs://, disk://, memory://","Check the config file for truncation or corruption of the store URL","If migrating from an old scheme (e.g. s3-compatible://), see the s3 unification note and use s3:// instead"],"exampleFix":"// before\nlet store = build_remote_object_store(\"s3a://my-bucket/data\", metrics, config)?;\n// after\nlet store = build_remote_object_store(\"s3://my-bucket/data\", metrics, config)?;","handlingStrategy":"validation","validationCode":"// Check the URL scheme against the supported list before calling build_remote_object_store\nconst SUPPORTED: [&str; 9] = [\"s3://\",\"minio://\",\"gcs://\",\"oss://\",\"cos://\",\"azblob://\",\"hdfs://\",\"disk://\",\"memory://\"];\nif !url.is_empty() && !SUPPORTED.iter().any(|p| url.starts_with(p)) {\n    return Err(format!(\"unsupported remote store URL: {}\", url));\n}","typeGuard":"fn has_supported_scheme(url: &str) -> bool {\n    [\"s3://\",\"minio://\",\"gcs://\",\"oss://\",\"cos://\",\"azblob://\",\"hdfs://\",\"disk://\",\"memory://\"]\n        .iter().any(|p| url.starts_with(p)) || url.is_empty()\n}","tryCatchPattern":null,"preventionTips":["Copy store URLs from current documentation, not older deployments","Validate the state_store value in config at startup with a scheme whitelist","Beware of typos like s3a:// or s3_:// which this builder rejects"],"tags":["rust","object-store","unimplemented","config","panic"],"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"}