diff options
author | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-06-16 16:57:31 +0300 |
---|---|---|
committer | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-06-16 16:57:31 +0300 |
commit | 347ab632350e6336b7214cc6ce950f95ecffb105 (patch) | |
tree | 67f300400db1d91e1aff76f7b3ddca47a47c820f | |
parent | 99921e4d045bc6ef150667b2cf0d31dce4f4ab50 (diff) | |
download | ydb-347ab632350e6336b7214cc6ce950f95ecffb105.tar.gz |
fix metadata initialization store
-rw-r--r-- | ydb/services/ext_index/ut/ut_ext_index.cpp | 5 | ||||
-rw-r--r-- | ydb/services/metadata/initializer/accessor_init.cpp | 25 | ||||
-rw-r--r-- | ydb/services/metadata/initializer/accessor_init.h | 13 | ||||
-rw-r--r-- | ydb/services/metadata/initializer/controller.cpp | 4 | ||||
-rw-r--r-- | ydb/services/metadata/initializer/events.h | 16 | ||||
-rw-r--r-- | ydb/services/metadata/secret/ut/ut_secret.cpp | 16 |
6 files changed, 66 insertions, 13 deletions
diff --git a/ydb/services/ext_index/ut/ut_ext_index.cpp b/ydb/services/ext_index/ut/ut_ext_index.cpp index 6dee716603..e564c34d89 100644 --- a/ydb/services/ext_index/ut/ut_ext_index.cpp +++ b/ydb/services/ext_index/ut/ut_ext_index.cpp @@ -172,6 +172,11 @@ Y_UNIT_TEST_SUITE(ExternalIndex) { lHelper.StartDataRequest("SELECT COUNT(*) FROM `/Root/.metadata/cs_index/external`", true, &resultData); UNIT_ASSERT_EQUAL(resultData, "[0u]"); } + { + TString resultData; + lHelper.StartDataRequest("SELECT COUNT(*) FROM `/Root/.metadata/initialization/migrations`", true, &resultData); + UNIT_ASSERT_EQUAL(resultData, "[6u]"); + } } } diff --git a/ydb/services/metadata/initializer/accessor_init.cpp b/ydb/services/metadata/initializer/accessor_init.cpp index af6df1372a..434f3babc4 100644 --- a/ydb/services/metadata/initializer/accessor_init.cpp +++ b/ydb/services/metadata/initializer/accessor_init.cpp @@ -70,7 +70,21 @@ void TDSAccessorInitialized::DoNextModifier() { } } -void TDSAccessorInitialized::Handle(NRequest::TEvRequestFinished::TPtr& /*ev*/) { +void TDSAccessorInitialized::Handle(NActors::TEvents::TEvWakeup::TPtr& /*ev*/) { + Y_VERIFY(Modifiers.size()); + Modifiers.front()->Execute(std::make_shared<TModifierController>(SelfId()), Config); +} + +void TDSAccessorInitialized::Handle(TEvAlterFinished::TPtr& /*ev*/) { + DoNextModifier(); +} + +void TDSAccessorInitialized::Handle(TEvAlterProblem::TPtr& ev) { + AFL_ERROR(NKikimrServices::METADATA_INITIALIZER)("event", "alter_problem")("message", ev->Get()->GetErrorMessage()); + Schedule(TDuration::Seconds(1), new NModifications::TEvModificationFinished); +} + +void TDSAccessorInitialized::Handle(NModifications::TEvModificationFinished::TPtr& /*ev*/) { ALS_INFO(NKikimrServices::METADATA_INITIALIZER) << "modifiers count: " << Modifiers.size(); Y_VERIFY(Modifiers.size()); if (NProvider::TServiceOperator::IsEnabled() && InitializationSnapshot) { @@ -87,12 +101,9 @@ void TDSAccessorInitialized::Handle(NRequest::TEvRequestFinished::TPtr& /*ev*/) } } -void TDSAccessorInitialized::Handle(NModifications::TEvModificationFinished::TPtr& /*ev*/) { - DoNextModifier(); -} - -void TDSAccessorInitialized::Handle(NModifications::TEvModificationProblem::TPtr& /*ev*/) { - Schedule(TDuration::Seconds(1), new NRequest::TEvRequestFinished); +void TDSAccessorInitialized::Handle(NModifications::TEvModificationProblem::TPtr& ev) { + AFL_ERROR(NKikimrServices::METADATA_INITIALIZER)("event", "modification_problem")("message", ev->Get()->GetErrorMessage()); + Schedule(TDuration::Seconds(1), new NActors::TEvents::TEvWakeup); } TDSAccessorInitialized::TDSAccessorInitialized(const NRequest::TConfig& config, diff --git a/ydb/services/metadata/initializer/accessor_init.h b/ydb/services/metadata/initializer/accessor_init.h index b454a3a464..b5ac3c9102 100644 --- a/ydb/services/metadata/initializer/accessor_init.h +++ b/ydb/services/metadata/initializer/accessor_init.h @@ -27,9 +27,11 @@ private: void Handle(TEvInitializerPreparationStart::TPtr& ev); void Handle(TEvInitializerPreparationFinished::TPtr& ev); void Handle(TEvInitializerPreparationProblem::TPtr& ev); - void Handle(NRequest::TEvRequestFinished::TPtr& ev); + void Handle(NActors::TEvents::TEvWakeup::TPtr& ev); void Handle(NModifications::TEvModificationFinished::TPtr& ev); void Handle(NModifications::TEvModificationProblem::TPtr& ev); + void Handle(TEvAlterFinished::TPtr& ev); + void Handle(TEvAlterProblem::TPtr& ev); void DoNextModifier(); public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { @@ -44,14 +46,19 @@ public: STATEFN(StateMain) { switch (ev->GetTypeRewrite()) { - hFunc(NRequest::TEvRequestFinished, Handle); + hFunc(NActors::TEvents::TEvWakeup, Handle); hFunc(TEvInitializerPreparationStart, Handle); hFunc(TEvInitializerPreparationFinished, Handle); hFunc(TEvInitializerPreparationProblem, Handle); hFunc(NModifications::TEvModificationFinished, Handle); hFunc(NModifications::TEvModificationProblem, Handle); + hFunc(TEvAlterFinished, Handle); + hFunc(TEvAlterProblem, Handle); default: - break; + { + auto evType = ev->GetTypeName(); + Y_FAIL("unexpected event: %s", evType.data()); + } } } }; diff --git a/ydb/services/metadata/initializer/controller.cpp b/ydb/services/metadata/initializer/controller.cpp index b3cfd8e64f..7a76227f02 100644 --- a/ydb/services/metadata/initializer/controller.cpp +++ b/ydb/services/metadata/initializer/controller.cpp @@ -14,11 +14,11 @@ void TInitializerInput::OnPreparationProblem(const TString& errorMessage) const } void TInitializerInput::OnAlteringProblem(const TString& errorMessage) { - ActorId.Send(ActorId, new NModifications::TEvModificationProblem(errorMessage)); + ActorId.Send(ActorId, new TEvAlterProblem(errorMessage)); } void TInitializerInput::OnAlteringFinished() { - ActorId.Send(ActorId, new NModifications::TEvModificationFinished()); + ActorId.Send(ActorId, new TEvAlterFinished()); } void TInitializerOutput::OnInitializationFinished(const TString& id) const { diff --git a/ydb/services/metadata/initializer/events.h b/ydb/services/metadata/initializer/events.h index 6d26c7693b..93c4a36678 100644 --- a/ydb/services/metadata/initializer/events.h +++ b/ydb/services/metadata/initializer/events.h @@ -15,6 +15,8 @@ enum EEvents { EvInitializerPreparationFinished, EvInitializerPreparationProblem, EvInitializationFinished, + EvAlterFinished, + EvAlterProblem, EvEnd }; @@ -24,6 +26,20 @@ class TEvInitializerPreparationStart: public TEventLocal<TEvInitializerPreparati public: }; +class TEvAlterFinished: public TEventLocal<TEvAlterFinished, EEvents::EvAlterFinished> { +public: +}; + +class TEvAlterProblem: public TEventLocal<TEvAlterProblem, EEvents::EvAlterProblem> { +private: + YDB_READONLY_DEF(TString, ErrorMessage); +public: + TEvAlterProblem(const TString& errorMesage) + : ErrorMessage(errorMesage) { + + } +}; + class TEvInitializerPreparationFinished: public TEventLocal<TEvInitializerPreparationFinished, EEvents::EvInitializerPreparationFinished> { private: YDB_READONLY_DEF(TVector<ITableModifier::TPtr>, Modifiers); diff --git a/ydb/services/metadata/secret/ut/ut_secret.cpp b/ydb/services/metadata/secret/ut/ut_secret.cpp index 5011768817..a0b4886dc5 100644 --- a/ydb/services/metadata/secret/ut/ut_secret.cpp +++ b/ydb/services/metadata/secret/ut/ut_secret.cpp @@ -174,6 +174,11 @@ Y_UNIT_TEST_SUITE(Secret) { Tests::NCS::THelper lHelper(*server); lHelper.StartSchemaRequest("CREATE OBJECT secret1 (TYPE SECRET) WITH value = `100`"); + { + TString resultData; + lHelper.StartDataRequest("SELECT COUNT(*) FROM `/Root/.metadata/initialization/migrations`", true, &resultData); + UNIT_ASSERT_EQUAL_C(resultData, "[6u]", resultData); + } emulator->SetExpectedSecretsCount(1).SetExpectedAccessCount(0); { @@ -186,6 +191,11 @@ Y_UNIT_TEST_SUITE(Secret) { lHelper.StartSchemaRequest("ALTER OBJECT secret1 (TYPE SECRET) SET value = `abcde`"); lHelper.StartSchemaRequest("CREATE OBJECT `secret1:test@test1` (TYPE SECRET_ACCESS)"); + { + TString resultData; + lHelper.StartDataRequest("SELECT COUNT(*) FROM `/Root/.metadata/initialization/migrations`", true, &resultData); + UNIT_ASSERT_EQUAL_C(resultData, "[10u]", resultData); + } emulator->SetExpectedSecretsCount(1).SetExpectedAccessCount(1); { @@ -249,7 +259,11 @@ Y_UNIT_TEST_SUITE(Secret) { lHelper.StartSchemaRequest("CREATE OBJECT `secret2:test@test1` (TYPE SECRET_ACCESS)", false); lHelper.StartSchemaRequest("DROP OBJECT `secret1` (TYPE SECRET)", false); lHelper.StartDataRequest("SELECT * FROM `/Root/.metadata/secrets/values`", false); - lHelper.StartDataRequest("SELECT * FROM `/Root/.metadata/initialization/migrations`", true); + { + TString resultData; + lHelper.StartDataRequest("SELECT COUNT(*) FROM `/Root/.metadata/initialization/migrations`", true, &resultData); + UNIT_ASSERT_EQUAL_C(resultData, "[10u]", resultData); + } } } |