@@ -24,6 +24,7 @@ class TShardScannerInfo {
2424private:
2525 std::optional<TActorId> ActorId;
2626 const ui64 TabletId;
27+ const ui64 Generation;
2728 i64 DataChunksInFlightCount = 0 ;
2829 bool TracingStarted = false ;
2930 const ui64 FreeSpace = (ui64)8 << 20 ;
@@ -46,18 +47,19 @@ class TShardScannerInfo {
4647 TracingStarted = true ;
4748 }
4849 if (NActors::TlsActivationContext) {
49- NActors::TActivationContext::AsActorContext ().Send (*ActorId, new TEvKqpCompute::TEvScanDataAck (FreeSpace, TabletId , 1 ), flags, TabletId);
50+ NActors::TActivationContext::AsActorContext ().Send (*ActorId, new TEvKqpCompute::TEvScanDataAck (FreeSpace, Generation , 1 ), flags, TabletId);
5051 }
5152 }
5253public:
5354 TShardScannerInfo (TShardState& state, const IExternalObjectsProvider& externalObjectsProvider)
5455 : TabletId(state.TabletId)
56+ , Generation(++state.Generation)
5557 {
5658 const bool subscribed = std::exchange (state.SubscribedOnTablet , true );
5759
5860 const auto & keyColumnTypes = externalObjectsProvider.GetKeyColumnTypes ();
5961 auto ranges = state.GetScanRanges (keyColumnTypes);
60- auto ev = externalObjectsProvider.BuildEvKqpScan (0 , TabletId , ranges);
62+ auto ev = externalObjectsProvider.BuildEvKqpScan (0 , Generation , ranges);
6163
6264 AFL_DEBUG (NKikimrServices::KQP_COMPUTE)(" event" , " start_scanner" )(" info" , state.ToString (keyColumnTypes))
6365 (" range" , DebugPrintRanges (keyColumnTypes, ranges, *AppData ()->TypeRegistry ))(" subscribed" , subscribed);
@@ -278,9 +280,9 @@ class TInFlightShards: public NComputeActor::TScanShardsStatistics {
278280 }
279281 }
280282
281- void RegisterScannerActor (const ui64 tabletId, const TActorId& scanActorId) {
283+ void RegisterScannerActor (const ui64 tabletId, const ui64 generation, const TActorId& scanActorId) {
282284 auto state = GetShardState (tabletId);
283- if (!state) {
285+ if (!state || generation != state-> Generation ) {
284286 return ;
285287 }
286288 AFL_ENSURE (state->State == NComputeActor::EShardState::Starting)(" state" , state->State );
0 commit comments