mirror of
https://github.com/coredns/coredns.git
synced 2025-11-24 04:34:01 -05:00
fix: fix reload causing secondary plugin goroutine to leak. (#7694)
Signed-off-by: wenxuan70 <t736660416@gmail.com>
This commit is contained in:
@@ -27,6 +27,9 @@ func setup(c *caddy.Controller) error {
|
||||
n := zones.Names[i]
|
||||
z := zones.Z[n]
|
||||
if len(z.TransferFrom) > 0 {
|
||||
// In order to support secondary plugin reloading.
|
||||
updateShutdown := make(chan bool)
|
||||
|
||||
c.OnStartup(func() error {
|
||||
z.StartupOnce.Do(func() {
|
||||
go func() {
|
||||
@@ -43,12 +46,21 @@ func setup(c *caddy.Controller) error {
|
||||
if dur > max {
|
||||
dur = max
|
||||
}
|
||||
select {
|
||||
case <-updateShutdown:
|
||||
return
|
||||
default:
|
||||
}
|
||||
}
|
||||
z.Update()
|
||||
z.Update(updateShutdown)
|
||||
}()
|
||||
})
|
||||
return nil
|
||||
})
|
||||
c.OnShutdown(func() error {
|
||||
updateShutdown <- true
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user