diff options
author | hcpp <hcpp@ydb.tech> | 2022-10-04 17:42:41 +0300 |
---|---|---|
committer | hcpp <hcpp@ydb.tech> | 2022-10-04 17:42:41 +0300 |
commit | 84acfe7d36ff9a4538b841fb78f00ce3de177e28 (patch) | |
tree | 3b9f1ef2262efc3fe3e4ca4e1be298dc278407d8 | |
parent | b3ee821a784e0c0687bed85edc6fa458c4e1f1be (diff) | |
download | ydb-84acfe7d36ff9a4538b841fb78f00ce3de177e28.tar.gz |
metrics ttl parameter has been added to config
10 files changed, 81 insertions, 34 deletions
diff --git a/ydb/core/yq/libs/config/protos/control_plane_proxy.proto b/ydb/core/yq/libs/config/protos/control_plane_proxy.proto index 51f5d1f9f87..b7fa0c54647 100644 --- a/ydb/core/yq/libs/config/protos/control_plane_proxy.proto +++ b/ydb/core/yq/libs/config/protos/control_plane_proxy.proto @@ -10,4 +10,5 @@ message TControlPlaneProxyConfig { bool Enabled = 1; string RequestTimeout = 2; bool EnablePermissions = 3; + string MetricsTtl = 4; } diff --git a/ydb/core/yq/libs/config/protos/control_plane_storage.proto b/ydb/core/yq/libs/config/protos/control_plane_storage.proto index 2eb2b50f784..f2417d42444 100644 --- a/ydb/core/yq/libs/config/protos/control_plane_storage.proto +++ b/ydb/core/yq/libs/config/protos/control_plane_storage.proto @@ -66,4 +66,5 @@ message TControlPlaneStorageConfig { TQueryMapping Mapping = 25; repeated TRetryPolicyMapping RetryPolicyMapping = 26; string QuotaTtl = 28; + string MetricsTtl = 29; } diff --git a/ydb/core/yq/libs/control_plane_proxy/CMakeLists.txt b/ydb/core/yq/libs/control_plane_proxy/CMakeLists.txt index 058247d5e14..1fb348a7995 100644 --- a/ydb/core/yq/libs/control_plane_proxy/CMakeLists.txt +++ b/ydb/core/yq/libs/control_plane_proxy/CMakeLists.txt @@ -27,6 +27,7 @@ target_link_libraries(yq-libs-control_plane_proxy PUBLIC ydb-library-security ) target_sources(yq-libs-control_plane_proxy PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/core/yq/libs/control_plane_proxy/config.cpp ${CMAKE_SOURCE_DIR}/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp ${CMAKE_SOURCE_DIR}/ydb/core/yq/libs/control_plane_proxy/probes.cpp ) diff --git a/ydb/core/yq/libs/control_plane_proxy/config.cpp b/ydb/core/yq/libs/control_plane_proxy/config.cpp new file mode 100644 index 00000000000..f89cf1e2019 --- /dev/null +++ b/ydb/core/yq/libs/control_plane_proxy/config.cpp @@ -0,0 +1,36 @@ +#include "config.h" + +namespace NYq { + +namespace { + +TDuration GetDuration(const TString& value, const TDuration& defaultValue) +{ + TDuration result = defaultValue; + TDuration::TryParse(value, result); + return result; +} + +NConfig::TControlPlaneProxyConfig FillDefaultParameters(NConfig::TControlPlaneProxyConfig config) +{ + if (!config.GetRequestTimeout()) { + config.SetRequestTimeout("30s"); + } + + if (!config.GetMetricsTtl()) { + config.SetMetricsTtl("1d"); + } + + return config; +} + +} + +TControlPlaneProxyConfig::TControlPlaneProxyConfig(const NConfig::TControlPlaneProxyConfig& config) + : Proto(FillDefaultParameters(config)) + , RequestTimeout(GetDuration(Proto.GetRequestTimeout(), TDuration::Seconds(30))) + , MetricsTtl(GetDuration(Proto.GetMetricsTtl(), TDuration::Days(1))) +{ +} + +} // NYq diff --git a/ydb/core/yq/libs/control_plane_proxy/config.h b/ydb/core/yq/libs/control_plane_proxy/config.h new file mode 100644 index 00000000000..8cb2d46dacf --- /dev/null +++ b/ydb/core/yq/libs/control_plane_proxy/config.h @@ -0,0 +1,17 @@ +#pragma once + +#include <ydb/core/yq/libs/config/protos/control_plane_proxy.pb.h> + +#include <util/datetime/base.h> + +namespace NYq { + +struct TControlPlaneProxyConfig { + NConfig::TControlPlaneProxyConfig Proto; + TDuration RequestTimeout; + TDuration MetricsTtl; + + TControlPlaneProxyConfig(const NConfig::TControlPlaneProxyConfig& config); +}; + +} // NYq diff --git a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp index 0d0b987ec17..6b2a3b239da 100644 --- a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp +++ b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp @@ -1,3 +1,4 @@ +#include "config.h" #include "control_plane_proxy.h" #include "probes.h" #include "utils.h" @@ -206,7 +207,7 @@ class TResolveFolderActor : public NActors::TActorBootstrapped<TResolveFolderAct using TBase::Become; using TBase::Register; - NConfig::TControlPlaneProxyConfig Config; + ::NYq::TControlPlaneProxyConfig Config; TActorId Sender; TRequestCommonCountersPtr Counters; TString FolderId; @@ -219,7 +220,7 @@ class TResolveFolderActor : public NActors::TActorBootstrapped<TResolveFolderAct public: TResolveFolderActor(const TRequestCommonCountersPtr& counters, - TActorId sender, const NConfig::TControlPlaneProxyConfig& config, + TActorId sender, const ::NYq::TControlPlaneProxyConfig& config, const TString& folderId, const TString& token, const std::function<void(const TDuration&, bool, bool)>& probe, TEventRequest event, @@ -240,7 +241,7 @@ public: void Bootstrap() { CPP_LOG_T("Resolve folder bootstrap. Folder id: " << FolderId << " Actor id: " << SelfId()); - Become(&TResolveFolderActor::StateFunc, GetDuration(Config.GetRequestTimeout(), TDuration::Seconds(30)), new NActors::TEvents::TEvWakeup()); + Become(&TResolveFolderActor::StateFunc, Config.RequestTimeout, new NActors::TEvents::TEvWakeup()); auto request = std::make_unique<NKikimr::NFolderService::TEvFolderService::TEvGetFolderRequest>(); request->Request.set_folder_id(FolderId); request->Token = Token; @@ -309,7 +310,7 @@ class TRequestActor : public NActors::TActorBootstrapped<TRequestActor<TRequestP using TBase::PassAway; using TBase::Become; - NConfig::TControlPlaneProxyConfig Config; + ::NYq::TControlPlaneProxyConfig Config; TRequestProto RequestProto; TString Scope; TString FolderId; @@ -328,7 +329,7 @@ class TRequestActor : public NActors::TActorBootstrapped<TRequestActor<TRequestP public: static constexpr char ActorName[] = "YQ_CONTROL_PLANE_PROXY_REQUEST_ACTOR"; - explicit TRequestActor(const NConfig::TControlPlaneProxyConfig& config, + explicit TRequestActor(const ::NYq::TControlPlaneProxyConfig& config, TActorId sender, ui32 cookie, const TString& scope, const TString& folderId, TRequestProto&& requestProto, TString&& user, TString&& token, const TActorId& serviceId, @@ -353,14 +354,13 @@ public: , Quotas(quotas) { Counters.IncInFly(); - FillDefaultParameters(Config); } public: void Bootstrap() { CPP_LOG_T("Request actor. Actor id: " << SelfId()); - Become(&TRequestActor::StateFunc, GetDuration(Config.GetRequestTimeout(), TDuration::Seconds(30)), new NActors::TEvents::TEvWakeup()); + Become(&TRequestActor::StateFunc, Config.RequestTimeout, new NActors::TEvents::TEvWakeup()); Send(ServiceId, new TRequest(Scope, RequestProto, User, Token, CloudId, Permissions, Quotas), 0, Cookie); } @@ -420,20 +420,6 @@ public: Counters.DecInFly(); Counters.Common->LatencyMs->Collect((TInstant::Now() - StartTime).MilliSeconds()); } - - TDuration GetDuration(const TString& value, const TDuration& defaultValue) - { - TDuration result = defaultValue; - TDuration::TryParse(value, result); - return result; - } - - void FillDefaultParameters(NConfig::TControlPlaneProxyConfig& config) - { - if (!config.GetRequestTimeout()) { - config.SetRequestTimeout("30s"); - } - } }; class TControlPlaneProxyActor : public NActors::TActorBootstrapped<TControlPlaneProxyActor> { @@ -505,8 +491,6 @@ class TControlPlaneProxyActor : public NActors::TActorBootstrapped<TControlPlane } }; - TDuration MetricsTtl = TDuration::Days(1); - using TScopeCounters = std::array<TRequestScopeCountersPtr, RTS_MAX>; using TScopeCountersPtr = std::shared_ptr<TScopeCounters>; @@ -601,7 +585,7 @@ class TControlPlaneProxyActor : public NActors::TActorBootstrapped<TControlPlane }; TCounters Counters; - NConfig::TControlPlaneProxyConfig Config; + ::NYq::TControlPlaneProxyConfig Config; bool GetQuotas; public: @@ -683,7 +667,7 @@ private: template<typename T> NYql::TIssues ValidatePermissions(T& ev, const TVector<TString>& requiredPermissions) { NYql::TIssues issues; - if (!Config.GetEnablePermissions()) { + if (!Config.Proto.GetEnablePermissions()) { return issues; } @@ -1883,7 +1867,7 @@ private: HTML(str) { PRE() { str << "Current config:" << Endl; - str << Config.DebugString() << Endl; + str << Config.Proto.DebugString() << Endl; str << Endl; } } diff --git a/ydb/core/yq/libs/control_plane_storage/config.cpp b/ydb/core/yq/libs/control_plane_storage/config.cpp index d5171cbc1dd..4469c3228a3 100644 --- a/ydb/core/yq/libs/control_plane_storage/config.cpp +++ b/ydb/core/yq/libs/control_plane_storage/config.cpp @@ -28,6 +28,8 @@ TControlPlaneStorageConfig::TControlPlaneStorageConfig(const NConfig::TControlPl , AnalyticsRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1))) , StreamingRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1))) , TaskLeaseTtl(GetDuration(Proto.GetTaskLeaseTtl(), TDuration::Seconds(30))) + , QuotaTtl(GetDuration(Proto.GetQuotaTtl(), TDuration::Zero())) + , MetricsTtl(GetDuration(Proto.GetMetricsTtl(), TDuration::Days(1))) { for (const auto& availableConnection : Proto.GetAvailableConnection()) { AvailableConnections.insert(GetConnectionType(availableConnection)); @@ -51,8 +53,6 @@ TControlPlaneStorageConfig::TControlPlaneStorageConfig(const NConfig::TControlPl TaskLeaseRetryPolicy.RetryCount = Proto.GetTaskLeaseRetryPolicy().GetRetryCount(); TaskLeaseRetryPolicy.RetryPeriod = GetDuration(Proto.GetTaskLeaseRetryPolicy().GetRetryPeriod(), TDuration::Days(1)); } - - QuotaTtl = GetDuration(Proto.GetQuotaTtl(), TDuration::Zero()); } } // NYq diff --git a/ydb/core/yq/libs/control_plane_storage/config.h b/ydb/core/yq/libs/control_plane_storage/config.h index 7097e3c6e18..1fd1b3231f5 100644 --- a/ydb/core/yq/libs/control_plane_storage/config.h +++ b/ydb/core/yq/libs/control_plane_storage/config.h @@ -26,6 +26,7 @@ struct TControlPlaneStorageConfig { THashMap<ui64, TRetryPolicyItem> RetryPolicies; TRetryPolicyItem TaskLeaseRetryPolicy; TDuration QuotaTtl; + TDuration MetricsTtl; TControlPlaneStorageConfig(const NConfig::TControlPlaneStorageConfig& config, const NConfig::TCommonConfig& common); }; diff --git a/ydb/core/yq/libs/control_plane_storage/util.cpp b/ydb/core/yq/libs/control_plane_storage/util.cpp index b5129bbbf6b..f22e17b672b 100644 --- a/ydb/core/yq/libs/control_plane_storage/util.cpp +++ b/ydb/core/yq/libs/control_plane_storage/util.cpp @@ -95,6 +95,10 @@ NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlane config.SetTaskLeaseTtl("30s"); } + if (!config.GetMetricsTtl()) { + config.SetMetricsTtl("1d"); + } + if (!config.HasTaskLeaseRetryPolicy()) { auto& taskLeaseRetryPolicy = *config.MutableTaskLeaseRetryPolicy(); taskLeaseRetryPolicy.SetRetryCount(20); diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h index 7c35e5749ff..01aac43de5e 100644 --- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h +++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h @@ -324,8 +324,10 @@ class TYdbControlPlaneStorageActor : public NActors::TActorBootstrapped<TYdbCont public: ::NMonitoring::TDynamicCounterPtr Counters; - explicit TCounters(const ::NMonitoring::TDynamicCounterPtr& counters) - : Counters(counters) + explicit TCounters(const ::NMonitoring::TDynamicCounterPtr& counters, const ::NYq::TControlPlaneStorageConfig& config) + : ScopeCounters{TTtlCacheSettings{}.SetTtl(config.MetricsTtl)} + , FinalStatusCounters{TTtlCacheSettings{}.SetTtl(config.MetricsTtl)} + , Counters(counters) { for (auto& request: CommonRequests) { request->Register(Counters); @@ -402,10 +404,10 @@ class TYdbControlPlaneStorageActor : public NActors::TActorBootstrapped<TYdbCont } }; - TCounters Counters; - ::NYq::TControlPlaneStorageConfig Config; + TCounters Counters; + TYdbConnectionPtr YdbConnection; ::NYq::TYqSharedResources::TPtr YqSharedResources; @@ -430,8 +432,8 @@ public: const ::NYq::TYqSharedResources::TPtr& yqSharedResources, const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory, const TString& tenantName) - : Counters(counters) - , Config(config, common) + : Config(config, common) + , Counters(counters, Config) , YqSharedResources(yqSharedResources) , CredProviderFactory(credProviderFactory) , TenantName(tenantName) |