diff --git a/pkg/ratelimit/ratelimiter.go b/pkg/ratelimit/ratelimiter.go index be383023a..85a38739a 100644 --- a/pkg/ratelimit/ratelimiter.go +++ b/pkg/ratelimit/ratelimiter.go @@ -67,3 +67,16 @@ func (rl *RateLimiter) AllowVerbose(sender string) (senderAllow bool, globalAllo return senderLimiter.Allow(), rl.global.Allow() } + +func (rl *RateLimiter) SetConfig(config RateLimiterConfig) { + rl.mu.Lock() + defer rl.mu.Unlock() + rl.config = config + rl.global.SetLimit(rate.Limit(config.GlobalRPS)) + rl.global.SetBurst(config.GlobalBurst) + + for _, limiter := range rl.perSender { + limiter.SetLimit(rate.Limit(config.PerSenderRPS)) + limiter.SetBurst(config.PerSenderBurst) + } +} diff --git a/pkg/settings/cresettings/defaults.json b/pkg/settings/cresettings/defaults.json index 76c4e7e99..ff8a17c9c 100644 --- a/pkg/settings/cresettings/defaults.json +++ b/pkg/settings/cresettings/defaults.json @@ -1,10 +1,9 @@ { "WorkflowLimit": "200", - "WorkflowRegistrationQueueLimit": "20", "WorkflowExecutionConcurrencyLimit": "50", "WorkflowTriggerRateLimit": "200rps:200", - "GatewayUnauthenticatedRequestRateLimit": "100rps:-1", - "GatewayUnauthenticatedRequestRateLimitPerIP": "1rps:-1", + "GatewayUnauthenticatedRequestRateLimit": "100rps:100", + "GatewayUnauthenticatedRequestRateLimitPerIP": "1rps:1", "GatewayIncomingPayloadSizeLimit": "10kb", "PerOrg": { "WorkflowDeploymentRateLimit": "every1m0s:1", diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index b9c7c0355..a1ac797a0 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -1,9 +1,8 @@ WorkflowLimit = '200' -WorkflowRegistrationQueueLimit = '20' WorkflowExecutionConcurrencyLimit = '50' WorkflowTriggerRateLimit = '200rps:200' -GatewayUnauthenticatedRequestRateLimit = '100rps:-1' -GatewayUnauthenticatedRequestRateLimitPerIP = '1rps:-1' +GatewayUnauthenticatedRequestRateLimit = '100rps:100' +GatewayUnauthenticatedRequestRateLimitPerIP = '1rps:1' GatewayIncomingPayloadSizeLimit = '10kb' [PerOrg] diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index 3f10895e4..6404bb293 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -45,11 +45,10 @@ var Config Schema var Default = Schema{ WorkflowLimit: Int(200), - WorkflowRegistrationQueueLimit: Int(20), WorkflowExecutionConcurrencyLimit: Int(50), WorkflowTriggerRateLimit: Rate(200, 200), - GatewayUnauthenticatedRequestRateLimit: Rate(rate.Every(time.Second/100), -1), - GatewayUnauthenticatedRequestRateLimitPerIP: Rate(rate.Every(time.Second), -1), + GatewayUnauthenticatedRequestRateLimit: Rate(rate.Every(time.Second/100), 100), + GatewayUnauthenticatedRequestRateLimitPerIP: Rate(rate.Every(time.Second), 1), GatewayIncomingPayloadSizeLimit: Size(10 * config.KByte), PerOrg: Orgs{ @@ -128,7 +127,6 @@ var Default = Schema{ type Schema struct { WorkflowLimit Setting[int] `unit:"{workflow}"` - WorkflowRegistrationQueueLimit Setting[int] `unit:"{workflow}"` WorkflowExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"` WorkflowTriggerRateLimit Setting[config.Rate] GatewayUnauthenticatedRequestRateLimit Setting[config.Rate]