@@ -8233,6 +8233,69 @@ Y_UNIT_TEST_SUITE(THiveTest) {
82338233 }
82348234 }
82358235
8236+ Y_UNIT_TEST (TestReassignNonexistentTablet) {
8237+ TTestBasicRuntime runtime (1 , false );
8238+ Setup (runtime, true );
8239+
8240+ const ui64 hiveTablet = MakeDefaultHiveID ();
8241+ const ui64 testerTablet = MakeTabletID (false , 1 );
8242+ const TActorId hiveActor = CreateTestBootstrapper (runtime, CreateTestTabletInfo (hiveTablet, TTabletTypes::Hive), &CreateDefaultHive);
8243+ runtime.EnableScheduleForActor (hiveActor);
8244+ MakeSureTabletIsUp (runtime, hiveTablet, 0 );
8245+ TActorId sender = runtime.AllocateEdgeActor (0 );
8246+
8247+ {
8248+ TDispatchOptions options;
8249+ options.FinalEvents .emplace_back (TEvLocal::EvSyncTablets);
8250+ runtime.DispatchEvents (options);
8251+ }
8252+
8253+ THolder<TEvHive::TEvCreateTablet> createTablet = MakeHolder<TEvHive::TEvCreateTablet>(testerTablet, 1 , TTabletTypes::Dummy, BINDED_CHANNELS);
8254+ ui64 tablet = SendCreateTestTablet (runtime, hiveTablet, testerTablet, std::move (createTablet), 0 , true );
8255+
8256+ MakeSureTabletIsUp (runtime, tablet, 0 );
8257+
8258+ {
8259+ NActorsProto::TRemoteHttpInfo pb;
8260+ pb.SetMethod (HTTP_METHOD_POST);
8261+ pb.SetPath (" /app" );
8262+ auto * p1 = pb.AddQueryParams ();
8263+ p1->SetKey (" TabletID" );
8264+ p1->SetValue (TStringBuilder () << hiveTablet);
8265+ auto * p2 = pb.AddQueryParams ();
8266+ p2->SetKey (" page" );
8267+ p2->SetValue (" ReassignTablet" );
8268+ auto * p3 = pb.AddQueryParams ();
8269+ p3->SetKey (" tablet" );
8270+ p3->SetValue (" 52" );
8271+ runtime.SendToPipe (hiveTablet, sender, new NMon::TEvRemoteHttpInfo (std::move (pb)), 0 , GetPipeConfigWithRetries ());
8272+
8273+ TAutoPtr<IEventHandle> handle;
8274+ auto resp = runtime.GrabEdgeEventRethrow <NMon::TEvRemoteJsonInfoRes>(handle);
8275+ Ctest << " Hive response: " << resp->Json << Endl;
8276+ NJson::TJsonValue value;
8277+ ReadJsonTree (resp->Json , &value, false );
8278+ UNIT_ASSERT_VALUES_EQUAL (value[" total" ].GetIntegerSafe (), 0 );
8279+ }
8280+
8281+ // this must not block balancer
8282+
8283+ {
8284+ THolder<TEvHive::TEvTabletMetrics> metrics = MakeHolder<TEvHive::TEvTabletMetrics>();
8285+ NKikimrHive::TTabletMetrics* metric = metrics->Record .AddTabletMetrics ();
8286+ metric->SetTabletID (tablet);
8287+ metric->MutableResourceUsage ()->SetNetwork (9000 );
8288+
8289+ runtime.SendToPipe (hiveTablet, sender, metrics.Release ());
8290+ }
8291+
8292+ {
8293+ TDispatchOptions options;
8294+ options.FinalEvents .push_back (NHive::TEvPrivate::EvBalancerOut);
8295+ runtime.DispatchEvents (options);
8296+ }
8297+ }
8298+
82368299 Y_UNIT_TEST (TestTabletsStartingCounter) {
82378300 TTestBasicRuntime runtime (1 , false );
82388301 Setup (runtime, true );
0 commit comments