diff --git a/internal/adapters/subprocess/process_tree.go b/internal/adapters/subprocess/process_tree.go index 4f7ad37..cd273b5 100644 --- a/internal/adapters/subprocess/process_tree.go +++ b/internal/adapters/subprocess/process_tree.go @@ -1,9 +1,7 @@ package subprocess import ( - "context" "errors" - "fmt" "os/exec" "time" ) @@ -22,39 +20,6 @@ type ownedProcessTree interface { Dispose() error } -func waitForOwnedCommand(ctx context.Context, tree ownedProcessTree, waitCh <-chan error, captureLimits <-chan *captureLimitError) (waitErr, ctxErr error, captureLimit *captureLimitError, cleanupErr error) { - select { - case waitErr = <-waitCh: - return waitErr, nil, nil, nil - case <-ctx.Done(): - ctxErr = ctx.Err() - case captureLimit = <-captureLimits: - } - - cleanupErr = tree.TerminateGracefully() - gracefulTimer := time.NewTimer(gracefulTerminationWait) - defer gracefulTimer.Stop() - - select { - case waitErr = <-waitCh: - // The leader may exit before descendants finish graceful shutdown. - cleanupErr = joinErrors(cleanupErr, tree.TerminateForcefully()) - return waitErr, ctxErr, captureLimit, cleanupErr - case <-gracefulTimer.C: - } - - cleanupErr = joinErrors(cleanupErr, tree.TerminateForcefully()) - forcefulTimer := time.NewTimer(forcefulTerminationWait) - defer forcefulTimer.Stop() - - select { - case waitErr = <-waitCh: - return waitErr, ctxErr, captureLimit, cleanupErr - case <-forcefulTimer.C: - return nil, ctxErr, captureLimit, joinErrors(cleanupErr, fmt.Errorf("owned subprocess did not reap within %s after forceful termination", forcefulTerminationWait)) - } -} - func joinErrors(errs ...error) error { filtered := make([]error, 0, len(errs)) for _, err := range errs {