22
33namespace NKikimr ::NPQ::NMLP {
44
5- TMessageEnricherActor::TMessageEnricherActor (ui32 partitionId, const TActorId& partitionActor , const TString& consumerName, std::deque<TReadResult>&& replies)
5+ TMessageEnricherActor::TMessageEnricherActor (const TActorId& tabletActorId, ui32 partitionId , const TString& consumerName, std::deque<TReadResult>&& replies)
66 : TBaseActor(NKikimrServices::EServiceKikimr::PQ_MLP_ENRICHER)
7+ , TabletActorId(tabletActorId)
78 , PartitionId(partitionId)
8- , PartitionActorId(partitionActor)
99 , ConsumerName(consumerName)
1010 , Queue(std::move(replies))
1111 , Backoff(5 , TDuration::MilliSeconds(50 ))
@@ -28,22 +28,17 @@ void TMessageEnricherActor::PassAway() {
2828 TBase::PassAway ();
2929}
3030
31- void TMessageEnricherActor::Handle (TEvPQ::TEvProxyResponse::TPtr& ev) {
32- LOG_D (" Handle TEvPQ::TEvProxyResponse" );
33- if (Cookie != GetCookie (ev)) {
34- // TODO MLP
35- LOG_D (" Cookie mismatch: " << Cookie << " != " << GetCookie (ev));
36- // return PassAway();
37- }
31+ void TMessageEnricherActor::Handle (TEvPersQueue::TEvResponse::TPtr& ev) {
32+ LOG_D (" Handle TEvPersQueue::TEvResponse" );
3833
3934 if (!IsSucess (ev)) {
40- LOG_W (" Fetch messages failed: " << ev->Get ()->Response -> DebugString ());
35+ LOG_W (" Fetch messages failed: " << ev->Get ()->Record . DebugString ());
4136 return PassAway ();
4237 }
4338
44- auto & response = ev->Get ()->Response ;
45- if (response-> GetPartitionResponse ().HasCmdReadResult ()) {
46- for (auto & result : response-> GetPartitionResponse ().GetCmdReadResult ().GetResult ()) {
39+ auto & response = ev->Get ()->Record ;
40+ if (response. GetPartitionResponse ().HasCmdReadResult ()) {
41+ for (auto & result : response. GetPartitionResponse ().GetCmdReadResult ().GetResult ()) {
4742 auto offset = result.GetOffset ();
4843
4944 while (!Queue.empty ()) {
@@ -54,7 +49,6 @@ void TMessageEnricherActor::Handle(TEvPQ::TEvProxyResponse::TPtr& ev) {
5449 while (!reply.Offsets .empty () && offset > reply.Offsets .front ()) {
5550 reply.Offsets .pop_front ();
5651 }
57- // TODO MLP multi part messages
5852 if (!reply.Offsets .empty () && offset == reply.Offsets .front ()) {
5953 auto * message = PendingResponse->Record .AddMessage ();
6054 message->MutableId ()->SetPartitionId (PartitionId);
@@ -100,7 +94,7 @@ void TMessageEnricherActor::Handle(TEvents::TEvWakeup::TPtr&) {
10094
10195STFUNC (TMessageEnricherActor::StateWork) {
10296 switch (ev->GetTypeRewrite ()) {
103- hFunc (TEvPQ::TEvProxyResponse , Handle);
97+ hFunc (TEvPersQueue::TEvResponse , Handle);
10498 hFunc (TEvPQ::TEvError, Handle);
10599 hFunc (TEvents::TEvWakeup, Handle);
106100 sFunc (TEvents::TEvPoison, PassAway);
@@ -122,8 +116,17 @@ void TMessageEnricherActor::ProcessQueue() {
122116 auto firstOffset = reply.Offsets .front ();
123117 auto lastOffset = Queue.back ().Offsets .back ();
124118 auto count = lastOffset - firstOffset + 1 ;
125- LOG_D (" Fetching from offset " << firstOffset << " count " << count << " from " << PartitionActorId);
126- Send (PartitionActorId, MakeEvRead (SelfId (), ConsumerName, firstOffset, count, ++Cookie));
119+ LOG_D (" Fetching from offset " << firstOffset << " count " << count << " from " << TabletActorId);
120+
121+ auto request = std::make_unique<TEvPersQueue::TEvRequest>();
122+ auto * partitionRequest = request->Record .MutablePartitionRequest ();
123+ partitionRequest->SetPartition (PartitionId);
124+ auto * read = partitionRequest->MutableCmdRead ();
125+ read->SetClientId (ConsumerName);
126+ read->SetOffset (firstOffset);
127+ read->SetTimeoutMs (0 );
128+
129+ Send (TabletActorId, std::move (request), 0 , ++Cookie);
127130
128131 return ;
129132 }
0 commit comments