26f897c1ec
release / release-please (push) Failing after 1m49s
docs / build (push) Failing after 6m34s
release / build-and-upload (arm64, linux) (push) Has been cancelled
release / build-and-upload (arm64, windows) (push) Has been cancelled
release / build-darwin (amd64, darwin) (push) Has been cancelled
release / checksums (push) Has been cancelled
release / finalize (push) Has been cancelled
release / build-darwin (arm64, darwin) (push) Has been cancelled
release / build-and-upload (amd64, linux) (push) Has been cancelled
release / build-and-upload (amd64, windows) (push) Has been cancelled
docs / deploy (push) Has been cancelled
22 lines
410 B
Go
22 lines
410 B
Go
package main
|
|
|
|
import "time"
|
|
|
|
func terminateWithFallback(terminate func() error, kill func() error, done <-chan error, grace time.Duration, ignorable func(error) bool) error {
|
|
if err := terminate(); err != nil {
|
|
if !ignorable(err) {
|
|
return err
|
|
}
|
|
} else {
|
|
select {
|
|
case err := <-done:
|
|
return err
|
|
case <-time.After(grace):
|
|
}
|
|
}
|
|
if err := kill(); err != nil {
|
|
return err
|
|
}
|
|
return <-done
|
|
}
|