Skip to content

Commit

Permalink
Move grpc actor client from Yandex specific library (#2351)
Browse files Browse the repository at this point in the history
  • Loading branch information
UgnineSirdis authored Feb 29, 2024
1 parent 73359a7 commit 2712745
Show file tree
Hide file tree
Showing 33 changed files with 139 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/api/events.h>
#include <ydb/library/ycloud/impl/grpc_service_client.h>
#include <ydb/library/grpc/actor_client/grpc_service_client.h>

#include <ydb/library/actors/core/actor.h>
#include <ydb/library/actors/core/event.h>
Expand Down Expand Up @@ -44,7 +44,7 @@ struct TEvPrivate {

}

class TCmsGrpcServiceActor : public NActors::TActor<TCmsGrpcServiceActor>, TGrpcServiceClient<Ydb::Cms::V1::CmsService> {
class TCmsGrpcServiceActor : public NActors::TActor<TCmsGrpcServiceActor>, NGrpcActorClient::TGrpcServiceClient<Ydb::Cms::V1::CmsService> {
public:
using TBase = NActors::TActor<TCmsGrpcServiceActor>;
struct TCreateDatabaseGrpcRequest : TGrpcRequest {
Expand All @@ -59,7 +59,7 @@ class TCmsGrpcServiceActor : public NActors::TActor<TCmsGrpcServiceActor>, TGrpc
using TResponseEventType = TEvPrivate::TEvListDatabasesResponse;
};

TCmsGrpcServiceActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider)
TCmsGrpcServiceActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider)
: TBase(&TCmsGrpcServiceActor::StateFunc)
, TGrpcServiceClient(settings)
, Settings(settings)
Expand Down Expand Up @@ -159,13 +159,13 @@ class TCmsGrpcServiceActor : public NActors::TActor<TCmsGrpcServiceActor>, TGrpc
}

private:
NCloud::TGrpcClientSettings Settings;
NGrpcActorClient::TGrpcClientSettings Settings;
TMap<uint64_t, std::variant<TEvYdbCompute::TEvCreateDatabaseRequest::TPtr, TEvYdbCompute::TEvListDatabasesRequest::TPtr>> Requests;
NYdb::TCredentialsProviderPtr CredentialsProvider;
int64_t Cookie = 0;
};

std::unique_ptr<NActors::IActor> CreateCmsGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
std::unique_ptr<NActors::IActor> CreateCmsGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
return std::make_unique<TCmsGrpcServiceActor>(settings, credentialsProvider);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ class TCreateDatabaseRequestActor : public NActors::TActorBootstrapped<TCreateDa
}

