From 4b25039cf4d9f38bbe7e8ed4a2fb3d87cf87e53e Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Thu, 12 Apr 2018 12:18:02 -0400 Subject: Fix locking interaction in batched Exec() on container Signed-off-by: Matthew Heon Closes: #610 Approved by: giuseppe --- libpod/container_api.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libpod') diff --git a/libpod/container_api.go b/libpod/container_api.go index 5ebb7b091..bfe20b184 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -376,14 +376,18 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user string) e logrus.Debugf("Successfully started exec session %s in container %s", sessionID, c.ID()) // Unlock so other processes can use the container - c.lock.Unlock() - locked = false + if !c.locked { + c.lock.Unlock() + locked = false + } waitErr := execCmd.Wait() // Lock again - locked = true - c.lock.Lock() + if !c.locked { + locked = true + c.lock.Lock() + } // Sync the container again to pick up changes in state if err := c.syncContainer(); err != nil { -- cgit v1.2.3-54-g00ecf