Skip to content

Commit 193db61

Browse files
authored
Make config api from bsconfig api (#14617)
1 parent 7576700 commit 193db61

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1478
-697
lines changed

ydb/core/blobstorage/base/blobstorage_console_events.h

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,14 @@ namespace NKikimr {
3232
NKikimrBlobStorage::TEvControllerConsoleCommitRequest, EvControllerConsoleCommitRequest> {
3333
TEvControllerConsoleCommitRequest() = default;
3434

35-
TEvControllerConsoleCommitRequest(const TString& yamlConfig) {
35+
TEvControllerConsoleCommitRequest(
36+
const TString& yamlConfig,
37+
bool allowUnknownFields = false,
38+
bool bypassMetadataChecks = false) {
39+
3640
Record.SetYAML(yamlConfig);
41+
Record.SetAllowUnknownFields(allowUnknownFields);
42+
Record.SetBypassMetadataChecks(bypassMetadataChecks);
3743
}
3844

3945
TString ToString() const override {
@@ -76,8 +82,14 @@ namespace NKikimr {
7682
NKikimrBlobStorage::TEvControllerReplaceConfigRequest, EvControllerReplaceConfigRequest> {
7783
TEvControllerReplaceConfigRequest() = default;
7884

79-
TEvControllerReplaceConfigRequest(std::optional<TString> clusterYaml, std::optional<TString> storageYaml,
80-
std::optional<bool> switchDedicatedStorageSection, bool dedicatedConfigMode) {
85+
TEvControllerReplaceConfigRequest(
86+
std::optional<TString> clusterYaml,
87+
std::optional<TString> storageYaml,
88+
std::optional<bool> switchDedicatedStorageSection,
89+
bool dedicatedConfigMode,
90+
bool allowUnknownFields,
91+
bool bypassMetadataChecks) {
92+
8193
if (clusterYaml) {
8294
Record.SetClusterYaml(*clusterYaml);
8395
}
@@ -88,6 +100,8 @@ namespace NKikimr {
88100
Record.SetSwitchDedicatedStorageSection(*switchDedicatedStorageSection);
89101
}
90102
Record.SetDedicatedConfigMode(dedicatedConfigMode);
103+
Record.SetAllowUnknownFields(allowUnknownFields);
104+
Record.SetBypassMetadataChecks(bypassMetadataChecks);
91105
}
92106

93107
TString ToString() const override {

ydb/core/blobstorage/nodewarden/distconf_console.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ namespace NKikimr::NStorage {
103103
}
104104

105105
NTabletPipe::SendData(SelfId(), ConsolePipeId, new TEvBlobStorage::TEvControllerConsoleCommitRequest(
106-
MainConfigYaml), ++CommitRequestCookie);
106+
MainConfigYaml), // FIXME: probably should propagate force here
107+
++CommitRequestCookie);
107108
break;
108109
}
109110

ydb/core/cms/console/console_configs_manager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ void TConfigsManager::ValidateMainConfig(TUpdateConfigOpContext& opCtx) {
113113
}
114114
} catch (const yexception &e) {
115115
opCtx.Error = e.what();
116+
} catch (const std::exception& e) {
117+
opCtx.Error = e.what();
116118
}
117119
}
118120

ydb/core/cms/console/console_handshake.cpp

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,35 @@ namespace NKikimr::NConsole {
1616

1717
class TConfigsManager::TConsoleCommitActor : public TActorBootstrapped<TConsoleCommitActor> {
1818
public:
19-
TConsoleCommitActor(TActorId senderId, const TString& mainYamlConfig, TActorId interconnectSession, ui64 cookie)
19+
TConsoleCommitActor(
20+
TActorId senderId,
21+
const TString& mainYamlConfig,
22+
bool allowUnknownFields,
23+
bool bypassMetadataChecks,
24+
TActorId interconnectSession,
25+
ui64 cookie)
2026
: SenderId(senderId)
2127
, MainYamlConfig(mainYamlConfig)
28+
, AllowUnknownFields(allowUnknownFields)
29+
, BypassMetadataChecks(bypassMetadataChecks)
2230
, InterconnectSession(interconnectSession)
2331
, Cookie(cookie)
2432
{}
2533

2634
void Bootstrap(const TActorId& consoleId) {
27-
auto request = std::make_unique<TEvConsole::TEvReplaceYamlConfigRequest>();
28-
request->Record.MutableRequest()->set_config(MainYamlConfig);
29-
Send(consoleId, request.release());
35+
auto executeRequest = [&](auto& request) {
36+
request->Record.MutableRequest()->set_config(MainYamlConfig);
37+
request->Record.MutableRequest()->set_allow_unknown_fields(AllowUnknownFields);
38+
Send(consoleId, request.release());
39+
};
40+
41+
if (BypassMetadataChecks) {
42+
auto request = std::make_unique<TEvConsole::TEvSetYamlConfigRequest>();
43+
executeRequest(request);
44+
} else {
45+
auto request = std::make_unique<TEvConsole::TEvReplaceYamlConfigRequest>();
46+
executeRequest(request);
47+
}
3048

3149
Become(&TThis::StateWork);
3250
}
@@ -38,6 +56,13 @@ class TConfigsManager::TConsoleCommitActor : public TActorBootstrapped<TConsoleC
3856
PassAway();
3957
}
4058

59+
void Handle(TEvConsole::TEvSetYamlConfigResponse::TPtr& /*ev*/) {
60+
auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>();
61+
response->Record.SetStatus(NKikimrBlobStorage::TEvControllerConsoleCommitResponse::Committed);
62+
SendInReply(std::move(response));
63+
PassAway();
64+
}
65+
4166
void Handle(TEvConsole::TEvGenericError::TPtr& ev) {
4267
auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>();
4368
response->Record.SetStatus(NKikimrBlobStorage::TEvControllerConsoleCommitResponse::NotCommitted);
@@ -48,13 +73,16 @@ class TConfigsManager::TConsoleCommitActor : public TActorBootstrapped<TConsoleC
4873

4974
STRICT_STFUNC(StateWork,
5075
hFunc(TEvConsole::TEvReplaceYamlConfigResponse, Handle)
76+
hFunc(TEvConsole::TEvSetYamlConfigResponse, Handle)
5177
hFunc(TEvConsole::TEvGenericError, Handle)
5278
sFunc(TEvents::TEvPoisonPill, PassAway)
5379
)
5480

5581
private:
5682
TActorId SenderId;
5783
TString MainYamlConfig;
84+
bool AllowUnknownFields;
85+
bool BypassMetadataChecks;
5886
TActorId InterconnectSession;
5987
ui64 Cookie;
6088

@@ -117,12 +145,21 @@ void TConfigsManager::Handle(TEvBlobStorage::TEvControllerProposeConfigRequest::
117145

118146
void TConfigsManager::Handle(TEvBlobStorage::TEvControllerConsoleCommitRequest::TPtr& ev, const TActorContext& /*ctx*/) {
119147
auto response = std::make_unique<TEvBlobStorage::TEvControllerConsoleCommitResponse>();
120-
const auto& mainYamlConfig = ev->Get()->Record.GetYAML();
148+
auto& record = ev->Get()->Record;
149+
const auto& mainYamlConfig = record.GetYAML();
150+
bool allowUnknownFields = record.GetAllowUnknownFields();
151+
bool bypassMetadataChecks = record.GetBypassMetadataChecks();
121152
if (!CheckSession(*ev, response, NKikimrBlobStorage::TEvControllerConsoleCommitResponse::SessionMismatch)) {
122153
return;
123154
}
124155

125-
IActor* actor = new TConsoleCommitActor(ev->Sender, mainYamlConfig, ev->InterconnectSession, ev->Cookie);
156+
IActor* actor = new TConsoleCommitActor(
157+
ev->Sender,
158+
mainYamlConfig,
159+
allowUnknownFields,
160+
bypassMetadataChecks,
161+
ev->InterconnectSession,
162+
ev->Cookie);
126163
CommitActor = Register(actor);
127164
}
128165

@@ -133,22 +170,26 @@ void TConfigsManager::Handle(TEvBlobStorage::TEvControllerValidateConfigRequest:
133170
}
134171

135172
auto& record = response->Record;
173+
174+
bool bypassMetadataChecks = ev->Get()->Record.GetBypassMetadataChecks();
175+
136176
auto mainYamlConfig = ev->Get()->Record.GetYAML();
137177

138178
TUpdateConfigOpContext opCtx;
139-
ReplaceMainConfigMetadata(mainYamlConfig, false, opCtx);
179+
ReplaceMainConfigMetadata(mainYamlConfig, bypassMetadataChecks, opCtx);
140180
ValidateMainConfig(opCtx);
181+
bool hasForbiddenUnknownFields = !opCtx.UnknownFields.empty() && !ev->Get()->Record.GetAllowUnknownFields();
141182

142-
if (opCtx.Error || !opCtx.UnknownFields.empty()) {
183+
if (opCtx.Error || hasForbiddenUnknownFields) {
143184
record.SetStatus(NKikimrBlobStorage::TEvControllerValidateConfigResponse::ConfigNotValid);
144185
TStringStream s;
145186
if (opCtx.Error) {
146187
s << *opCtx.Error << (opCtx.UnknownFields.empty() ? "" : " and ");
147188
}
148-
if (!opCtx.UnknownFields.empty()) {
189+
if (hasForbiddenUnknownFields) {
149190
s << "has forbidden unknown fields";
150191
}
151-
record.SetErrorReason(s.Str());
192+
record.SetErrorReason(s.Str()); // TODO get warnings back
152193
} else {
153194
record.SetStatus(NKikimrBlobStorage::TEvControllerValidateConfigResponse::ConfigIsValid);
154195
record.SetYAML(opCtx.UpdatedConfig);

ydb/core/cms/ui/yaml_config.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -235,16 +235,16 @@ class YamlConfigState {
235235

236236
onYamlLoaded(success, data) {
237237
if (success) {
238-
this.cluster = data.Response.identity.cluster;
239-
$('#yaml-cluster').text(data.Response.identity.cluster);
238+
this.cluster = data.Response.identity[0].cluster;
239+
$('#yaml-cluster').text(data.Response.identity[0].cluster);
240240

241-
this.version = data.Response.identity.version;
242-
$('#yaml-version').text(data.Response.identity.version);
241+
this.version = data.Response.identity[0].version;
242+
$('#yaml-version').text(data.Response.identity[0].version);
243243

244-
if (this.config !== data.Response.config) {
245-
this.codeMirror.setValue((data.Response.config !== undefined) ? data.Response.config[0] : "");
244+
if (this.config !== data.Response.config[0]) {
245+
this.codeMirror.setValue((data.Response.config[0] !== undefined) ? data.Response.config[0] : "");
246246
this.codeMirror.trigger('fold', 'editor.foldLevel2');
247-
this.config = data.Response.config;
247+
this.config = data.Response.config[0];
248248
}
249249

250250
if (data.Response.volatile_configs === undefined) {

ydb/core/driver_lib/run/run.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999

100100
#include <ydb/services/auth/grpc_service.h>
101101
#include <ydb/services/cms/grpc_service.h>
102-
#include <ydb/services/bsconfig/grpc_service.h>
102+
#include <ydb/services/config/grpc_service.h>
103103
#include <ydb/services/dynamic_config/grpc_service.h>
104104
#include <ydb/services/datastreams/grpc_service.h>
105105
#include <ydb/services/discovery/grpc_service.h>
@@ -620,8 +620,8 @@ void TKikimrRunner::InitializeGRpc(const TKikimrRunConfig& runConfig) {
620620
names["tablet_service"] = &hasTabletService;
621621
TServiceCfg hasView = services.empty();
622622
names["view"] = &hasView;
623-
TServiceCfg hasBSConfig = services.empty();
624-
names["bsconfig"] = &hasBSConfig;
623+
TServiceCfg hasConfig = services.empty();
624+
names["config"] = &hasConfig;
625625

626626
std::unordered_set<TString> enabled;
627627
for (const auto& name : services) {
@@ -915,8 +915,8 @@ void TKikimrRunner::InitializeGRpc(const TKikimrRunConfig& runConfig) {
915915
grpcRequestProxies[0], hasView.IsRlAllowed()));
916916
}
917917

918-
if (hasBSConfig) {
919-
server.AddService(new NGRpcService::TBSConfigGRpcService(ActorSystem.Get(), Counters, grpcRequestProxies[0]));
918+
if (hasConfig) {
919+
server.AddService(new NGRpcService::TConfigGRpcService(ActorSystem.Get(), Counters, grpcRequestProxies[0]));
920920
}
921921

922922
if (ModuleFactories) {

ydb/core/driver_lib/run/ya.make

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,7 @@ SRCS(
3636

3737
PEERDIR(
3838
contrib/libs/protobuf
39-
ydb/library/actors/core
40-
ydb/library/actors/dnsresolver
41-
ydb/library/actors/interconnect
42-
ydb/library/actors/memory_log
43-
ydb/library/actors/prof
44-
ydb/library/actors/protos
45-
ydb/library/actors/util
4639
library/cpp/getopt/small
47-
ydb/public/sdk/cpp/src/library/grpc/client
48-
ydb/library/grpc/server
49-
ydb/library/grpc/server/actors
5040
library/cpp/logger
5141
library/cpp/malloc/api
5242
library/cpp/messagebus
@@ -57,8 +47,8 @@ PEERDIR(
5747
library/cpp/svnversion
5848
ydb/core/actorlib_impl
5949
ydb/core/audit
60-
ydb/core/base
6150
ydb/core/backup/controller
51+
ydb/core/base
6252
ydb/core/blob_depot
6353
ydb/core/blobstorage
6454
ydb/core/blobstorage/backpressure
@@ -86,10 +76,10 @@ PEERDIR(
8676
ydb/core/health_check
8777
ydb/core/http_proxy
8878
ydb/core/jaeger_tracing
79+
ydb/core/kafka_proxy
8980
ydb/core/kesus/proxy
9081
ydb/core/kesus/tablet
9182
ydb/core/keyvalue
92-
ydb/core/kafka_proxy
9383
ydb/core/kqp
9484
ydb/core/kqp/federated_query
9585
ydb/core/kqp/finalize_script_service
@@ -124,11 +114,11 @@ PEERDIR(
124114
ydb/core/tracing
125115
ydb/core/tx
126116
ydb/core/tx/columnshard
127-
ydb/core/tx/coordinator
128117
ydb/core/tx/conveyor/service
129-
ydb/core/tx/limiter/service
130-
ydb/core/tx/limiter/grouped_memory/usage
118+
ydb/core/tx/coordinator
131119
ydb/core/tx/datashard
120+
ydb/core/tx/limiter/grouped_memory/usage
121+
ydb/core/tx/limiter/service
132122
ydb/core/tx/long_tx_service
133123
ydb/core/tx/long_tx_service/public
134124
ydb/core/tx/mediator
@@ -145,44 +135,54 @@ PEERDIR(
145135
ydb/core/viewer
146136
ydb/core/ymq/actor
147137
ydb/core/ymq/http
138+
ydb/library/actors/core
139+
ydb/library/actors/dnsresolver
140+
ydb/library/actors/interconnect
141+
ydb/library/actors/memory_log
142+
ydb/library/actors/prof
143+
ydb/library/actors/protos
144+
ydb/library/actors/util
148145
ydb/library/folder_service
149146
ydb/library/folder_service/proto
147+
ydb/library/grpc/server
148+
ydb/library/grpc/server/actors
150149
ydb/library/pdisk_io
151150
ydb/library/security
152-
yql/essentials/minikql/comp_nodes/llvm14
153-
yt/yql/providers/yt/codec/codegen
154-
yt/yql/providers/yt/comp_nodes/llvm14
155-
yt/yql/providers/yt/comp_nodes/dq/llvm14
156151
ydb/library/yql/providers/pq/cm_client
157152
ydb/library/yql/providers/s3/actors
158-
yql/essentials/public/udf/service/exception_policy
159153
ydb/public/lib/base
160154
ydb/public/lib/deprecated/client
155+
ydb/public/sdk/cpp/src/library/grpc/client
161156
ydb/services/auth
162157
ydb/services/backup
163-
ydb/services/bsconfig
164158
ydb/services/cms
165-
ydb/services/dynamic_config
159+
ydb/services/config
166160
ydb/services/datastreams
161+
ydb/services/deprecated/persqueue_v0
167162
ydb/services/discovery
163+
ydb/services/dynamic_config
164+
ydb/services/ext_index/metadata
165+
ydb/services/ext_index/service
168166
ydb/services/fq
169167
ydb/services/kesus
170168
ydb/services/keyvalue
171169
ydb/services/local_discovery
172170
ydb/services/maintenance
173-
ydb/services/metadata/ds_table
174171
ydb/services/metadata
175-
ydb/services/ext_index/service
176-
ydb/services/ext_index/metadata
172+
ydb/services/metadata/ds_table
177173
ydb/services/monitoring
178174
ydb/services/persqueue_cluster_discovery
179-
ydb/services/deprecated/persqueue_v0
180175
ydb/services/persqueue_v1
181176
ydb/services/rate_limiter
182177
ydb/services/replication
183178
ydb/services/tablet
184179
ydb/services/view
185180
ydb/services/ydb
181+
yql/essentials/minikql/comp_nodes/llvm14
182+
yql/essentials/public/udf/service/exception_policy
183+
yt/yql/providers/yt/codec/codegen
184+
yt/yql/providers/yt/comp_nodes/dq/llvm14
185+
yt/yql/providers/yt/comp_nodes/llvm14
186186
)
187187

188188
YQL_LAST_ABI_VERSION()

0 commit comments

Comments
 (0)