aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov <ivanmorozov@yandex-team.com>2023-06-16 16:57:31 +0300
committerivanmorozov <ivanmorozov@yandex-team.com>2023-06-16 16:57:31 +0300
commit347ab632350e6336b7214cc6ce950f95ecffb105 (patch)
tree67f300400db1d91e1aff76f7b3ddca47a47c820f
parent99921e4d045bc6ef150667b2cf0d31dce4f4ab50 (diff)
downloadydb-347ab632350e6336b7214cc6ce950f95ecffb105.tar.gz
fix metadata initialization store
-rw-r--r--ydb/services/ext_index/ut/ut_ext_index.cpp5
-rw-r--r--ydb/services/metadata/initializer/accessor_init.cpp25
-rw-r--r--ydb/services/metadata/initializer/accessor_init.h13
-rw-r--r--ydb/services/metadata/initializer/controller.cpp4
-rw-r--r--ydb/services/metadata/initializer/events.h16
-rw-r--r--ydb/services/metadata/secret/ut/ut_secret.cpp16
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);
+ }
}
}