mirror of
https://github.com/outbackdingo/certificates.git
synced 2026-01-27 10:18:34 +00:00
Use errgroup to shutdown services concurrently. (#2343)
This commit is contained in:
27
ca/ca.go
27
ca/ca.go
@@ -499,25 +499,28 @@ func (ca *CA) Stop() error {
|
||||
log.Printf("error stopping ca.Authority: %+v\n", err)
|
||||
}
|
||||
|
||||
var insecureShutdownErr error
|
||||
// Concurrently shutdown services
|
||||
var eg errgroup.Group
|
||||
if ca.insecureSrv != nil {
|
||||
insecureShutdownErr = ca.insecureSrv.Shutdown()
|
||||
eg.Go(func() error {
|
||||
return ca.insecureSrv.Shutdown()
|
||||
})
|
||||
}
|
||||
|
||||
var metricsShutdownErr error
|
||||
if ca.metricsSrv != nil {
|
||||
metricsShutdownErr = ca.metricsSrv.Shutdown()
|
||||
eg.Go(func() error {
|
||||
return ca.metricsSrv.Shutdown()
|
||||
})
|
||||
}
|
||||
|
||||
secureErr := ca.srv.Shutdown()
|
||||
switch {
|
||||
case insecureShutdownErr != nil:
|
||||
return insecureShutdownErr
|
||||
case metricsShutdownErr != nil:
|
||||
return metricsShutdownErr
|
||||
default:
|
||||
return secureErr
|
||||
if ca.srv != nil {
|
||||
eg.Go(func() error {
|
||||
return ca.srv.Shutdown()
|
||||
})
|
||||
}
|
||||
|
||||
// Return first error
|
||||
return eg.Wait()
|
||||
}
|
||||
|
||||
// Reload reloads the configuration of the CA and calls to the server Reload
|
||||
|
||||
Reference in New Issue
Block a user