diff options
author | dave11ar <dave11ar@yandex-team.com> | 2025-07-18 13:50:16 +0300 |
---|---|---|
committer | dave11ar <dave11ar@yandex-team.com> | 2025-07-18 14:03:06 +0300 |
commit | 3a784b9ad30534ae99cf449757030a09c7c36082 (patch) | |
tree | b60407ddf0eaa2f3d4bd8452209b988dd513ada0 | |
parent | e0b0dd77ded87e2e73d6a47ddea56ee26f452b6d (diff) | |
download | ydb-3a784b9ad30534ae99cf449757030a09c7c36082.tar.gz |
YT-25683: Make overload controller more careful with tracker config type
commit_hash:49ccd73edb573fa9874a6ff70eef0f51c1fa2380
-rw-r--r-- | yt/yt/core/rpc/overload_controller.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/yt/yt/core/rpc/overload_controller.cpp b/yt/yt/core/rpc/overload_controller.cpp index dc2dd8e2270..b24070b304f 100644 --- a/yt/yt/core/rpc/overload_controller.cpp +++ b/yt/yt/core/rpc/overload_controller.cpp @@ -46,6 +46,8 @@ public: virtual bool CalculateIsOverloaded(const TOverloadTrackerConfig& config) = 0; + virtual EOverloadTrackerConfigType GetConfigType() const = 0; + const std::string& GetType() const { return Type_; @@ -98,7 +100,15 @@ public: summary.Count(), meanValue); - return ProfileAndGetOverloaded(meanValue, config.TryGetConcrete<TOverloadTrackerMeanWaitTimeConfig>()); + auto meanWaitTimeConfig = config.TryGetConcrete<TOverloadTrackerMeanWaitTimeConfig>(); + YT_VERIFY(meanWaitTimeConfig); + + return ProfileAndGetOverloaded(meanValue, meanWaitTimeConfig); + } + + virtual EOverloadTrackerConfigType GetConfigType() const override + { + return EOverloadTrackerConfigType::MeanWaitTime; } protected: @@ -155,7 +165,10 @@ public: LastCpuStats_ = cpuStats; - return ProfileAndGetOverloaded(throttlingTime, config.TryGetConcrete<TOverloadTrackerMeanWaitTimeConfig>()); + auto meanWaitTimeConfig = config.TryGetConcrete<TOverloadTrackerMeanWaitTimeConfig>(); + YT_VERIFY(meanWaitTimeConfig); + + return ProfileAndGetOverloaded(throttlingTime, meanWaitTimeConfig); } private: @@ -210,7 +223,8 @@ public: "(BacklogQueueFillFraction: %v)", BacklogQueueFillFraction); - const auto& logDropConfig = config.TryGetConcrete<TOverloadTrackerBacklogQueueFillFractionConfig>(); + auto logDropConfig = config.TryGetConcrete<TOverloadTrackerBacklogQueueFillFractionConfig>(); + YT_VERIFY(logDropConfig); bool overloaded = BacklogQueueFillFraction > logDropConfig->BacklogQueueFillFractionThreshold; @@ -221,6 +235,11 @@ public: return overloaded; } + EOverloadTrackerConfigType GetConfigType() const override + { + return EOverloadTrackerConfigType::BacklogQueueFillFraction; + } + private: TGauge BacklogQueueFillFraction_; TGauge BacklogQueueFillFractionThreshold_; @@ -487,6 +506,13 @@ private: const auto& trackerConfig = trackerIt->second; + if (trackerConfig.GetCurrentType() != tracker->GetConfigType()) { + YT_LOG_ERROR("Incorrect overload controller tracker config type (ExpectedType: %v, ActualType: %v)", + tracker->GetConfigType(), + trackerConfig.GetCurrentType()); + continue; + } + auto trackerOverloaded = tracker->CalculateIsOverloaded(trackerConfig); if (!trackerOverloaded) { |