fix: continue cleanup after shutdown deadline

This commit is contained in:
MiMoCode
2026-07-10 19:01:29 +08:00
parent bb16990a91
commit 01df0e8eb4
2 changed files with 56 additions and 1 deletions
+14 -1
View File
@@ -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))
}