{"record":{"id":"ac7a82d6c3aeb339","repo":"vectordotdev/vector","slug":"no-timeout-is-configured-for-this-source","errorCode":null,"errorMessage":"No timeout is configured for this source.","messagePattern":"No timeout is configured for this source\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/sources/splunk_hec/mod.rs","lineNumber":644,"sourceCode":"                        // only leaks pending-ack capacity.\n                        if decoder_in_use {\n                            maybe_ack_id =\n                                if events.is_empty() || had_decode_errors || error.is_some() {\n                                    drop(receiver);\n                                    None\n                                } else {\n                                    register_ack(idx_ack, receiver, channel).await?\n                                };\n                        }\n\n                        if !events.is_empty() {\n                            match out.send_batch(events).await {\n                                Ok(()) => (),\n                                Err(SendError::Closed) => {\n                                    return Err(Rejection::from(ApiError::ServerShutdown));\n                                }\n                                Err(SendError::Timeout) => {\n                                    unreachable!(\"No timeout is configured for this source.\")\n                                }\n                            }\n                        }\n\n                        if let Some(error) = error {\n                            Err(error)\n                        } else {\n                            Ok(maybe_ack_id)\n                        }\n                    }\n                },\n            )\n            .map(finish_ok)\n            .boxed()\n    }\n\n    fn raw_service(&self, out: SourceSender) -> BoxedFilter<(Response,)> {\n        let protocol = self.protocol;","sourceCodeStart":626,"sourceCodeEnd":662,"githubUrl":"https://github.com/vectordotdev/vector/blob/3708c39b12a93212ed8b8d7510b4cc7769cb5864/src/sources/splunk_hec/mod.rs#L626-L662","documentation":"The splunk_hec source forwards decoded events downstream with out.send_batch(events).await. Its SourceSender is built without a send timeout - backpressure is expressed by the bounded channel simply not resolving - so SendError::Timeout is impossible by construction and marked unreachable!('No timeout is configured for this source.')","triggerScenarios":"The output pipeline handed to the source being constructed with a send timeout (custom embedding wiring a timed SourceSender, or an internal change enabling per-source send_timeout), combined with downstream backpressure causing a timeout instead of blocking.","commonSituations":"Custom builds that run the source outside the standard topology builder and add send timeouts; experimental Vector versions trialing timed source channels; not reachable in stock configurations.","solutions":["If embedding, build the source output the way the topology builder does - no send timeout, let the bounded channel backpressure","Upgrade Vector if seen on a released binary - stock wiring never sets a timeout here","Report with the config: it indicates custom wiring or a regression in sender construction","Check whether downstream sink stalls (the actual cause of send delays) can be relieved with buffering or sink tuning"],"exampleFix":"// before (embedding): sender built with a timeout -> SendError::Timeout becomes reachable\nlet (tx, rx) = SourceSender::new_with_send_timeout(buffer, Duration::from_secs(5));\n\n// after: plain bounded sender; backpressure instead of timeout\nlet (tx, rx) = SourceSender::new_with_buffer(buffer);","handlingStrategy":"validation","validationCode":"// Before wiring the source, ensure its output sender has no send timeout configured.\n// The stock topology builder guarantees this; custom code must mirror it - e.g.\nlet (tx, _rx) = SourceSender::new_with_buffer(buffer); // no timeout variant\n// If a timed sender is unavoidable, don't attach the splunk_hec source to that pipeline.","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use standard topology wiring for splunk_hec; don't hand-build its output channel","Keep experiments with timed source channels away from sources asserting 'no timeout'","Report occurrences on stock builds as regressions"],"tags":["rust","vector","splunk-hec","source","channel","timeout","panic","invariant"],"backgroundTag":"channel-send-timeout","analyzedSha":"3708c39b12a93212ed8b8d7510b4cc7769cb5864","analyzedAt":"2026-08-20T07:02:18.786Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}