diff options
author | Alexander Rutkovsky <alexvru@ydb.tech> | 2025-03-14 17:06:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-14 17:06:27 +0300 |
commit | 4529f24ca6945128affd7adab22df44cb2965bcc (patch) | |
tree | dd91fd234ba9fa96dc47958e281f4e8184a51da3 | |
parent | e830febabb0b2ab1cce1d50accb6f0b6fbb26c95 (diff) | |
download | ydb-4529f24ca6945128affd7adab22df44cb2965bcc.tar.gz |
Correct version comparison on Console config proposition (#15744)
-rw-r--r-- | ydb/core/blobstorage/base/blobstorage_console_events.h | 8 | ||||
-rw-r--r-- | ydb/core/cms/console/console_handshake.cpp | 44 | ||||
-rw-r--r-- | ydb/core/mind/bscontroller/console_interaction.cpp | 24 | ||||
-rw-r--r-- | ydb/core/mind/bscontroller/console_interaction.h | 1 | ||||
-rw-r--r-- | ydb/core/protos/blobstorage.proto | 2 |
5 files changed, 11 insertions, 68 deletions
diff --git a/ydb/core/blobstorage/base/blobstorage_console_events.h b/ydb/core/blobstorage/base/blobstorage_console_events.h index 1e4f7695385..fea8a4dd1ee 100644 --- a/ydb/core/blobstorage/base/blobstorage_console_events.h +++ b/ydb/core/blobstorage/base/blobstorage_console_events.h @@ -33,14 +33,8 @@ namespace NKikimr { NKikimrBlobStorage::TEvControllerConsoleCommitRequest, EvControllerConsoleCommitRequest> { TEvControllerConsoleCommitRequest() = default; - TEvControllerConsoleCommitRequest( - const TString& yamlConfig, - bool allowUnknownFields = false, - bool bypassMetadataChecks = false) { - + TEvControllerConsoleCommitRequest(const TString& yamlConfig) { Record.SetYAML(yamlConfig); - Record.SetAllowUnknownFields(allowUnknownFields); - Record.SetBypassMetadataChecks(bypassMetadataChecks); } TString ToString() const override { diff --git a/ydb/core/cms/console/console_handshake.cpp b/ydb/core/cms/console/console_handshake.cpp index f393e867ab6..7fac6fb9601 100644 --- a/ydb/core/cms/console/console_handshake.cpp +++ b/ydb/core/cms/console/console_handshake.cpp @@ -19,44 +19,23 @@ public: TConsoleCommitActor( TActorId senderId, const TString& mainYamlConfig, - bool allowUnknownFields, - bool bypassMetadataChecks, TActorId interconnectSession, ui64 cookie) : SenderId(senderId) , MainYamlConfig(mainYamlConfig) - , AllowUnknownFields(allowUnknownFields) - , BypassMetadataChecks(bypassMetadataChecks) , InterconnectSession(interconnectSession) , Cookie(cookie) {} void Bootstrap(const TActorId& consoleId) { - auto executeRequest = [&](auto& request) { - request->Record.SetBypassAuth(true); - request->Record.MutableRequest()->set_config(MainYamlConfig); - request->Record.MutableRequest()->set_allow_unknown_fields(AllowUnknownFields); - Send(consoleId, request.release()); - }; - - if (BypassMetadataChecks) { - auto request = std::make_unique<TEvConsole::TEvSetYamlConfigRequest>(); - executeRequest(request); - } else { - auto request = std::make_unique<TEvConsole::TEvReplaceYamlConfigRequest>(); - executeRequest(request); - } - + auto request = std::make_unique<TEvConsole::TEvSetYamlConfigRequest>(); + request->Record.SetBypassAuth(true); + request->Record.MutableRequest()->set_config(MainYamlConfig); + request->Record.MutableRequest()->set_allow_unknown_fields(true); + Send(consoleId, request.release()); Become(&TThis::StateWork); } - void Handle(TEvConsole::TEvReplaceYamlConfigResponse::TPtr& /*ev*/) { - auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>(); - response->Record.SetStatus(NKikimrBlobStorage::TEvControllerConsoleCommitResponse::Committed); - SendInReply(std::move(response)); - PassAway(); - } - void Handle(TEvConsole::TEvSetYamlConfigResponse::TPtr& /*ev*/) { auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>(); response->Record.SetStatus(NKikimrBlobStorage::TEvControllerConsoleCommitResponse::Committed); @@ -73,7 +52,6 @@ public: } STRICT_STFUNC(StateWork, - hFunc(TEvConsole::TEvReplaceYamlConfigResponse, Handle) hFunc(TEvConsole::TEvSetYamlConfigResponse, Handle) hFunc(TEvConsole::TEvGenericError, Handle) sFunc(TEvents::TEvPoisonPill, PassAway) @@ -82,8 +60,6 @@ public: private: TActorId SenderId; TString MainYamlConfig; - bool AllowUnknownFields; - bool BypassMetadataChecks; TActorId InterconnectSession; ui64 Cookie; @@ -135,15 +111,13 @@ void TConfigsManager::Handle(TEvBlobStorage::TEvControllerProposeConfigRequest:: responseRecord.SetStatus(NKikimrBlobStorage::TEvControllerProposeConfigResponse::ReverseCommit); responseRecord.SetConsoleConfigVersion(YamlVersion); responseRecord.SetYAML(MainYamlConfig); - } else if (YamlVersion == proposedConfigVersion) { + } else if (YamlVersion <= proposedConfigVersion) { responseRecord.SetStatus(NKikimrBlobStorage::TEvControllerProposeConfigResponse::CommitIsNeeded); } else if (YamlVersion != proposedConfigVersion + 1) { responseRecord.SetStatus(NKikimrBlobStorage::TEvControllerProposeConfigResponse::UnexpectedConfig); responseRecord.SetProposedConfigVersion(proposedConfigVersion); responseRecord.SetConsoleConfigVersion(YamlVersion); - if (proposedConfigVersion + 1 < YamlVersion) { - responseRecord.SetYAML(MainYamlConfig); - } + responseRecord.SetYAML(MainYamlConfig); LOG_ALERT_S(ctx, NKikimrServices::CMS, "Unexpected proposed config."); } else if (proposedConfigHash != currentConfigHash) { responseRecord.SetStatus(NKikimrBlobStorage::TEvControllerProposeConfigResponse::HashMismatch); @@ -160,8 +134,6 @@ void TConfigsManager::Handle(TEvBlobStorage::TEvControllerConsoleCommitRequest:: auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>(); auto& record = ev->Get()->Record; const auto& mainYamlConfig = record.GetYAML(); - bool allowUnknownFields = record.GetAllowUnknownFields(); - bool bypassMetadataChecks = record.GetBypassMetadataChecks(); if (!CheckSession(*ev, response, NKikimrBlobStorage::TEvControllerConsoleCommitResponse::SessionMismatch)) { return; } @@ -169,8 +141,6 @@ void TConfigsManager::Handle(TEvBlobStorage::TEvControllerConsoleCommitRequest:: IActor* actor = new TConsoleCommitActor( ev->Sender, mainYamlConfig, - allowUnknownFields, - bypassMetadataChecks, ev->InterconnectSession, ev->Cookie); CommitActor = Register(actor); diff --git a/ydb/core/mind/bscontroller/console_interaction.cpp b/ydb/core/mind/bscontroller/console_interaction.cpp index 652cd528ae5..84c2399d500 100644 --- a/ydb/core/mind/bscontroller/console_interaction.cpp +++ b/ydb/core/mind/bscontroller/console_interaction.cpp @@ -140,13 +140,7 @@ namespace NKikimr::NBsController { if (ConsolePipe) { Y_ABORT_UNLESS(Self.YamlConfig); if (const auto& [yaml, configVersion, yamlReturnedByFetch] = *Self.YamlConfig; yaml) { - NTabletPipe::SendData( - Self.SelfId(), - ConsolePipe, - new TEvBlobStorage::TEvControllerConsoleCommitRequest( - yaml, - AllowUnknownFields, - BypassMetadataChecks)); + NTabletPipe::SendData(Self.SelfId(), ConsolePipe, new TEvBlobStorage::TEvControllerConsoleCommitRequest(yaml)); } } break; @@ -176,13 +170,7 @@ namespace NKikimr::NBsController { if (ConsolePipe) { Y_ABORT_UNLESS(Self.YamlConfig); if (const auto& [yaml, configVersion, yamlReturnedByFetch] = *Self.YamlConfig; yaml) { - NTabletPipe::SendData( - Self.SelfId(), - ConsolePipe, - new TEvBlobStorage::TEvControllerConsoleCommitRequest( - yaml, - AllowUnknownFields, - BypassMetadataChecks)); + NTabletPipe::SendData(Self.SelfId(), ConsolePipe, new TEvBlobStorage::TEvControllerConsoleCommitRequest(yaml)); } } else { Y_ABORT_UNLESS(!ClientId); @@ -229,7 +217,7 @@ namespace NKikimr::NBsController { auto& record = ev->Get()->Record; - if (!Working || CommitInProgress || (!record.GetOverwriteFlag() && ClientId)) { + if (!Working || CommitInProgress || ClientId) { // reply to newly came query const TActorId temp = std::exchange(ClientId, ev->Sender); IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::OngoingCommit, "ongoing commit"); @@ -237,11 +225,6 @@ namespace NKikimr::NBsController { return; } - if (ClientId) { - // abort previous query - IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::Aborted, "request aborted"); - } - ClientId = ev->Sender; ++ExpectedValidationTimeoutCookie; @@ -302,7 +285,6 @@ namespace NKikimr::NBsController { // don't need to reset them explicitly // every time we get new request we just replace them AllowUnknownFields = record.GetAllowUnknownFields(); - BypassMetadataChecks = record.GetBypassMetadataChecks(); } else { PendingYamlConfig.reset(); } diff --git a/ydb/core/mind/bscontroller/console_interaction.h b/ydb/core/mind/bscontroller/console_interaction.h index 161329f3d58..5b4d6adbf0a 100644 --- a/ydb/core/mind/bscontroller/console_interaction.h +++ b/ydb/core/mind/bscontroller/console_interaction.h @@ -50,7 +50,6 @@ namespace NKikimr::NBsController { std::optional<TString> PendingYamlConfig; bool AllowUnknownFields = false; - bool BypassMetadataChecks = false; std::optional<std::optional<TString>> PendingStorageYamlConfig; diff --git a/ydb/core/protos/blobstorage.proto b/ydb/core/protos/blobstorage.proto index b93818c6d89..d5dc6759ef1 100644 --- a/ydb/core/protos/blobstorage.proto +++ b/ydb/core/protos/blobstorage.proto @@ -1428,8 +1428,6 @@ message TEvControllerProposeConfigResponse { message TEvControllerConsoleCommitRequest { optional string YAML = 1; - optional bool AllowUnknownFields = 2; - optional bool BypassMetadataChecks = 3; } message TEvControllerConsoleCommitResponse { |