{"record":{"id":"0f0acb456acfe5c1","repo":"vectordotdev/vector","slug":"not-implemented-http","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/components/validation/resources/http.rs","lineNumber":444,"sourceCode":"\n            // signal the server to shutdown\n            http_server_shutdown_tx.send(()).ok();\n\n            // mark ourselves as done\n            resource_completed.mark_as_done();\n\n            info!(\"HTTP server external output resource completed.\");\n        });\n\n        Ok(())\n    }\n\n    /// Spawns an HTTP client that pulls events by making requests to an HTTP server driven by a sink.\n    fn spawn_output_http_client(&self, _config: HttpResourceConfig) {\n        // TODO: The `prometheus_exporter` sink is the only sink that exposes an HTTP server which must be\n        // scraped... but since we need special logic to aggregate/deduplicate scraped metrics, we can't\n        // use this generically for that purpose.\n        unimplemented!()\n    }\n}\n\nfn spawn_http_server<H, F, R>(\n    task_coordinator: &TaskCoordinator<Configuring>,\n    config: &HttpResourceConfig,\n    runner_metrics: &Arc<Mutex<RunnerMetrics>>,\n    handler: H,\n) -> (Arc<Notify>, oneshot::Sender<()>)\nwhere\n    H: Fn(Request<Body>, Arc<Mutex<RunnerMetrics>>) -> F + Clone + Send + 'static,\n    F: Future<Output = R> + Send,\n    R: IntoResponse,\n{\n    let http_server_started = task_coordinator.track_started();\n    let http_server_completed = task_coordinator.track_completed();\n\n    let listen_addr = socketaddr_from_uri(&config.uri);","sourceCodeStart":426,"sourceCodeEnd":462,"githubUrl":"https://github.com/vectordotdev/vector/blob/bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013/src/components/validation/resources/http.rs#L426-L462","documentation":"The validation framework's spawn_output_http_client helper — an HTTP client that pulls events from a sink-driven HTTP server — is a stub that panics with unimplemented!(). It exists only as a placeholder because scraping sinks like prometheus_exporter need special aggregation/deduplication logic that can't be generic.","triggerScenarios":"Running component validation against a sink whose HttpResourceConfig requires pull-based (client-side) validation — i.e. a sink exposing an HTTP server to be scraped.","commonSituations":"Validating the prometheus_exporter sink via `vector validate` / validation resources; attempting pull-style validation of any scrape-based sink.","solutions":["Skip HTTP-client-based validation for scrape-style sinks; validate prometheus_exporter with integration tests instead","Restrict validation resources to push-based HTTP configs the framework supports","Implement spawn_output_http_client with metric aggregation/deduplication logic if generic validation is needed"],"exampleFix":"// before\nvalidation:\n  http:\n    client: true  # triggers spawn_output_http_client for a scrape sink\n// after\n# validate prometheus_exporter with dedicated integration tests, not the generic validation framework","handlingStrategy":"validation","validationCode":"// Skip validation for pull-based (scrape) sinks\nfn supports_output_http_validation(is_scrape_style_sink: bool) -> bool {\n    !is_scrape_style_sink  // prometheus_exporter-style sinks are unsupported\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate scrape-style sinks (prometheus_exporter) with integration tests, not the validation framework","Only attach push-based HTTP validation resources","Check sink docs for scrape vs push semantics before validating"],"tags":["rust","validation","http","testing"],"backgroundTag":"method-not-implemented","analyzedSha":"bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013","analyzedAt":"2026-09-16T02:53:35.741Z","contentChangedAt":"2026-09-16T02:53:35.741Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}