Skip to content

Commit

Permalink
Remove caching of rate limit overrides
Browse files Browse the repository at this point in the history
  • Loading branch information
Pchelolo committed Jul 14, 2020
1 parent 9f2cbf7 commit 1d56d6a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 16 deletions.
14 changes: 1 addition & 13 deletions src/config/config_impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ type rateLimitDescriptor struct {

type rateLimitDomain struct {
rateLimitDescriptor
overrides map[string]*RateLimit
}

type rateLimitConfigImpl struct {
Expand Down Expand Up @@ -228,7 +227,7 @@ func (this *rateLimitConfigImpl) loadConfig(config RateLimitConfigToLoad) {
}

logger.Debugf("loading domain: %s", root.Domain)
newDomain := &rateLimitDomain{rateLimitDescriptor{map[string]*rateLimitDescriptor{}, nil}, map[string]*RateLimit{}}
newDomain := &rateLimitDomain{rateLimitDescriptor{map[string]*rateLimitDescriptor{}, nil}}
newDomain.loadDescriptors(config, root.Domain+".", root.Descriptors, this.statsScope)
this.domains[root.Domain] = newDomain
}
Expand Down Expand Up @@ -269,23 +268,12 @@ func (this *rateLimitConfigImpl) GetLimit(

if descriptor.GetLimit() != nil {
rateLimitKey := domain + "." + this.descriptorToKey(descriptor)
rateLimit := value.overrides[rateLimitKey]
rateLimitOverrideUnit := pb.RateLimitResponse_RateLimit_Unit(descriptor.GetLimit().GetUnit())
if rateLimit != nil {
if rateLimit.Limit.RequestsPerUnit != descriptor.GetLimit().GetRequestsPerUnit() ||
rateLimit.Limit.Unit != rateLimitOverrideUnit {

rateLimit.Limit.RequestsPerUnit = descriptor.GetLimit().GetRequestsPerUnit()
rateLimit.Limit.Unit = rateLimitOverrideUnit
}
return rateLimit
}
rateLimit = NewRateLimit(
descriptor.GetLimit().GetRequestsPerUnit(),
rateLimitOverrideUnit,
rateLimitKey,
this.statsScope)
value.overrides[rateLimitKey] = rateLimit
return rateLimit
}

Expand Down
9 changes: 6 additions & 3 deletions test/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,13 +193,16 @@ func TestConfigLimitOverride(t *testing.T) {
},
})
assert.Equal("test-domain.key1_value1.subkey1_something", rl.FullKey)
rl.Stats.TotalHits.Inc()
rl.Stats.OverLimit.Inc()
rl.Stats.NearLimit.Inc()
common.AssertProtoEqual(assert, &pb.RateLimitResponse_RateLimit{
RequestsPerUnit: 42,
Unit: pb.RateLimitResponse_RateLimit_HOUR,
}, rl.Limit)
assert.EqualValues(1, stats.NewCounter("test-domain.key1_value1.subkey1_something.total_hits").Value())
assert.EqualValues(1, stats.NewCounter("test-domain.key1_value1.subkey1_something.over_limit").Value())
assert.EqualValues(1, stats.NewCounter("test-domain.key1_value1.subkey1_something.near_limit").Value())
assert.EqualValues(2, stats.NewCounter("test-domain.key1_value1.subkey1_something.total_hits").Value())
assert.EqualValues(2, stats.NewCounter("test-domain.key1_value1.subkey1_something.over_limit").Value())
assert.EqualValues(2, stats.NewCounter("test-domain.key1_value1.subkey1_something.near_limit").Value())

// Different value creates a different counter
rl = rlConfig.GetLimit(
Expand Down

0 comments on commit 1d56d6a

Please sign in to comment.