Drain response body on exec call to enable keep-alive connection reuse #111
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently library generates big amount or errors on ClickHouse side:
ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer
That's happens because of improper close of response body.
Documentation in net/http/response code states that to reuse keep-alive clients require to both read to competition and close body:
https://go.googlesource.com/go/+/go1.15.7/src/net/http/response.go#63
Unfortunately library only close response body without reading response body which leads to dropping keep-alive connections instead of reuse.
Also good discussion about this issue could be found here: google/go-github#317
Tested on ClickHouse versions 19.16.12.49 and 20.8.12.2