aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Rutkovsky <alexvru@ydb.tech>2025-03-14 17:06:27 +0300
committerGitHub <noreply@github.com>2025-03-14 17:06:27 +0300
commit4529f24ca6945128affd7adab22df44cb2965bcc (patch)
treedd91fd234ba9fa96dc47958e281f4e8184a51da3
parente830febabb0b2ab1cce1d50accb6f0b6fbb26c95 (diff)
downloadydb-4529f24ca6945128affd7adab22df44cb2965bcc.tar.gz
Correct version comparison on Console config proposition (#15744)
-rw-r--r--ydb/core/blobstorage/base/blobstorage_console_events.h8
-rw-r--r--ydb/core/cms/console/console_handshake.cpp44
-rw-r--r--ydb/core/mind/bscontroller/console_interaction.cpp24
-rw-r--r--ydb/core/mind/bscontroller/console_interaction.h1
-rw-r--r--ydb/core/protos/blobstorage.proto2
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 {