Repository navigation
QuestionThe Clickhouse sink reports that it supports end-to-end acks, I'm just curious about the mechanism. My guess is that it's separate from the async insert settings, in which case the writes can still fail without the source knowing (if query_settings.async_insert_settings.enabled is true and async_insert_settings.wait_for_processing is false). I just want to confirm the behavior so I can document it for my users. Vector ConfigNo response Vector LogsNo response |
Replies: 2 comments 1 reply
|
Hi @bmtcril Did you managed to find an answer for this? |
|
Yes, your understanding is correct. With end-to-end acknowledgements enabled, Vector acknowledges successful delivery based on the ClickHouse HTTP response. It does not separately check whether an asynchronous insert succeeded after that response. With
These settings live under Verified on Vector 0.60.0 with an HTTP source and a mock ClickHouse endpoint: the source waited for the sink response, HTTP 200 completed successfully, and HTTP 400 produced an upstream failure. I also checked the outgoing query parameters for both settings. Please don't hesitate to followup in this thread if you have further questions. |
Yes, your understanding is correct. With end-to-end acknowledgements enabled, Vector acknowledges successful delivery based on the ClickHouse HTTP response. It does not separately check whether an asynchronous insert succeeded after that response.
With
async_insert_settings.enabled: true:wait_for_processing: falsemaps to ClickHouse'swait_for_async_insert=0. ClickHouse can acknowledge the data while it is still buffered. A later insert failure cannot be reported back through the already-completed Vector request.wait_for_processing: truemaps towait_for_async_insert=1. ClickHouse waits for the buffered insert to finish and returns processing errors to the client. This is the mode to u…