@@ -1151,6 +1151,7 @@ namespace NKikimr {
11511151 HFunc (TEvHive::TEvAdoptTablet, Handle);
11521152 HFunc (TEvHive::TEvDeleteTablet, Handle);
11531153 HFunc (TEvHive::TEvDeleteOwnerTablets, Handle);
1154+ HFunc (TEvHive::TEvStopTablet, Handle);
11541155 HFunc (TEvHive::TEvRequestHiveInfo, Handle);
11551156 HFunc (TEvHive::TEvInitiateTabletExternalBoot, Handle);
11561157 HFunc (TEvHive::TEvUpdateTabletsObject, Handle);
@@ -1179,7 +1180,7 @@ namespace NKikimr {
11791180
11801181 void Handle (TEvHive::TEvCreateTablet::TPtr& ev, const TActorContext& ctx) {
11811182 LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvCreateTablet, msg: " << ev->Get ()->Record .ShortDebugString ());
1182- Cout << " FAKEHIVE " << TabletID () << " TEvCreateTablet " << ev->Get ()->Record .ShortDebugString () << Endl;
1183+ Cerr << " FAKEHIVE " << TabletID () << " TEvCreateTablet " << ev->Get ()->Record .ShortDebugString () << Endl;
11831184 NKikimrProto::EReplyStatus status = NKikimrProto::OK;
11841185 const std::pair<ui64, ui64> key (ev->Get ()->Record .GetOwner (), ev->Get ()->Record .GetOwnerIdx ());
11851186 const auto type = ev->Get ()->Record .GetTabletType ();
@@ -1256,6 +1257,9 @@ namespace NKikimr {
12561257 auto & boundChannels = ev->Get ()->Record .GetBindedChannels ();
12571258 it->second .BoundChannels .assign (boundChannels.begin (), boundChannels.end ());
12581259 it->second .ChannelsProfile = ev->Get ()->Record .GetChannelsProfile ();
1260+
1261+ it->second .State = ETabletState::ReadyToWork;
1262+ it->second .ObjectDomain = TSubDomainKey (ev->Get ()->Record .GetObjectDomain ());
12591263 }
12601264
12611265 ctx.Send (ev->Sender , new TEvHive::TEvCreateTabletReply (status, key.first ,
@@ -1355,7 +1359,7 @@ namespace NKikimr {
13551359 void Handle (TEvHive::TEvDeleteTablet::TPtr &ev, const TActorContext &ctx) {
13561360 LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvDeleteTablet, msg: " << ev->Get ()->Record .ShortDebugString ());
13571361 NKikimrHive::TEvDeleteTablet& rec = ev->Get ()->Record ;
1358- Cout << " FAKEHIVE " << TabletID () << " TEvDeleteTablet " << rec.ShortDebugString () << Endl;
1362+ Cerr << " FAKEHIVE " << TabletID () << " TEvDeleteTablet " << rec.ShortDebugString () << Endl;
13591363 TVector<ui64> deletedIdx;
13601364 for (size_t i = 0 ; i < rec.ShardLocalIdxSize (); ++i) {
13611365 auto id = std::make_pair<ui64, ui64>(rec.GetShardOwnerId (), rec.GetShardLocalIdx (i));
@@ -1368,7 +1372,7 @@ namespace NKikimr {
13681372 void Handle (TEvHive::TEvDeleteOwnerTablets::TPtr &ev, const TActorContext &ctx) {
13691373 LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvDeleteOwnerTablets, msg: " << ev->Get ()->Record );
13701374 NKikimrHive::TEvDeleteOwnerTablets& rec = ev->Get ()->Record ;
1371- Cout << " FAKEHIVE " << TabletID () << " TEvDeleteOwnerTablets " << rec.ShortDebugString () << Endl;
1375+ Cerr << " FAKEHIVE " << TabletID () << " TEvDeleteOwnerTablets " << rec.ShortDebugString () << Endl;
13721376 auto ownerId = rec.GetOwner ();
13731377 TVector<ui64> toDelete;
13741378
@@ -1400,6 +1404,34 @@ namespace NKikimr {
14001404 ctx.Send (ev->Sender , new TEvHive::TEvDeleteOwnerTabletsReply (NKikimrProto::OK, TabletID (), ownerId, rec.GetTxId ()));
14011405 }
14021406
1407+ void StopTablet (const ui64& tabletId, const TActorContext &ctx) {
1408+ auto ownerIt = State->TabletIdToOwner .find (tabletId);
1409+ if (ownerIt == State->TabletIdToOwner .end ()) {
1410+ return ;
1411+ }
1412+ auto it = State->Tablets .find (ownerIt->second );
1413+ if (it == State->Tablets .end ()) {
1414+ return ;
1415+ }
1416+
1417+ TFakeHiveTabletInfo& tabletInfo = it->second ;
1418+
1419+ // Very similar to DeleteTablet but don't actually removes tablet
1420+ // Kill the tablet and don't restart it
1421+ TActorId bootstrapperActorId = tabletInfo.BootstrapperActorId ;
1422+ ctx.Send (bootstrapperActorId, new TEvBootstrapper::TEvStandBy ());
1423+
1424+ tabletInfo.State = ETabletState::Stopped;
1425+ }
1426+
1427+ void Handle (TEvHive::TEvStopTablet::TPtr &ev, const TActorContext &ctx) {
1428+ LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvStopTablet, msg: " << ev->Get ()->Record .ShortDebugString ());
1429+ NKikimrHive::TEvStopTablet& rec = ev->Get ()->Record ;
1430+ Cerr << " FAKEHIVE " << TabletID () << " TEvStopTablet " << rec.ShortDebugString () << Endl;
1431+ StopTablet (rec.GetTabletID (), ctx);
1432+ ctx.Send (ev->Sender , new TEvHive::TEvStopTabletResult (NKikimrProto::OK, rec.GetTabletID ()));
1433+ }
1434+
14031435 void Handle (TEvHive::TEvRequestHiveInfo::TPtr &ev, const TActorContext &ctx) {
14041436 LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvRequestHiveInfo, msg: " << ev->Get ()->Record .ShortDebugString ());
14051437 const auto & record = ev->Get ()->Record ;
@@ -1451,15 +1483,15 @@ namespace NKikimr {
14511483
14521484 void Handle (TEvHive::TEvUpdateDomain::TPtr &ev, const TActorContext &ctx) {
14531485 LOG_INFO_S (ctx, NKikimrServices::HIVE, " [" << TabletID () << " ] TEvUpdateDomain, msg: " << ev->Get ()->Record .ShortDebugString ());
1454-
1486+
14551487 const TSubDomainKey subdomainKey (ev->Get ()->Record .GetDomainKey ());
14561488 NHive::TDomainInfo& domainInfo = State->Domains [subdomainKey];
14571489 if (ev->Get ()->Record .HasServerlessComputeResourcesMode ()) {
14581490 domainInfo.ServerlessComputeResourcesMode = ev->Get ()->Record .GetServerlessComputeResourcesMode ();
14591491 } else {
14601492 domainInfo.ServerlessComputeResourcesMode .Clear ();
14611493 }
1462-
1494+
14631495 auto response = std::make_unique<TEvHive::TEvUpdateDomainReply>();
14641496 response->Record .SetTxId (ev->Get ()->Record .GetTxId ());
14651497 response->Record .SetOrigin (TabletID ());
@@ -1511,7 +1543,8 @@ namespace NKikimr {
15111543 tabletInfo.SetTabletID (tabletId);
15121544 if (info) {
15131545 tabletInfo.SetTabletType (info->Type );
1514- tabletInfo.SetState (200 ); // THive::ReadyToWork
1546+ tabletInfo.SetState (ui32 (info->State )); // THive::ETabletState::*
1547+ tabletInfo.MutableObjectDomain ()->CopyFrom (info->ObjectDomain );
15151548
15161549 // TODO: fill other fields when needed
15171550 }
0 commit comments