Skip to content

Commit bc00dd4

Browse files
authored
Switch on internal breakpad and in ydbd, write capability about it (#17292)
2 parents 7b91758 + 19b14ad commit bc00dd4

File tree

21 files changed

+179
-46
lines changed

21 files changed

+179
-46
lines changed

ydb/apps/ydbd/ya.make

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ PEERDIR(
6969
yql/essentials/udfs/common/url_base
7070
yql/essentials/udfs/common/yson2
7171
yql/essentials/udfs/logs/dsv
72-
# ydb/library/breakpad
72+
ydb/library/breakpad
7373
ydb/public/sdk/cpp/client/ydb_persqueue_public/codecs
7474
)
7575

ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,36 +24,35 @@ TClientCommandServer::TClientCommandServer(std::shared_ptr<TModuleFactories> fac
2424
*Logger
2525
}))
2626
, InitCfg(DepsRecorder->GetDeps())
27+
, RunConfig(AppConfig)
2728
{}
2829

2930
int TClientCommandServer::Run(TConfig& config) {
30-
NKikimrConfig::TAppConfig appConfig;
31-
32-
TKikimrRunConfig runConfig(appConfig);
33-
3431
InitCfg.Apply(
35-
appConfig,
36-
runConfig.NodeId,
37-
runConfig.ScopeId,
38-
runConfig.TenantName,
39-
runConfig.ServicesMask,
40-
runConfig.ClusterName,
41-
runConfig.ConfigsDispatcherInitInfo);
32+
AppConfig,
33+
RunConfig.NodeId,
34+
RunConfig.ScopeId,
35+
RunConfig.TenantName,
36+
RunConfig.ServicesMask,
37+
RunConfig.ClusterName,
38+
RunConfig.ConfigsDispatcherInitInfo);
4239

43-
runConfig.ConfigsDispatcherInitInfo.RecordedInitialConfiguratorDeps =
40+
RunConfig.ConfigsDispatcherInitInfo.RecordedInitialConfiguratorDeps =
4441
std::make_shared<NConfig::TRecordedInitialConfiguratorDeps>(DepsRecorder->GetRecordedDeps());
4542

4643
for (int i = 0; i < config.ArgC; ++i) {
47-
runConfig.ConfigsDispatcherInitInfo.Args.push_back(config.ArgV[i]);
44+
RunConfig.ConfigsDispatcherInitInfo.Args.push_back(config.ArgV[i]);
4845
}
4946

50-
Y_ABORT_UNLESS(runConfig.NodeId);
51-
return MainRun(runConfig, Factories);
47+
Y_ABORT_UNLESS(RunConfig.NodeId);
48+
return MainRun(RunConfig, Factories);
5249
}
5350

5451
void TClientCommandServer::Config(TConfig& config) {
5552
TClientCommand::Config(config);
56-
53+
for (auto plugin: RunConfig.Plugins) {
54+
plugin->SetupOpts(*config.Opts);
55+
}
5756
NConfig::AddProtoConfigOptions(DepsRecorder->GetDeps().ProtoConfigFileProvider);
5857
InitCfg.RegisterCliOptions(*config.Opts);
5958
ProtoConfigFileProvider->RegisterCliOptions(*config.Opts);

ydb/core/driver_lib/cli_utils/cli_cmds_server.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ class TClientCommandServer : public TClientCommand {
3333
std::unique_ptr<NConfig::IInitialConfiguratorDepsRecorder> DepsRecorder;
3434

3535
NConfig::TInitialConfigurator InitCfg;
36+
37+
private:
38+
NKikimrConfig::TAppConfig AppConfig;
39+
TKikimrRunConfig RunConfig;
3640
};
3741

3842
} // namespace NKikimr::NDriverClient

ydb/core/driver_lib/run/config.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ TKikimrRunConfig::TKikimrRunConfig(NKikimrConfig::TAppConfig& appConfig, ui32 no
66
: AppConfig(appConfig)
77
, NodeId(nodeId)
88
, ScopeId(scopeId)
9-
{}
9+
{
10+
for (const auto& key: NYdb::NGlobalPlugins::TPluginFactory::GetRegisteredKeys()) {
11+
Plugins.emplace_back(NYdb::NGlobalPlugins::TPluginFactory::Construct(key));
12+
}
13+
}
1014

1115
} // namespace NKikimr

ydb/core/driver_lib/run/config.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <ydb/core/base/event_filter.h>
77
#include <ydb/core/config/init/init.h>
88
#include <ydb/core/driver_lib/cli_config_base/config_base.h>
9+
#include <ydb/library/global_plugins/abstract.h>
910

1011
#include <util/generic/hash.h>
1112

@@ -27,6 +28,8 @@ struct TKikimrRunConfig {
2728

2829
NConfig::TConfigsDispatcherInitInfo ConfigsDispatcherInitInfo;
2930

31+
TVector<TAtomicSharedPtr<NYdb::NGlobalPlugins::IPluginInitilizer>> Plugins;
32+
3033
TKikimrRunConfig(NKikimrConfig::TAppConfig& appConfig,
3134
ui32 nodeId = 0, const TKikimrScopeId& scopeId = {});
3235
};

