aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordave11ar <dave11ar@yandex-team.com>2025-07-18 13:50:16 +0300
committerdave11ar <dave11ar@yandex-team.com>2025-07-18 14:03:06 +0300
commit3a784b9ad30534ae99cf449757030a09c7c36082 (patch)
treeb60407ddf0eaa2f3d4bd8452209b988dd513ada0
parente0b0dd77ded87e2e73d6a47ddea56ee26f452b6d (diff)
downloadydb-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.cpp32
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) {