mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Modified error message for clarity.
Previously, error message only showed "<nil>" when child and pid were the same (since no error is returned by the Wait4 syscall in this case) which occurs when the process has incorrectly terminated. A new error message was added to improve clarity for such a case. Tests for this function were modified to reflect the improved distinction between process termination and error. PiperOrigin-RevId: 204018107 Change-Id: Ib38481c9590405e5bafcb6efe27fd49b3948910c
This commit is contained in:
committed by
Shentubot
parent
06920b3d1b
commit
b763b3992a
@@ -324,9 +324,14 @@ func WaitForReady(pid int, timeout time.Duration, ready func() (bool, error)) er
|
||||
// Check if the process is still running.
|
||||
var ws syscall.WaitStatus
|
||||
var ru syscall.Rusage
|
||||
|
||||
// If the process is alive, child is 0 because of the NOHANG option.
|
||||
// If the process has terminated, child equals the process id.
|
||||
child, err := syscall.Wait4(pid, &ws, syscall.WNOHANG, &ru)
|
||||
if err != nil || child == pid {
|
||||
return fmt.Errorf("process (%d) is not running, err: %v", pid, err)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error waiting for process: %v", err)
|
||||
} else if child == pid {
|
||||
return fmt.Errorf("process %d has terminated", pid)
|
||||
}
|
||||
|
||||
// Process continues to run, backoff and retry.
|
||||
|
||||
@@ -76,8 +76,11 @@ func TestWaitForReadyNotRunning(t *testing.T) {
|
||||
err := WaitForReady(cmd.Process.Pid, 5*time.Second, func() (bool, error) {
|
||||
return false, nil
|
||||
})
|
||||
if !strings.Contains(err.Error(), "not running") {
|
||||
t.Errorf("ProcessWaitReady got: %v, expected: not running", err)
|
||||
if err != nil && !strings.Contains(err.Error(), "terminated") {
|
||||
t.Errorf("ProcessWaitReady got: %v, expected: process terminated", err)
|
||||
}
|
||||
if err == nil {
|
||||
t.Errorf("ProcessWaitReady incorrectly succeeded")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user