summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Powers <dana.powers@gmail.com>2016-03-13 14:12:27 -0700
committerDana Powers <dana.powers@gmail.com>2016-03-13 15:08:13 -0700
commit4ffd4e94e05e9494bd5ec32bd1037f65ed820986 (patch)
treeb1e2498f9cda5b283a7a637f516c68b22fcec799
parentf98985263908665ae5a0891ad1ee4eeacc39367a (diff)
downloadkafka-python-truncate_buffer.tar.gz
Always truncate deallocated produce message bufferstruncate_buffer
-rw-r--r--kafka/producer/buffer.py17
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()