go-graphite / carbon-clickhouse

Graphite metrics receiver with ClickHouse as storage
MIT License
187 stars 47 forks source link

uploader: handle X-Clickhouse-Exception-Code header #138

Closed teqwve closed 7 months ago

teqwve commented 7 months ago

Hi,

we noticed that in case of an error ClickHouse sometimes can return a status code 200 with an actual error in X-Clickhouse-Exception-Code header. This PR adds failing upload when this header is present in the response.

We sometimes observed that happening after a timeout error on ClickHouse end. In the response there was a status code 200 and a 209 code in X-ClickHouse-Exception-Code ('socket timeout'). It caused a sporadic metric loss as ClickHouse didn't read the whole body and carbon-clickhouse considered the upload to be successful.

I've also found a similar issue created for ClickHouse tests - https://github.com/ClickHouse/ClickHouse/issues/44885.