Skip to content

Commit 6b6ae21

Browse files
authored
Merge 1ae8051 into 347babc
2 parents 347babc + 1ae8051 commit 6b6ae21

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

ydb/core/mind/bscontroller/console_interaction.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,14 +277,34 @@ namespace NKikimr::NBsController {
277277
PendingYamlConfig.reset();
278278
}
279279

280-
if (PendingYamlConfig && !NYamlConfig::IsMainConfig(*PendingYamlConfig)) {
281-
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
282-
"cluster YAML config is not of MainConfig kind");
280+
if (PendingYamlConfig) {
281+
const ui64 expected = Self.YamlConfig
282+
? GetVersion(*Self.YamlConfig) + 1
283+
: 0;
284+
285+
if (!NYamlConfig::IsMainConfig(*PendingYamlConfig)) {
286+
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
287+
"cluster YAML config is not of MainConfig kind");
288+
} else if (const auto& meta = NYamlConfig::GetMainMetadata(*PendingYamlConfig); meta.Version != expected) {
289+
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
290+
TStringBuilder() << "cluster YAML config version mismatch got# " << meta.Version
291+
<< " expected# " << expected);
292+
}
283293
}
284294

285-
if (PendingStorageYamlConfig && *PendingStorageYamlConfig && !NYamlConfig::IsStorageConfig(**PendingStorageYamlConfig)) {
286-
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
287-
"storage YAML config is not of StorageConfig kind");
295+
if (PendingStorageYamlConfig && *PendingStorageYamlConfig) {
296+
const ui64 expected = Self.StorageYamlConfig
297+
? Self.StorageYamlConfigVersion + 1
298+
: 0;
299+
300+
if (!NYamlConfig::IsStorageConfig(**PendingStorageYamlConfig)) {
301+
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
302+
"storage YAML config is not of StorageConfig kind");
303+
} else if (const auto& meta = NYamlConfig::GetStorageMetadata(**PendingStorageYamlConfig); meta.Version != expected) {
304+
return IssueGRpcResponse(NKikimrBlobStorage::TEvControllerReplaceConfigResponse::InvalidRequest,
305+
TStringBuilder() << "storage YAML config version mismatch got# " << meta.Version
306+
<< " expected# " << expected);
307+
}
288308
}
289309

290310
if (record.GetSkipConsoleValidation() || !record.HasClusterYaml()) {

0 commit comments

Comments
 (0)