diff options
author | Adrian Reber <areber@redhat.com> | 2019-08-06 15:28:10 +0000 |
---|---|---|
committer | Adrian Reber <areber@redhat.com> | 2019-08-09 19:26:56 +0200 |
commit | a891b845285105615c61d749fb61ca2650ba509b (patch) | |
tree | dc5a17ab917b1a52b3216ff7a2ec237a67efe527 | |
parent | dc3816819d24921dfe8204e79d383c9ecea46612 (diff) | |
download | podman-a891b845285105615c61d749fb61ca2650ba509b.tar.gz podman-a891b845285105615c61d749fb61ca2650ba509b.tar.bz2 podman-a891b845285105615c61d749fb61ca2650ba509b.zip |
Fix up ConmonPidFile after restore
After restoring a container with a different name (ID) the ConmonPidFile
was still pointing to the path of the original container.
This means that the last restored container will overwrite the
ConmonPidFile of the original container. It was also not possible to
restore a container with a new name (ID) if the original container was
not running.
The ConmonPidFile is only changed if the ConmonPidFile starts with the
value of RunRoot. This assumes that if RunRoot is part of ConmonPidFile
the user did not specify --conmon-pidfile' during run or create.
Signed-off-by: Adrian Reber <areber@redhat.com>
-rw-r--r-- | libpod/runtime_ctr.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go index 61a871b28..92b2faefb 100644 --- a/libpod/runtime_ctr.go +++ b/libpod/runtime_ctr.go @@ -54,6 +54,14 @@ func (r *Runtime) RestoreContainer(ctx context.Context, rSpec *spec.Spec, config } // For an imported checkpoint no one has ever set the StartedTime. Set it now. ctr.state.StartedTime = time.Now() + + // If the path to ConmonPidFile starts with the default value (RunRoot), then + // the user has not specified '--conmon-pidfile' during run or create (probably). + // In that case reset ConmonPidFile to be set to the default value later. + if strings.HasPrefix(ctr.config.ConmonPidFile, r.config.StorageConfig.RunRoot) { + ctr.config.ConmonPidFile = "" + } + return r.setupContainer(ctx, ctr) } |