diff options
author | Matthew Heon <matthew.heon@gmail.com> | 2018-07-31 09:26:06 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-31 14:19:50 +0000 |
commit | 1a439f9fcbbc6a2b509c1ca7e23207a07a652399 (patch) | |
tree | 5f02ab163d1cd99316cc29ca9cb5005c3bbcbce3 /libpod | |
parent | 21f50b9f34298b456fe5e8d423e849999236828c (diff) | |
download | podman-1a439f9fcbbc6a2b509c1ca7e23207a07a652399.tar.gz podman-1a439f9fcbbc6a2b509c1ca7e23207a07a652399.tar.bz2 podman-1a439f9fcbbc6a2b509c1ca7e23207a07a652399.zip |
Ensure container and pod refresh picks up a State
refresh() is the only major command we had that did not perform a
sync before running, and thus was not guaranteed to pick up a
good copy of the state. Fix this by updating the state before a
refresh().
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Closes: #1186
Approved by: rhatdan
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_internal.go | 6 | ||||
-rw-r--r-- | libpod/pod.go | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/libpod/container_internal.go b/libpod/container_internal.go index 2f258d007..66d1e44ad 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -329,6 +329,12 @@ func resetState(state *containerState) error { // Refresh refreshes the container's state after a restart func (c *Container) refresh() error { + // Don't need a full sync, but we do need to update from the database to + // pick up potentially-missing container state + if err := c.runtime.state.UpdateContainer(c); err != nil { + return err + } + if !c.valid { return errors.Wrapf(ErrCtrRemoved, "container %s is not valid - may have been removed", c.ID()) } diff --git a/libpod/pod.go b/libpod/pod.go index 9ea1f058b..2ad4f7d0e 100644 --- a/libpod/pod.go +++ b/libpod/pod.go @@ -154,6 +154,11 @@ func (p *Pod) save() error { // Refresh a pod's state after restart func (p *Pod) refresh() error { + // Need to to an update from the DB to pull potentially-missing state + if err := p.runtime.state.UpdatePod(p); err != nil { + return err + } + if !p.valid { return ErrPodRemoved } |