{"record":{"id":"d37e5570a5941120","repo":"windmill-labs/windmill","slug":"error-streaming-get-request-from-authed-http-clien","errorCode":null,"errorMessage":"Error streaming get request from authed http client to {url} with query {query:?}: {e:#?}","messagePattern":"Error streaming get request from authed http client to (.+?) with query (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/windmill-common/src/client.rs","lineNumber":69,"sourceCode":"    pub async fn get_streaming(\n        &self,\n        url: &str,\n        query: Vec<(&str, String)>,\n    ) -> anyhow::Result<Response> {\n        self.force_client\n            .as_ref()\n            .unwrap_or(&HTTP_CLIENT_STREAMING)\n            .get(url)\n            .query(&query)\n            .header(\n                reqwest::header::AUTHORIZATION,\n                reqwest::header::HeaderValue::from_str(&format!(\"Bearer {}\", self.token))?,\n            )\n            .send()\n            .await\n            .map_err(|e| {\n                tracing::error!(\"Error streaming get request from authed http client to {url} with query {query:?}: {e:#?}\");\n                anyhow::anyhow!(\"Error streaming get request from authed http client to {url} with query {query:?}: {e:#?}\")\n            })\n    }\n\n    pub async fn get_id_token(&self, audience: &str) -> anyhow::Result<String> {\n        let url = format!(\n            \"{}/api/w/{}/oidc/token/{}\",\n            self.base_internal_url, self.workspace, audience\n        );\n        let response = self\n            .force_client\n            .as_ref()\n            .unwrap_or(&HTTP_CLIENT)\n            .post(&url)\n            .header(\n                reqwest::header::AUTHORIZATION,\n                reqwest::header::HeaderValue::from_str(&format!(\"Bearer {}\", self.token))?,\n            )\n            .send()","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/windmill-common/src/client.rs#L51-L87","documentation":"Same as [918] but for `get_streaming`, which uses the streaming HTTP client (no total timeout) for large responses such as repository archives. It fires when `send()` fails at transport level — connection refused/reset, DNS, TLS, or an immediate stream error. Called by fetch_repo_archive.","triggerScenarios":"fetch_repo_archive (or any get_streaming call) when the target server is unreachable, the connection drops while starting the stream, or the URL is wrong — backend/windmill-common/src/client.rs:69.","commonSituations":"Downloading large repo archives through a proxy that kills long-lived connections; git/DBT repository host misconfigured or offline; transient network partitions; TLS interception on large transfers.","solutions":["Check the logged `e#` cause for the concrete transport failure (connect vs reset vs TLS).","Verify the repository/archive base URL and credentials, then curl the endpoint manually.","Retry with backoff — long streams are prone to transient resets.","If a proxy terminates long connections, raise its idle/streaming limits or bypass it for this host."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"const url = new URL(baseUrl + archivePath);\nif (!(url.protocol === 'https:' || url.protocol === 'http:')) throw new Error('bad archive URL');","typeGuard":null,"tryCatchPattern":"match client.get_streaming(&url, Some(&query)).await {\n    Ok(resp) => resp,\n    Err(e) if e.to_string().contains(\"Error streaming get request\") => {\n        // transient stream failures are common on large archives; retry with backoff\n        retry_with_backoff(3, || client.get_streaming(&url, Some(&query))).await\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Retry long/streaming downloads — they are prone to transient resets","Raise proxy idle/streaming timeouts for large archives","Verify repo host and credentials before fetching","Prefer HTTPS with valid certs; avoid TLS-intercepting proxies on these hosts"],"tags":["network","http","streaming","reqwest"],"backgroundTag":"http-request-failed","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}