Repository navigation
Dlq pipeline fix - #7190
Dlq pipeline fix#7190graytaylor0 wants to merge 2 commits into
Conversation
The DLQ (failure) pipeline uses a HeadlessPipelineSource which writes events to its buffer via sendEvents(). When a circuit breaker is active, the buffer is wrapped with CircuitBreakingBuffer which throws TimeoutException when the breaker is open. This causes DLQ writes to block indefinitely (with acks enabled) or release with false (without acks), preventing acknowledgements from completing upstream. Since the DLQ pipeline exists specifically to drain failed events, blocking it under memory pressure defeats its purpose and can cascade into negative acknowledgements on the source pipeline's Kafka buffer. Skip applying CircuitBreakingBuffer to HeadlessPipelineSource pipelines, matching the existing skip for PipelineConnector sources. Signed-off-by: Taylor Gray <tylgry@amazon.com>
Previously, when both a per-sink S3 DLQ and a global failure pipeline (dlq_pipeline) were configured, the failure pipeline always took precedence. This meant the S3 DLQ configured on the OpenSearch sink was never used. This caused problems when the failure pipeline writes to the same OpenSearch cluster that is experiencing issues — the failure pipeline would also fail, blocking acknowledgements indefinitely (with acks enabled) or causing negative acks upstream. New priority order for handling failed documents: 1. S3 DLQ file writer (dlqFileWriter) — if configured 2. S3 DLQ writer (dlqWriter) — if configured on the sink 3. Failure pipeline (dlq_pipeline) — fallback if no sink-level DLQ 4. Log warning and release(false) — nothing configured If S3 DLQ write fails, fall back to the failure pipeline. If no failure pipeline exists either, release with false. Signed-off-by: Taylor Gray <tylgry@amazon.com>
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
Description
[Describe what this change achieves]
Issues Resolved
Resolves #[Issue number to be closed when this PR is merged]
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.