Vector acks messages sent by S3 source even when delivery failed #19711
Labels
domain: delivery
Anything related to delivering events within Vector such as end-to-end acknowledgements
sink: gcp_pubsub
Anything `gcp_pubsub` sink related
type: bug
A code related bug.
A note for the community
Problem
I am sending messages from S3 to GCP PubSub using Vector.
I have observed that messages rejected by the PubSub sink for non-retryable errors (ex: 400, 403) are dropped.
The dropped messages are deleted from SQS, even with a DLQ configured on my SQS.
I would expect that the SQS message not be deleted per Vector’s end-to-end-acknowledgement guarantee.
Expected behavior: Vector should delete messages in S3 only if delivery to the sink is successful. I have traced this issue back to the S3 source code here:
The
BatchStatus::Rejected
case should callErr(ProcessingError::ErrorAcknowledgement)
.This would allow failed messages to be DLQed, as the user can configure a DLQ on their SQS and set custom values for maximum retries and visibility timeout.
This fix could potentially be a configuration based approach, with a parameter such as
strict_ack = true
preventing Vector's overeager deletion.Configuration
No response
Version
0.33.0
Debug Output
No response
Example Data
No response
Additional Context
No response
References
#14899
#14708
#10870
The text was updated successfully, but these errors were encountered: