summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@pm.me>2020-11-11 15:57:06 -0500
committerMatthew Heon <matthew.heon@pm.me>2020-11-11 16:06:03 -0500
commit0f637e09da85b2aaefa279cfb571b004a2cc6d59 (patch)
treeb9fcdd548ba1b0064c204fb49d450ac069a776aa /test
parentdc58d4e2858bf6688a775277adf8f775afc30e73 (diff)
downloadpodman-0f637e09da85b2aaefa279cfb571b004a2cc6d59.tar.gz
podman-0f637e09da85b2aaefa279cfb571b004a2cc6d59.tar.bz2
podman-0f637e09da85b2aaefa279cfb571b004a2cc6d59.zip
Ensure we do not double-lock the same volume in create
When making containers, we want to lock all named volumes we are adding the container to, to ensure they aren't removed from under us while we are working. Unfortunately, this code did not account for a container having the same volume mounted in multiple places so it could deadlock. Add a map to ensure that we don't lock the same name more than once to resolve this. Fixes #8221 Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'test')
-rw-r--r--test/e2e/run_volume_test.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/e2e/run_volume_test.go b/test/e2e/run_volume_test.go
index 1c8a67123..7c74cea78 100644
--- a/test/e2e/run_volume_test.go
+++ b/test/e2e/run_volume_test.go
@@ -540,4 +540,12 @@ VOLUME /test/`
session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:%s:O", mountPath, mountDest), "--mount", fmt.Sprintf("type=tmpfs,target=%s", mountDest), ALPINE})
Expect(session.ExitCode()).To(Not(Equal(0)))
})
+
+ It("same volume in multiple places does not deadlock", func() {
+ volName := "testVol1"
+ session := podmanTest.Podman([]string{"run", "-t", "-i", "-v", fmt.Sprintf("%s:/test1", volName), "-v", fmt.Sprintf("%s:/test2", volName), "--rm", ALPINE, "sh", "-c", "mount | grep /test"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(len(session.OutputToStringArray())).To(Equal(2))
+ })
})