{"record":{"id":"3b9d9a8c638f2873","repo":"risingwavelabs/risingwave","slug":"unsupported-actor-traces-format-only-text","errorCode":null,"errorMessage":"Unsupported actor_traces_format `{}`, only `text` and `json` are supported for now","messagePattern":"Unsupported actor_traces_format `(.+?)`, only `text` and `json` are supported for now","errorType":"http","errorClass":"DashboardError","httpStatus":400,"severity":"warning","filePath":"src/meta/src/dashboard/mod.rs","lineNumber":685,"sourceCode":"\n        response.map_err(err)\n    }\n\n    #[derive(Debug, Deserialize)]\n    pub struct DiagnoseParams {\n        #[serde(default = \"await_tree_default_format\")]\n        actor_traces_format: String,\n    }\n\n    pub async fn diagnose(\n        Query(params): Query<DiagnoseParams>,\n        Extension(srv): Extension<Service>,\n    ) -> Result<String> {\n        let actor_traces_format = match params.actor_traces_format.as_str() {\n            \"text\" => ActorTracesFormat::Text,\n            \"json\" => ActorTracesFormat::Json,\n            _ => {\n                return Err(err(anyhow!(\n                    \"Unsupported actor_traces_format `{}`, only `text` and `json` are supported for now\",\n                    params.actor_traces_format\n                )));\n            }\n        };\n        Ok(srv.diagnose_command.report(actor_traces_format).await)\n    }\n\n    /// NOTE(kwannoel): Although we fetch the BP for the entire graph via this API,\n    /// the workload should be reasonable.\n    /// In most cases, we can safely assume each node has most 2 outgoing edges (e.g. join).\n    /// In such a scenario, the number of edges is linear to the number of nodes.\n    /// So the workload is proportional to the relation id graph we fetch in `get_relation_id_infos`.\n    pub async fn get_streaming_stats(\n        Extension(srv): Extension<Service>,\n    ) -> Result<Json<GetStreamingStatsResponse>> {\n        let worker_nodes = srv\n            .metadata_manager","sourceCodeStart":667,"sourceCodeEnd":703,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/dashboard/mod.rs#L667-L703","documentation":"The dashboard `diagnose` handler parses the `actor_traces_format` query parameter inline instead of using the shared helper. Only `text` or `json` is accepted; any other string aborts the diagnostic report generation with this error.","triggerScenarios":"Calling GET /api/v1/diagnose (or the diagnoseDdv handler) with `actor_traces_format` set to anything besides `text` or `json`, e.g. `actor_traces_format=yaml` or an uppercase variant.","commonSituations":"Monitoring integrations that reuse a generic 'format' value from their own config; copy-pasted curl commands from older docs; typos like `jsonl` when `json` was meant.","solutions":["Set the query parameter to exactly `text` or `json`.","Remove the parameter if a default format is acceptable to the handler.","Keep this parameter in sync with the /actor_traces endpoint's `format` values, which use the same enum."],"exampleFix":"// before\ncurl 'http://localhost:5691/api/v1/diagnose?actor_traces_format=yaml'\n// after\ncurl 'http://localhost:5691/api/v1/diagnose?actor_traces_format=text'","handlingStrategy":"validation","validationCode":"if (!['text', 'json'].includes(actorTracesFormat)) throw new Error(\"actor_traces_format must be 'text' or 'json'\");\nconst url = `http://localhost:5691/api/v1/diagnose?actor_traces_format=${actorTracesFormat}`;","typeGuard":"function isActorTracesFormat(v) { return v === 'text' || v === 'json'; }","tryCatchPattern":"try { const res = await fetch(url); if (!res.ok) throw new Error(await res.text()); } catch (e) { /* detect 'Unsupported actor_traces_format' and retry with 'text' */ }","preventionTips":["Share one format constant between actor_traces and diagnose calls — they use the same enum.","Never pass through arbitrary client config values as this query parameter without whitelisting."],"tags":["http-api","invalid-parameter","diagnostics","risingwave"],"backgroundTag":"invalid-enum-value","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}