@@ -51,10 +51,30 @@ class TSessionInfo {
51
51
return Generation;
52
52
}
53
53
54
- void Update (const TActorId& actorId, ui64 generation) {
54
+ void Handle (IActorOps* ops, TEvService::TEvHandshake::TPtr& ev) {
55
+ const ui64 generation = ev->Get ()->Record .GetController ().GetGeneration ();
55
56
Y_ABORT_UNLESS (Generation <= generation);
56
- ActorId = actorId;
57
+
58
+ ActorId = ev->Sender ;
57
59
Generation = generation;
60
+
61
+ auto status = MakeHolder<TEvService::TEvStatus>();
62
+ auto & record = status->Record ;
63
+
64
+ for (const auto & [id, _] : Workers) {
65
+ id.Serialize (*record.AddWorkers ());
66
+ }
67
+
68
+ ops->Send (ActorId, status.Release ());
69
+
70
+ TVector<TRowVersion> versionsWithoutTxId;
71
+ for (const auto & [version, _] : PendingTxId) {
72
+ versionsWithoutTxId.push_back (version);
73
+ }
74
+
75
+ if (versionsWithoutTxId) {
76
+ ops->Send (ActorId, new TEvService::TEvGetTxId (versionsWithoutTxId));
77
+ }
58
78
}
59
79
60
80
bool HasWorker (const TWorkerId& id) const {
@@ -116,17 +136,6 @@ class TSessionInfo {
116
136
ops->Send (ActorId, new TEvService::TEvWorkerStatus (id, std::forward<Args>(args)...));
117
137
}
118
138
119
- void SendStatus (IActorOps* ops) const {
120
- auto ev = MakeHolder<TEvService::TEvStatus>();
121
- auto & record = ev->Record ;
122
-
123
- for (const auto & [id, _] : Workers) {
124
- id.Serialize (*record.AddWorkers ());
125
- }
126
-
127
- ops->Send (ActorId, ev.Release ());
128
- }
129
-
130
139
void SendWorkerDataEnd (IActorOps* ops, const TWorkerId& id, ui64 partitionId,
131
140
const TVector<ui64>&& adjacentPartitionsIds, const TVector<ui64>&& childPartitionsIds)
132
141
{
@@ -350,8 +359,7 @@ class TReplicationService: public TActorBootstrapped<TReplicationService> {
350
359
return ;
351
360
}
352
361
353
- session.Update (ev->Sender , controller.GetGeneration ());
354
- session.SendStatus (this );
362
+ session.Handle (this , ev);
355
363
}
356
364
357
365
template <typename ... Args>
0 commit comments