@@ -74,8 +74,9 @@ class TStateBase : public IState {
7474 };
7575
7676public:
77- TStateBase (const TActorContext& actorContext, const TString& poolId, const TWorkloadManagerConfig::TPoolConfig & poolConfig, NMonitoring::TDynamicCounterPtr counters)
77+ TStateBase (const TActorContext& actorContext, const TString& poolId, const NResourcePool::TPoolSettings & poolConfig, NMonitoring::TDynamicCounterPtr counters)
7878 : Counters(counters)
79+ , PoolConfig(poolConfig)
7980 , ActorContext(actorContext)
8081 , PoolId(poolId)
8182 , CancelAfter(poolConfig.QueryCancelAfter)
@@ -96,7 +97,7 @@ class TStateBase : public IState {
9697
9798 bool PlaceRequest (const TActorId& workerActorId, const TString& sessionId) final {
9899 if (LocalSessions.contains (sessionId)) {
99- ActorContext.Send (workerActorId, new TEvContinueRequest (Ydb::StatusIds::INTERNAL_ERROR, {NYql::TIssue (TStringBuilder () << " Got duplicate session id " << sessionId << " for pool " << PoolId)}));
100+ ActorContext.Send (workerActorId, new TEvContinueRequest (Ydb::StatusIds::INTERNAL_ERROR, PoolConfig, {NYql::TIssue (TStringBuilder () << " Got duplicate session id " << sessionId << " for pool " << PoolId)}));
100101 return false ;
101102 }
102103
@@ -143,7 +144,7 @@ class TStateBase : public IState {
143144 }
144145
145146 void ReplyContinue (TRequest* request, Ydb::StatusIds::StatusCode status = Ydb::StatusIds::SUCCESS, NYql::TIssues issues = {}) {
146- ActorContext.Send (request->WorkerActorId , new TEvContinueRequest (status, std::move (issues)));
147+ ActorContext.Send (request->WorkerActorId , new TEvContinueRequest (status, PoolConfig, std::move (issues)));
147148
148149 if (status == Ydb::StatusIds::SUCCESS) {
149150 LocalInFlight++;
@@ -250,12 +251,12 @@ class TStateBase : public IState {
250251 LOG_I (" Cancel request for worker " << request->WorkerActorId << " , session id: " << request->SessionId << " , local in flight: " << LocalInFlight);
251252 }
252253
253- static ui64 GetMaxPoolSize (const TWorkloadManagerConfig::TPoolConfig & poolConfig) {
254+ static ui64 GetMaxPoolSize (const NResourcePool::TPoolSettings & poolConfig) {
254255 const ui64 queryCountLimit = poolConfig.QueryCountLimit ;
255256 return queryCountLimit ? queryCountLimit : std::numeric_limits<ui64>::max ();
256257 }
257258
258- static ui64 GetMaxInFlight (const TWorkloadManagerConfig::TPoolConfig & poolConfig) {
259+ static ui64 GetMaxInFlight (const NResourcePool::TPoolSettings & poolConfig) {
259260 const ui64 queueSizeLimit = GetMaxPoolSize (poolConfig);
260261 const ui64 concurrentQueryLimit = poolConfig.ConcurrentQueryLimit ;
261262 return std::min (concurrentQueryLimit ? concurrentQueryLimit : std::numeric_limits<ui64>::max (), queueSizeLimit);
@@ -277,6 +278,7 @@ class TStateBase : public IState {
277278protected:
278279 NMonitoring::TDynamicCounterPtr Counters;
279280
281+ const NResourcePool::TPoolSettings PoolConfig;
280282 const TActorContext ActorContext;
281283 const TString PoolId;
282284 const TDuration CancelAfter;
@@ -306,7 +308,7 @@ class TUnlimitedState : public TStateBase {
306308 using TBase = TStateBase;
307309
308310public:
309- TUnlimitedState (const TActorContext& actorContext, const TString& poolId, const TWorkloadManagerConfig::TPoolConfig & poolConfig, NMonitoring::TDynamicCounterPtr counters)
311+ TUnlimitedState (const TActorContext& actorContext, const TString& poolId, const NResourcePool::TPoolSettings & poolConfig, NMonitoring::TDynamicCounterPtr counters)
310312 : TBase(actorContext, poolId, poolConfig, counters)
311313 {
312314 Y_ENSURE (InFlightLimit == std::numeric_limits<ui64>::max ());
@@ -341,7 +343,7 @@ class TFifoState : public TStateBase {
341343 static constexpr ui64 MAX_PENDING_REQUESTS = 1000 ;
342344
343345public:
344- TFifoState (TActorContext actorContext, const TString& poolId, const TWorkloadManagerConfig::TPoolConfig & poolConfig, NMonitoring::TDynamicCounterPtr counters)
346+ TFifoState (TActorContext actorContext, const TString& poolId, const NResourcePool::TPoolSettings & poolConfig, NMonitoring::TDynamicCounterPtr counters)
345347 : TBase(actorContext, poolId, poolConfig, counters)
346348 {
347349 Y_ENSURE (InFlightLimit < std::numeric_limits<ui64>::max ());
@@ -667,7 +669,7 @@ class TFifoState : public TStateBase {
667669
668670} // anonymous namespace
669671
670- TStatePtr CreateState (const TActorContext& actorContext, const TString& poolId, const TWorkloadManagerConfig::TPoolConfig & poolConfig, NMonitoring::TDynamicCounterPtr counters) {
672+ TStatePtr CreateState (const TActorContext& actorContext, const TString& poolId, const NResourcePool::TPoolSettings & poolConfig, NMonitoring::TDynamicCounterPtr counters) {
671673 if (!poolConfig.ConcurrentQueryLimit && !poolConfig.QueryCountLimit ) {
672674 return MakeIntrusive<TUnlimitedState>(actorContext, poolId, poolConfig, counters);
673675 }
0 commit comments