Skip to content

Commit ffdd843

Browse files
committed
refactor cutting new batch
1 parent 56e3700 commit ffdd843

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

ydb/_topic_reader/datatypes.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,3 +179,19 @@ def _extend(self, batch: PublicBatch) -> None:
179179
def _pop(self) -> Tuple[List[PublicMessage], bool]:
180180
msgs_left = True if len(self.messages) > 1 else False
181181
return self.messages.pop(0), msgs_left
182+
183+
def _pop_batch(self, size: int) -> PublicBatch:
184+
initial_length = len(self.messages)
185+
one_message_size = self._bytes_size // initial_length
186+
187+
new_batch = PublicBatch(
188+
messages=self.messages[:size],
189+
_partition_session=self._partition_session,
190+
_bytes_size=one_message_size * size,
191+
_codec=self._codec,
192+
)
193+
194+
self.messages = self.messages[size:]
195+
self._bytes_size = one_message_size * (initial_length - size)
196+
197+
return new_batch

ydb/_topic_reader/topic_reader_asyncio.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,9 @@ def receive_batch_nowait(self, max_messages: Optional[int] = None):
421421
self._buffer_release_bytes(batch._bytes_size)
422422
return batch
423423

424-
cutted_batch, remaining_batch = self._cut_batch_by_max_messages(batch, max_messages)
424+
cutted_batch = batch._pop_batch(size=max_messages)
425425

426-
self._message_batches[part_sess_id] = remaining_batch
426+
self._message_batches[part_sess_id] = batch
427427
self._buffer_release_bytes(cutted_batch._bytes_size)
428428

429429
return cutted_batch

0 commit comments

Comments
 (0)