diff options
author | Dana Powers <dana.powers@gmail.com> | 2016-03-13 14:12:27 -0700 |
---|---|---|
committer | Dana Powers <dana.powers@gmail.com> | 2016-03-13 15:08:13 -0700 |
commit | 4ffd4e94e05e9494bd5ec32bd1037f65ed820986 (patch) | |
tree | b1e2498f9cda5b283a7a637f516c68b22fcec799 /kafka/producer/buffer.py | |
parent | f98985263908665ae5a0891ad1ee4eeacc39367a (diff) | |
download | kafka-python-truncate_buffer.tar.gz |
Always truncate deallocated produce message bufferstruncate_buffer
Diffstat (limited to 'kafka/producer/buffer.py')
-rw-r--r-- | kafka/producer/buffer.py | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/kafka/producer/buffer.py b/kafka/producer/buffer.py index 74ba5da..8c83ffc 100644 --- a/kafka/producer/buffer.py +++ b/kafka/producer/buffer.py @@ -191,19 +191,12 @@ class SimpleBufferPool(object): buffer_ (io.BytesIO): The buffer to return """ with self._lock: - capacity = buf.seek(0, 2) - - # free extra memory if needed - if capacity > self._poolable_size: - # BytesIO (cpython) only frees memory if 2x reduction or more - trunc_to = int(min(capacity / 2, self._poolable_size)) - buf.truncate(trunc_to) - - buf.seek(0) - #buf.write(bytearray(12)) - #buf.seek(0) + # BytesIO.truncate here makes the pool somewhat pointless + # but we stick with the BufferPool API until migrating to + # bytesarray / memoryview. The buffer we return must not + # expose any prior data on read(). + buf.truncate(0) self._free.append(buf) - if self._waiters: self._waiters[0].notify() |