Skip to content

Commit 181fb89

Browse files
committed
Partition autosplit feature
1 parent 228bb52 commit 181fb89

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

ydb/_grpc/grpcwrapper/ydb_topic.py

+22
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,20 @@ def to_proto(self) -> ydb_topic_pb2.StreamReadMessage.StopPartitionSessionRespon
696696
partition_session_id=self.partition_session_id,
697697
)
698698

699+
@dataclass
700+
class EndPartitionSession(IFromProto):
701+
partition_session_id: int
702+
adjacent_partition_ids: List[int]
703+
child_partition_ids: List[int]
704+
705+
@staticmethod
706+
def from_proto(msg: ydb_topic_pb2.StreamReadMessage.EndPartitionSession):
707+
return StreamReadMessage.EndPartitionSession(
708+
partition_session_id=msg.partition_session_id,
709+
adjacent_partition_ids=list(msg.adjacent_partition_ids),
710+
child_partition_ids=list(msg.child_partition_ids),
711+
)
712+
699713
@dataclass
700714
class FromClient(IToProto):
701715
client_message: "ReaderMessagesFromClientToServer"
@@ -775,6 +789,13 @@ def from_proto(
775789
msg.partition_session_status_response
776790
),
777791
)
792+
elif mess_type == "end_partition_session":
793+
return StreamReadMessage.FromServer(
794+
server_status=server_status,
795+
server_message=StreamReadMessage.EndPartitionSession.from_proto(
796+
msg.end_partition_session,
797+
)
798+
)
778799
else:
779800
raise issues.UnexpectedGrpcMessage(
780801
"Unexpected message while parse ReaderMessagesFromServerToClient: '%s'" % mess_type
@@ -799,6 +820,7 @@ def from_proto(
799820
UpdateTokenResponse,
800821
StreamReadMessage.StartPartitionSessionRequest,
801822
StreamReadMessage.StopPartitionSessionRequest,
823+
StreamReadMessage.EndPartitionSession,
802824
]
803825

804826

ydb/_topic_reader/topic_reader_asyncio.py

+9
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,12 @@ async def _read_messages_loop(self):
498498
):
499499
self._on_partition_session_stop(message.server_message)
500500

501+
elif isinstance(
502+
message.server_message,
503+
StreamReadMessage.EndPartitionSession,
504+
):
505+
self._on_end_partition_session(message.server_message)
506+
501507
elif isinstance(message.server_message, UpdateTokenResponse):
502508
self._update_token_event.set()
503509

@@ -575,6 +581,9 @@ def _on_partition_session_stop(self, message: StreamReadMessage.StopPartitionSes
575581
)
576582
)
577583

584+
def _on_end_partition_session(self, message: StreamReadMessage.EndPartitionSession):
585+
logger.debug(f"End partition session with id: {message.partition_session_id}")
586+
578587
def _on_read_response(self, message: StreamReadMessage.ReadResponse):
579588
self._buffer_consume_bytes(message.bytes_size)
580589

0 commit comments

Comments
 (0)