openmessaging / benchmark

OpenMessaging Benchmark Framework
Apache License 2.0
393 stars 238 forks source link

Grow buffer if histogram can't fit #398

Closed travisdowns closed 10 months ago

travisdowns commented 11 months ago

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 https://github.com/openmessaging/benchmark/issues/369.