refactor(kubelet): use errors.Is(err, os.ErrProcessDone)

use errors.Is(err, os.ErrProcessDone) here and remove "process already finished" string comparison.

Signed-off-by: cndoit18 <cndoit18@outlook.com>
This commit is contained in:
cndoit18 2021-12-29 18:09:14 +08:00
parent f5be5052e3
commit 601d02b90f
No known key found for this signature in database
GPG Key ID: A5E54CE7AC730381

View File

@ -17,6 +17,7 @@ limitations under the License.
package cm
import (
"errors"
"fmt"
"io/ioutil"
"os"
@ -127,10 +128,7 @@ func (m *podContainerManagerImpl) killOnePid(pid int) error {
p, _ := os.FindProcess(pid)
if err := p.Kill(); err != nil {
// If the process already exited, that's fine.
if strings.Contains(err.Error(), "process already finished") {
// Hate parsing strings, but
// vendor/github.com/opencontainers/runc/libcontainer/
// also does this.
if errors.Is(err, os.ErrProcessDone) {
klog.V(3).InfoS("Process no longer exists", "pid", pid)
return nil
}