fix: continue cleanup after shutdown deadline
This commit is contained in:
@@ -47,7 +47,20 @@ func shutdownAll(ctx context.Context, cancelRoot context.CancelFunc, steps ...sh
|
||||
defer cancelRoot()
|
||||
var shutdownErr error
|
||||
for _, step := range steps {
|
||||
if err := step.run(ctx); err != nil {
|
||||
done := make(chan error, 1)
|
||||
started := make(chan struct{})
|
||||
go func() {
|
||||
close(started)
|
||||
done <- step.run(ctx)
|
||||
}()
|
||||
<-started
|
||||
var err error
|
||||
select {
|
||||
case err = <-done:
|
||||
case <-ctx.Done():
|
||||
err = ctx.Err()
|
||||
}
|
||||
if err != nil {
|
||||
log.Printf("[main] %s shutdown: %v", step.name, err)
|
||||
shutdownErr = errors.Join(shutdownErr, fmt.Errorf("%s shutdown: %w", step.name, err))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user