Merge pull request #105 from boz/fix-rl-gc-eviction
ratelimit: fix bucket collection eviction
This commit is contained in:
commit
2b56f8711f
|
@ -5,7 +5,10 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
const GC_SIZE int = 100
|
||||
const (
|
||||
GC_SIZE int = 100
|
||||
GC_PERIOD time.Duration = 60 * time.Second
|
||||
)
|
||||
|
||||
type Memory struct {
|
||||
store map[string]LeakyBucket
|
||||
|
@ -44,11 +47,10 @@ func (m *Memory) GarbageCollect() {
|
|||
now := time.Now()
|
||||
|
||||
// rate limit GC to once per minute
|
||||
if now.Add(60*time.Second).Unix() > m.lastGCCollected.Unix() {
|
||||
|
||||
if now.Unix() >= m.lastGCCollected.Add(GC_PERIOD).Unix() {
|
||||
for key, bucket := range m.store {
|
||||
// if the bucket is drained, then GC
|
||||
if bucket.DrainedAt().Unix() > now.Unix() {
|
||||
if bucket.DrainedAt().Unix() < now.Unix() {
|
||||
delete(m.store, key)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue