checkpoint do not modify XDG_RUNTIME_DIR
We should not modify the XDG_RUNTIME_DIR env value during runtime of libpod, this can cause hard to find bugs. Only set it for the OCI runtime, this matches the other commands such as start, stop, kill... [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
parent
93138541f3
commit
bc3c5be2fb
|
|
@ -816,35 +816,26 @@ func (r *ConmonOCIRuntime) CheckpointContainer(ctr *Container, options Container
|
|||
filepath.Join("..", preCheckpointDir),
|
||||
)
|
||||
}
|
||||
|
||||
args = append(args, ctr.ID())
|
||||
logrus.Debugf("the args to checkpoint: %s %s", r.path, strings.Join(args, " "))
|
||||
|
||||
runtimeDir, err := util.GetRuntimeDir()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
args = append(args, ctr.ID())
|
||||
logrus.Debugf("the args to checkpoint: %s %s", r.path, strings.Join(args, " "))
|
||||
|
||||
oldRuntimeDir, oldRuntimeDirSet := os.LookupEnv("XDG_RUNTIME_DIR")
|
||||
if err = os.Setenv("XDG_RUNTIME_DIR", runtimeDir); err != nil {
|
||||
return 0, errors.Wrapf(err, "cannot set XDG_RUNTIME_DIR")
|
||||
env := []string{fmt.Sprintf("XDG_RUNTIME_DIR=%s", runtimeDir)}
|
||||
if path, ok := os.LookupEnv("PATH"); ok {
|
||||
env = append(env, fmt.Sprintf("PATH=%s", path))
|
||||
}
|
||||
|
||||
runtime.LockOSThread()
|
||||
if err := label.SetSocketLabel(ctr.ProcessLabel()); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
defer func() {
|
||||
if oldRuntimeDirSet {
|
||||
if err := os.Setenv("XDG_RUNTIME_DIR", oldRuntimeDir); err != nil {
|
||||
logrus.Warnf("cannot resset XDG_RUNTIME_DIR: %v", err)
|
||||
}
|
||||
} else {
|
||||
if err := os.Unsetenv("XDG_RUNTIME_DIR"); err != nil {
|
||||
logrus.Warnf("cannot unset XDG_RUNTIME_DIR: %v", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
runtimeCheckpointStarted := time.Now()
|
||||
err = utils.ExecCmdWithStdStreams(os.Stdin, os.Stdout, os.Stderr, nil, r.path, args...)
|
||||
err = utils.ExecCmdWithStdStreams(os.Stdin, os.Stdout, os.Stderr, env, r.path, args...)
|
||||
// Ignore error returned from SetSocketLabel("") call,
|
||||
// can't recover.
|
||||
if labelErr := label.SetSocketLabel(""); labelErr == nil {
|
||||
|
|
|
|||
|
|
@ -43,9 +43,7 @@ func ExecCmdWithStdStreams(stdin io.Reader, stdout, stderr io.Writer, env []stri
|
|||
cmd.Stdin = stdin
|
||||
cmd.Stdout = stdout
|
||||
cmd.Stderr = stderr
|
||||
if env != nil {
|
||||
cmd.Env = env
|
||||
}
|
||||
cmd.Env = env
|
||||
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in New Issue