[#1636] qos: Add Limiter

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
Dmitrii Stepanov 2025-02-05 12:31:01 +03:00
parent 9d42c8514c
commit f88b5d9115
Signed by: dstepanov-yadro
GPG key ID: 237AF1A763293BC0
4 changed files with 160 additions and 4 deletions

View file

@ -135,6 +135,7 @@ type shardCfg struct {
refillMetabase bool
refillMetabaseWorkersCount int
mode shardmode.Mode
limiter qos.Limiter
metaCfg struct {
path string
@ -277,7 +278,7 @@ func (a *applicationConfiguration) updateShardConfig(c *config.Config, oldConfig
a.setMetabaseConfig(&newConfig, oldConfig)
a.setGCConfig(&newConfig, oldConfig)
if err := a.setLimits(&newConfig, oldConfig); err != nil {
if err := a.setLimiter(&newConfig, oldConfig); err != nil {
return err
}
@ -373,11 +374,16 @@ func (a *applicationConfiguration) setGCConfig(newConfig *shardCfg, oldConfig *s
newConfig.gcCfg.expiredCollectorWorkerCount = gcCfg.ExpiredCollectorWorkerCount()
}
func (a *applicationConfiguration) setLimits(newConfig *shardCfg, oldConfig *shardconfig.Config) error {
func (a *applicationConfiguration) setLimiter(newConfig *shardCfg, oldConfig *shardconfig.Config) error {
limitsConfig := oldConfig.Limits()
if err := qos.ValidateConfig(limitsConfig); err != nil {
limiter, err := qos.NewLimiter(limitsConfig)
if err != nil {
return err
}
if newConfig.limiter != nil {
newConfig.limiter.Close()
}
newConfig.limiter = limiter
return nil
}