Fix bug causing KafkaProducer to double-compress message batches on retry
This commit is contained in:
@@ -89,6 +89,12 @@ class MessageSetBuffer(object):
|
||||
return self._buffer.tell() >= self._batch_size
|
||||
|
||||
def close(self):
|
||||
# This method may be called multiple times on the same batch
|
||||
# i.e., on retries
|
||||
# we need to make sure we only close it out once
|
||||
# otherwise compressed messages may be double-compressed
|
||||
# see Issue 718
|
||||
if not self._closed:
|
||||
if self._compressor:
|
||||
# TODO: avoid copies with bytearray / memoryview
|
||||
self._buffer.seek(4)
|
||||
@@ -105,6 +111,7 @@ class MessageSetBuffer(object):
|
||||
size = self._buffer.tell() - 4
|
||||
self._buffer.seek(0)
|
||||
self._buffer.write(Int32.encode(size))
|
||||
|
||||
self._buffer.seek(0)
|
||||
self._closed = True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user