{"record":{"id":"2d23a45802fbb719","repo":"quickwit-oss/quickwit","slug":"failed-to-parse-service-service-str-supported","errorCode":null,"errorMessage":"failed to parse service `{service_str}`. supported services are: `{}`","messagePattern":"failed to parse service `(.+?)`\\. supported services are: `(.+?)`","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-config/src/service.rs","lineNumber":104,"sourceCode":"    }\n}\n\nimpl FromStr for QuickwitService {\n    type Err = anyhow::Error;\n\n    fn from_str(service_str: &str) -> Result<Self, Self::Err> {\n        match service_str {\n            \"compactor\" => Ok(QuickwitService::Compactor),\n            \"control-plane\" | \"control_plane\" => Ok(QuickwitService::ControlPlane),\n            \"indexer\" => Ok(QuickwitService::Indexer),\n            \"janitor\" => Ok(QuickwitService::Janitor),\n            \"metastore\" => Ok(QuickwitService::Metastore),\n            \"metastore-read-replica\" | \"metastore_read_replica\" => {\n                Ok(QuickwitService::MetastoreReadReplica)\n            }\n            \"searcher\" => Ok(QuickwitService::Searcher),\n            _ => {\n                bail!(\n                    \"failed to parse service `{service_str}`. supported services are: `{}`\",\n                    QuickwitService::supported_services().iter().join(\"`, `\")\n                )\n            }\n        }\n    }\n}\n","sourceCodeStart":86,"sourceCodeEnd":112,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-config/src/service.rs#L86-L112","documentation":"`QuickwitService::from_str` parses a service name string into the `QuickwitService` enum. Any string outside the supported set (misspellings, unknown names) hits the bail arm listing the supported services. It exists to reject unknown/typo'd service identifiers early when parsing node config or env-var service lists.","triggerScenarios":"Calling `QuickwitService::from_str(\"foo\")` via config parsing where `foo` is not one of the accepted service strings (e.g. `indexer`, `searcher`, `metastore`, `metastore-read-replica`/`metastore_read_replica`, `janitor`, `compactor` depending on version).","commonSituations":"Typos like `search` instead of `searcher` or stray whitespace; using a renamed service name after an upgrade; setting `QW_SERVICE=search,indexer` with unsupported names.","solutions":["Fix the service string to one of the names listed in the error message (backtick-separated).","Use `metastore-read-replica` or `metastore_read_replica` (not e.g. `read-replica`) for read replicas.","Check the accepted aliases in quickwit/quickwit-config/src/service.rs `FromStr` impl for your Quickwit version."],"exampleFix":"// before\nlet service = QuickwitService::from_str(\"search\").unwrap();\n\n// after\nlet service = QuickwitService::from_str(\"searcher\").unwrap();","handlingStrategy":"validation","validationCode":"const SUPPORTED_SERVICES: &[&str] = &[\n    \"indexer\", \"searcher\", \"metastore\",\n    \"metastore-read-replica\", \"metastore_read_replica\",\n    \"janitor\", \"compactor\",\n];\n\nfn is_valid_service(s: &str) -> bool {\n    SUPPORTED_SERVICES.contains(&s)\n}","typeGuard":"fn valid_service(s: &str) -> Option<&str> {\n    SUPPORTED_SERVICES.iter().find(|&&k| k == s).copied()\n}","tryCatchPattern":"match QuickwitService::from_str(service_str) {\n    Ok(svc) => enable(svc),\n    Err(e) => eprintln!(\n        \"{} — supported: {}\",\n        e,\n        QuickwitService::supported_services().iter().join(\", \")\n    ),\n}","preventionTips":["Copy service names exactly from the error's supported list; watch hyphens vs underscores.","Trim whitespace and split on ',' when parsing QW_SERVICE-style lists.","Add a config test asserting every service name in your deployment config parses."],"tags":["rust","config","parsing"],"backgroundTag":"invalid-enum-value","analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}