void Handle(TEvYdbCompute::TEvInvalidateSynchronizationResponse::TPtr& ev) {
auto client = ev->Cookie == OnlyDatabaseCreateCookie
auto client = ev->Cookie == OnlyDatabaseCreateCookie
? Clients->GetClient(Scope, Result.connection().endpoint(), Result.connection().database())
: Clients->GetClient(Scope);
if (!client) {
Expand Down Expand Up @@ -297,11 +297,11 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
static constexpr char ActorName[] = "FQ_COMPUTE_DATABASE_SERVICE_ACTOR";

void Bootstrap() {
SynchronizationServiceActorId = Register(CreateSynchronizationServiceActor(CommonConfig,
SynchronizationServiceActorId = Register(CreateSynchronizationServiceActor(CommonConfig,
Config,
Signer,
YqSharedResources,
CredentialsProviderFactory,
Signer,
YqSharedResources,
CredentialsProviderFactory,
Counters).release());
const auto& controlPlane = Config.GetYdb().GetControlPlane();
switch (controlPlane.type_case()) {
Expand All @@ -319,8 +319,8 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
Become(&TComputeDatabaseControlPlaneServiceActor::StateFunc);
}

static NCloud::TGrpcClientSettings CreateGrpcClientSettings(const NConfig::TYdbStorageConfig& connection) {
NCloud::TGrpcClientSettings settings;
static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings(const NConfig::TYdbStorageConfig& connection) {
NGrpcActorClient::TGrpcClientSettings settings;
settings.Endpoint = connection.GetEndpoint();
settings.EnableSsl = connection.GetUseSsl();
if (connection.GetCertificateFile()) {
Expand All @@ -329,8 +329,8 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
return settings;
}

static NCloud::TGrpcClientSettings CreateGrpcClientSettings(const NConfig::TComputeDatabaseConfig& config) {
NCloud::TGrpcClientSettings settings;
static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings(const NConfig::TComputeDatabaseConfig& config) {
NGrpcActorClient::TGrpcClientSettings settings;
const auto& connection = config.GetControlPlaneConnection();
settings.Endpoint = connection.GetEndpoint();
settings.EnableSsl = connection.GetUseSsl();
Expand Down Expand Up @@ -462,7 +462,7 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap

private:
TActorId GetMonitoringActorIdByScope(const TString& scope) {
return Config.GetYdb().GetControlPlane().HasSingle()
return Config.GetYdb().GetControlPlane().HasSingle()
? MonitoringActorId
: Clients->GetClient(scope).MonitoringActorId;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include <ydb/core/fq/libs/signer/signer.h>

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/impl/grpc_service_settings.h>
#include <ydb/library/grpc/actor_client/grpc_service_settings.h>

#include <ydb/library/actors/core/actor.h>

Expand All @@ -22,13 +22,13 @@ std::unique_ptr<NActors::IActor> CreateComputeDatabaseControlPlaneServiceActor(c
const TYqSharedResources::TPtr& yqSharedResources,
const ::NMonitoring::TDynamicCounterPtr& counters);

std::unique_ptr<NActors::IActor> CreateYdbcpGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);
std::unique_ptr<NActors::IActor> CreateYdbcpGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);

std::unique_ptr<NActors::IActor> CreateCmsGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);
std::unique_ptr<NActors::IActor> CreateCmsGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);

std::unique_ptr<NActors::IActor> CreateComputeDatabasesCacheActor(const NActors::TActorId& databaseClientActorId, const TString& databasesCacheReloadPeriod, const ::NMonitoring::TDynamicCounterPtr& counters);

std::unique_ptr<NActors::IActor> CreateMonitoringGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);
std::unique_ptr<NActors::IActor> CreateMonitoringGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider);
std::unique_ptr<NActors::IActor> CreateMonitoringRestClientActor(const TString& endpoint, const TString& database, const NYdb::TCredentialsProviderPtr& credentialsProvider);

std::unique_ptr<NActors::IActor> CreateDatabaseMonitoringActor(const NActors::TActorId& monitoringClientActorId, NFq::NConfig::TLoadControlConfig config, const ::NMonitoring::TDynamicCounterPtr& counters);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/api/events.h>
#include <ydb/library/ycloud/impl/grpc_service_client.h>
#include <ydb/library/grpc/actor_client/grpc_service_client.h>

#include <ydb/library/actors/core/actor.h>
#include <ydb/library/actors/core/event.h>
Expand Down Expand Up @@ -35,7 +35,7 @@ class TComputeDatabasesCacheActor : public NActors::TActorBootstrapped<TComputeD

explicit TCounters(const ::NMonitoring::TDynamicCounterPtr& counters)
: Counters(counters)
{
{
Register();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/api/events.h>
#include <ydb/library/ycloud/impl/grpc_service_client.h>
#include <ydb/library/grpc/actor_client/grpc_service_client.h>

#include <ydb/library/actors/core/actor.h>
#include <ydb/library/actors/core/event.h>
Expand Down Expand Up @@ -39,7 +39,7 @@ class TComputeDatabaseMonitoringActor : public NActors::TActorBootstrapped<TComp

explicit TCounters(const ::NMonitoring::TDynamicCounterPtr& counters)
: Counters(counters)
{
{
Register();
}

Expand Down Expand Up @@ -108,7 +108,7 @@ class TComputeDatabaseMonitoringActor : public NActors::TActorBootstrapped<TComp
void Handle(TEvYdbCompute::TEvCpuLoadResponse::TPtr& ev) {
const auto& response = *ev.Get()->Get();

auto now = TInstant::Now();
auto now = TInstant::Now();
if (!response.Issues) {
auto delta = now - LastCpuLoad;
LastCpuLoad = now;
Expand All @@ -118,7 +118,7 @@ class TComputeDatabaseMonitoringActor : public NActors::TActorBootstrapped<TComp
}

InstantLoad = response.InstantLoad;
// exponential moving average
// exponential moving average
if (!Ready || delta >= AverageLoadInterval) {
AverageLoad = InstantLoad;
QuotedLoad = InstantLoad;
Expand All @@ -142,7 +142,7 @@ class TComputeDatabaseMonitoringActor : public NActors::TActorBootstrapped<TComp

// TODO: make load pulling reactive
// 1. Long period (i.e. AverageLoadInterval/2) when idle (no requests)
// 2. Active pulling when busy
// 2. Active pulling when busy

if (MonitoringRequestDelay) {
Schedule(MonitoringRequestDelay, new NActors::TEvents::TEvWakeup());
Expand All @@ -164,7 +164,7 @@ class TComputeDatabaseMonitoringActor : public NActors::TActorBootstrapped<TComp
if (MaxClusterLoad > 0.0 && ((!Ready && Strict) || QuotedLoad >= MaxClusterLoad)) {
if (PendingQueue.size() >= PendingQueueSize) {
Send(ev->Sender, new TEvYdbCompute::TEvCpuQuotaResponse(NYdb::EStatus::OVERLOADED, NYql::TIssues{
NYql::TIssue{TStringBuilder{}
NYql::TIssue{TStringBuilder{}
<< "Cluster is overloaded, current quoted load " << static_cast<ui64>(QuotedLoad * 100)
<< "%, average load " << static_cast<ui64>(AverageLoad * 100) << "%"
}}), 0, ev->Cookie);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/api/events.h>
#include <ydb/library/ycloud/impl/grpc_service_client.h>
#include <ydb/library/grpc/actor_client/grpc_service_client.h>

#include <ydb/library/actors/core/actor.h>
#include <ydb/library/actors/core/event.h>
Expand Down Expand Up @@ -40,7 +40,7 @@ struct TEvPrivate {

}

class TMonitoringGrpcServiceActor : public NActors::TActor<TMonitoringGrpcServiceActor>, TGrpcServiceClient<Ydb::Monitoring::V1::MonitoringService> {
class TMonitoringGrpcServiceActor : public NActors::TActor<TMonitoringGrpcServiceActor>, NGrpcActorClient::TGrpcServiceClient<Ydb::Monitoring::V1::MonitoringService> {
public:
using TBase = NActors::TActor<TMonitoringGrpcServiceActor>;
struct TSelfCheckGrpcRequest : TGrpcRequest {
Expand All @@ -49,7 +49,7 @@ class TMonitoringGrpcServiceActor : public NActors::TActor<TMonitoringGrpcServic
using TResponseEventType = TEvPrivate::TEvSelfCheckResponse;
};

TMonitoringGrpcServiceActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider)
TMonitoringGrpcServiceActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider)
: TBase(&TMonitoringGrpcServiceActor::StateFunc)
, TGrpcServiceClient(settings)
, Settings(settings)
Expand Down Expand Up @@ -118,13 +118,13 @@ class TMonitoringGrpcServiceActor : public NActors::TActor<TMonitoringGrpcServic
}

private:
NCloud::TGrpcClientSettings Settings;
NGrpcActorClient::TGrpcClientSettings Settings;
TMap<uint64_t, TEvYdbCompute::TEvCpuLoadRequest::TPtr> Requests;
NYdb::TCredentialsProviderPtr CredentialsProvider;
int64_t Cookie = 0;
};

std::unique_ptr<NActors::IActor> CreateMonitoringGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
std::unique_ptr<NActors::IActor> CreateMonitoringGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
return std::make_unique<TMonitoringGrpcServiceActor>(settings, credentialsProvider);
}

Expand Down
1 change: 1 addition & 0 deletions ydb/core/fq/libs/compute/ydb/control_plane/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ PEERDIR(
library/cpp/json
ydb/library/actors/core
ydb/library/actors/protos
ydb/library/grpc/actor_client
ydb/core/fq/libs/compute/ydb/synchronization_service
ydb/core/fq/libs/control_plane_storage/proto
ydb/core/fq/libs/quota_manager/proto
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/api/events.h>
#include <ydb/library/ycloud/impl/grpc_service_client.h>
#include <ydb/library/grpc/actor_client/grpc_service_client.h>

#include <ydb/library/actors/core/actor.h>
#include <ydb/library/actors/core/event.h>
Expand All @@ -15,7 +15,7 @@ namespace NFq {
class TYdbcpGrpcServiceActor : public NActors::TActor<TYdbcpGrpcServiceActor> {
public:
using TBase = NActors::TActor<TYdbcpGrpcServiceActor>;
TYdbcpGrpcServiceActor(const NCloud::TGrpcClientSettings&,
TYdbcpGrpcServiceActor(const NGrpcActorClient::TGrpcClientSettings&,
const NYdb::TCredentialsProviderPtr&)
: TBase(&TYdbcpGrpcServiceActor::StateFunc)
{}
Expand All @@ -38,7 +38,7 @@ class TYdbcpGrpcServiceActor : public NActors::TActor<TYdbcpGrpcServiceActor> {
}
};

std::unique_ptr<NActors::IActor> CreateYdbcpGrpcClientActor(const NCloud::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
std::unique_ptr<NActors::IActor> CreateYdbcpGrpcClientActor(const NGrpcActorClient::TGrpcClientSettings& settings, const NYdb::TCredentialsProviderPtr& credentialsProvider) {
return std::make_unique<TYdbcpGrpcServiceActor>(settings, credentialsProvider);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <ydb/core/fq/libs/config/protos/compute.pb.h>

#include <ydb/library/security/ydb_credentials_provider_factory.h>
#include <ydb/library/ycloud/impl/grpc_service_settings.h>
#include <ydb/library/grpc/actor_client/grpc_service_settings.h>
#include <ydb/core/fq/libs/config/protos/common.pb.h>
#include <ydb/core/fq/libs/signer/signer.h>
#include <ydb/core/fq/libs/shared_resources/shared_resources.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ SRCS(
PEERDIR(
ydb/library/actors/core
ydb/library/actors/protos
ydb/library/grpc/actor_client
ydb/core/fq/libs/control_plane_storage/proto
ydb/public/api/grpc
ydb/library/db_pool/protos
Expand Down
2 changes: 1 addition & 1 deletion ydb/core/http_proxy/http_req.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
#include <ydb/library/yql/public/issue/yql_issue_message.h>
#include <ydb/library/ycloud/api/access_service.h>
#include <ydb/library/ycloud/api/iam_token_service.h>
#include <ydb/library/ycloud/impl/grpc_service_cache.h>
#include <ydb/library/grpc/actor_client/grpc_service_cache.h>
#include <ydb/library/ycloud/impl/access_service.h>
#include <ydb/library/ycloud/impl/iam_token_service.h>
#include <ydb/services/persqueue_v1/actors/persqueue_utils.h>
Expand Down
1 change: 1 addition & 0 deletions ydb/core/http_proxy/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ PEERDIR(
contrib/restricted/nlohmann_json
ydb/library/actors/http
ydb/library/actors/core
ydb/library/grpc/actor_client
ydb/core/base
ydb/core/protos
ydb/core/grpc_services/local_rpc
Expand Down
Loading

0 comments on commit 2712745

Please sign in to comment.