summaryrefslogtreecommitdiff
path: root/libpod/boltdb_state.go
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-07-30 09:42:35 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-07-31 14:19:50 +0000
commit1db70cce344724e091635bc8c6fa6c207450df68 (patch)
treeed48df83141568bb949a8bdd5611cd20b3fa42c2 /libpod/boltdb_state.go
parentcfcd92847684fc65949350b7cdc4769ad1099d46 (diff)
downloadpodman-1db70cce344724e091635bc8c6fa6c207450df68.tar.gz
podman-1db70cce344724e091635bc8c6fa6c207450df68.tar.bz2
podman-1db70cce344724e091635bc8c6fa6c207450df68.zip
Do not fetch pod and ctr State on retrieval in Bolt
It's not necessary to fill in state immediately, as we'll be overwriting it on any API call accessing it thanks to syncContainer(). It is also causing races when we fetch it without holding the container lock (which syncContainer() does). As such, just don't retrieve the state on initial pull from the database with Bolt. Also, refactor some Linux-specific netns handling functions out of container_internal_linux.go into boltdb_linux.go. Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #1186 Approved by: rhatdan
Diffstat (limited to 'libpod/boltdb_state.go')
-rw-r--r--libpod/boltdb_state.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/libpod/boltdb_state.go b/libpod/boltdb_state.go
index 49bdaea39..de6174c10 100644
--- a/libpod/boltdb_state.go
+++ b/libpod/boltdb_state.go
@@ -528,8 +528,10 @@ func (s *BoltState) UpdateContainer(ctr *Container) error {
return err
}
- // Do we need to replace the container's netns?
- ctr.setNamespace(netNSPath, newState)
+ // Handle network namespace
+ if err := replaceNetNS(netNSPath, ctr, newState); err != nil {
+ return err
+ }
// New state compiled successfully, swap it into the current state
ctr.state = newState
@@ -555,7 +557,7 @@ func (s *BoltState) SaveContainer(ctr *Container) error {
if err != nil {
return errors.Wrapf(err, "error marshalling container %s state to JSON", ctr.ID())
}
- netNSPath := ctr.setNamespaceStatePath()
+ netNSPath := getNetNSPath(ctr)
ctrID := []byte(ctr.ID())