Fix race condition
- the gc finalize for an object races with the janitor.Run goroutine - because the janitor.stop channel is created in the Run() goroutine this leads to a data race. - fix by creating the channel when the janitor is created
This commit is contained in:
parent
7ac151875f
commit
0640633ccc
2
cache.go
2
cache.go
|
@ -1074,7 +1074,6 @@ type janitor struct {
|
|||
}
|
||||
|
||||
func (j *janitor) Run(c *cache) {
|
||||
j.stop = make(chan bool)
|
||||
ticker := time.NewTicker(j.Interval)
|
||||
for {
|
||||
select {
|
||||
|
@ -1094,6 +1093,7 @@ func stopJanitor(c *Cache) {
|
|||
func runJanitor(c *cache, ci time.Duration) {
|
||||
j := &janitor{
|
||||
Interval: ci,
|
||||
stop: make(chan bool),
|
||||
}
|
||||
c.janitor = j
|
||||
go j.Run(c)
|
||||
|
|
Loading…
Reference in New Issue