Grow buffer if histogram can't fit #398
Merged
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.
When we serialize a histogram to a byte array, the intermediate
ByteBuffer that we pass may be too small which may result in silent
truncation of the encoded histogram.
This will manifest on the driver side as a decoding failure. However,
because the driver side retries this request on failure, it will attempt
to get the histogram from the remote worker a second time but
histogram reads are "destructive" - they clear the source histogram.
So the second read will succeed because the histogram is much
smaller (it is almost empty), but it leads to only sampling about 1
second worth of data at the end of the test.
This change detects this case and grows the buffer by a
factor of 2 until it fits.
Fixes #369.