Optimize response body length reporting in OkHttp instrumentation #1790
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.
What does this PR do?
This PR optimizes the way we are reporting response body length in OkHttp instrumentation.
We first try to get content length from response body as-is, and if it didn't work, we try to call
peekBody
. The explanation to that is related to the way OkHttp works: the following doc states, that OkHttp will removeContent-Length
header (and makecontentLength()
return -1) if transparent compression is used. This means that ifbody.contentLength
returns positive value, then we are good already, and if it is not, we may try to callpeekBody
which will apply decompression and load a decompressed body in memory.Another benefit is that now we can report body length more than 1MB, because
peekBody
was limited by 1MB and if there is no need to call it, we may report full body length.Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Review checklist (to be filled by reviewers)