attempt to fix ticker leak (#1620)

This commit is contained in:
Thibault "bui" Koechlin 2022-06-30 17:36:01 +02:00 committed by GitHub
parent 02e0f3c095
commit ca4cd6d559
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -195,7 +195,8 @@ func FromFactory(bucketFactory BucketFactory) *Leaky {
func LeakRoutine(leaky *Leaky) error {
var (
durationTicker <-chan time.Time = make(<-chan time.Time)
durationTicker <-chan time.Time = make(<-chan time.Time)
underflowTicker *time.Ticker
)
defer types.CatchPanic(fmt.Sprintf("crowdsec/LeakRoutine/%s", leaky.Name))
@ -239,9 +240,12 @@ func LeakRoutine(leaky *Leaky) error {
leaky.Pour(leaky, *msg) // glue for now
//Clear cache on behalf of pour
tmp := time.NewTicker(leaky.Duration)
durationTicker = tmp.C
defer tmp.Stop()
if underflowTicker != nil {
underflowTicker.Stop()
}
underflowTicker = time.NewTicker(leaky.Duration)
durationTicker = underflowTicker.C
defer underflowTicker.Stop()
/*we overflowed*/
case ofw := <-leaky.Out:
leaky.overflow(ofw)