ydb/core/driver_lib/run/run.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,6 +1800,9 @@ TIntrusivePtr<TServiceInitializersList> TKikimrRunner::CreateServiceInitializers
18001800
}
18011801

18021802
void TKikimrRunner::KikimrStart() {
1803+
for (auto plugin: Plugins) {
1804+
plugin->Start();
1805+
}
18031806

18041807
if (!!PollerThreads) {
18051808
PollerThreads->Start();
@@ -1962,6 +1965,9 @@ void TKikimrRunner::KikimrStop(bool graceful) {
19621965
if (YdbDriver) {
19631966
YdbDriver->Stop(true);
19641967
}
1968+
for (auto plugin: Plugins) {
1969+
plugin->Stop();
1970+
}
19651971
}
19661972

19671973
void TKikimrRunner::BusyLoop() {
@@ -2028,6 +2034,14 @@ void TKikimrRunner::InitializeRegistries(const TKikimrRunConfig& runConfig) {
20282034
NKikHouse::RegisterFormat(*FormatFactory);
20292035
}
20302036

2037+
void TKikimrRunner::InitializePlugins(const TKikimrRunConfig& runConfig) {
2038+
for (const auto& initializer: runConfig.Plugins) {
2039+
if (auto plugin = initializer->CreatePlugin()) {
2040+
Plugins.push_back(plugin);
2041+
}
2042+
}
2043+
}
2044+
20312045
TIntrusivePtr<TKikimrRunner> TKikimrRunner::CreateKikimrRunner(
20322046
const TKikimrRunConfig& runConfig,
20332047
std::shared_ptr<TModuleFactories> factories) {
@@ -2044,6 +2058,7 @@ TIntrusivePtr<TKikimrRunner> TKikimrRunner::CreateKikimrRunner(
20442058
runner->InitializeKqpController(runConfig);
20452059
runner->InitializeGracefulShutdown(runConfig);
20462060
runner->InitializeGRpc(runConfig);
2061+
runner->InitializePlugins(runConfig);
20472062
return runner;
20482063
}
20492064

ydb/core/driver_lib/run/run.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class TKikimrRunner : public virtual TThrRefBase, private IGlobalObjectStorage {
6464

6565
TIntrusivePtr<NMemory::IProcessMemoryInfoProvider> ProcessMemoryInfoProvider;
6666

67+
TVector<NYdb::NGlobalPlugins::IPlugin::TPtr> Plugins;
68+
6769
TKikimrRunner(std::shared_ptr<TModuleFactories> factories = {});
6870

6971
virtual ~TKikimrRunner();
@@ -90,6 +92,8 @@ class TKikimrRunner : public virtual TThrRefBase, private IGlobalObjectStorage {
9092

9193
void InitializeAppData(const TKikimrRunConfig& runConfig);
9294

95+
void InitializePlugins(const TKikimrRunConfig& runConfig);
96+
9397
void InitializeActorSystem(
9498
const TKikimrRunConfig& runConfig,
9599
TIntrusivePtr<TServiceInitializersList> serviceInitializers,

ydb/core/driver_lib/run/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ PEERDIR(
135135
ydb/library/actors/util
136136
ydb/library/folder_service
137137
ydb/library/folder_service/proto
138+
ydb/library/global_plugins
138139
ydb/library/grpc/server
139140
ydb/library/grpc/server/actors
140141
ydb/library/pdisk_io

ydb/core/driver_lib/version/version.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <google/protobuf/text_format.h>
22
#include <google/protobuf/util/message_differencer.h>
33
#include <library/cpp/svnversion/svnversion.h>
4+
#include <ydb/library/global_plugins/abstract.h>
45
#include <ydb/library/yverify_stream/yverify_stream.h>
56
#include <ydb/core/viewer/json/json.h>
67
#include "version.h"
@@ -775,6 +776,10 @@ TString TCompatibilityInfo::PrintHumanReadable(const NKikimrConfig::TCurrentComp
775776
}
776777
str << "\n";
777778

779+
if (NYdb::NGlobalPlugins::TPluginFactory::Has("internal_breakpad")) {
780+
str << " HasInternalBreakpad: true" << Endl;
781+
}
782+
778783
// print common rule
779784
if (current->HasVersion() && current->GetVersion().HasYear() && current->GetVersion().HasMajor()) {
780785
const auto& version = current->GetVersion();

ydb/core/driver_lib/version/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ PEERDIR(
1010
ydb/library/actors/interconnect
1111
library/cpp/monlib/service/pages
1212
library/cpp/svnversion
13+
ydb/library/global_plugins
1314
ydb/core/protos
1415
ydb/core/viewer/json
1516
)

0 commit comments

Comments
 (0)