Skip to content

Commit

Permalink
Merge pull request #7965 from mook-as/rdctl/linux-no-process-group
Browse files Browse the repository at this point in the history
rdctl: Don't use process groups on Linux
  • Loading branch information
Nino-K authored Dec 18, 2024
2 parents ddf24aa + ea31ee9 commit 4079bff
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
7 changes: 7 additions & 0 deletions src/go/rdctl/cmd/internalProcessWaitKill.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ package cmd

import (
"fmt"
"runtime"

"github.com/rancher-sandbox/rancher-desktop/src/go/rdctl/pkg/process"
"github.com/spf13/cobra"
Expand All @@ -39,6 +40,12 @@ exit, and once it does, terminates all processes within the same process group.`
if err != nil {
return fmt.Errorf("failed to get process ID: %w", err)
}
if runtime.GOOS == "linux" {
// TODO: We can't use the process group on Linux, because Electron does
// not always create a new one. But for now still wait for the
// process to exit
return process.WaitForProcess(pid)
}
return process.KillProcessGroup(pid, true)
},
}
Expand Down
26 changes: 15 additions & 11 deletions src/go/rdctl/pkg/shutdown/shutdown.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,17 +237,21 @@ func terminateRancherDesktopFunc(appDir string) func(context.Context) error {
return func(ctx context.Context) error {
var errors *multierror.Error

errors = multierror.Append(errors, (func() error {
mainExe, err := p.GetMainExecutable(ctx)
if err != nil {
return err
}
pid, err := process.FindPidOfProcess(mainExe)
if err != nil {
return err
}
return process.KillProcessGroup(pid, false)
})())
// TODO: We can't use the process group on Linux, because Electron does
// not always create a new one.
if runtime.GOOS != "linux" {
errors = multierror.Append(errors, (func() error {
mainExe, err := p.GetMainExecutable(ctx)
if err != nil {
return err
}
pid, err := process.FindPidOfProcess(mainExe)
if err != nil {
return err
}
return process.KillProcessGroup(pid, false)
})())
}

errors = multierror.Append(errors, process.TerminateProcessInDirectory(appDir, true))

Expand Down

0 comments on commit 4079bff

Please sign in to comment.