mirror of
https://github.com/coredns/coredns.git
synced 2025-11-03 10:43:20 -05:00
Use cancelable contexts for cloud provider plugin refreshes (#4226)
This commit uses a cancelable context to spawn goroutines that refresh records from a cloud DNS provider. The Caddy shutdown routine uses the returned cancel function to terminate existing goroutines when a USR1 reload signal is received. Signed-off-by: Matt Kulka <mkulka@parchment.com>
This commit is contained in:
@@ -85,11 +85,11 @@ func (h *CloudDNS) Run(ctx context.Context) error {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
log.Infof("Breaking out of CloudDNS update loop: %v", ctx.Err())
|
||||
log.Debugf("Breaking out of CloudDNS update loop for %v: %v", h.zoneNames, ctx.Err())
|
||||
return
|
||||
case <-time.After(1 * time.Minute):
|
||||
if err := h.updateZones(ctx); err != nil && ctx.Err() == nil /* Don't log error if ctx expired. */ {
|
||||
log.Errorf("Failed to update zones: %v", err)
|
||||
log.Errorf("Failed to update zones %v: %v", h.zoneNames, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ func setup(c *caddy.Controller) error {
|
||||
}
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
client, err := f(ctx, opt)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -98,7 +98,7 @@ func setup(c *caddy.Controller) error {
|
||||
h.Next = next
|
||||
return h
|
||||
})
|
||||
c.OnShutdown(func() error { ctx.Done(); return nil })
|
||||
c.OnShutdown(func() error { cancel(); return nil })
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user