summaryrefslogtreecommitdiff
path: root/libpod/network/lock.go
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2021-01-20 22:56:13 +0100
committerPaul Holzinger <paul.holzinger@web.de>2021-01-21 11:50:45 +0100
commit836fa4c493c3809da4bbcbbec0bf5ceb954e7410 (patch)
treea07df59ab8a8ca5ef913c69c977662d0cbb441aa /libpod/network/lock.go
parentc1cd512cb824c4c470efe7660c91ffeda62327bc (diff)
downloadpodman-836fa4c493c3809da4bbcbbec0bf5ceb954e7410.tar.gz
podman-836fa4c493c3809da4bbcbbec0bf5ceb954e7410.tar.bz2
podman-836fa4c493c3809da4bbcbbec0bf5ceb954e7410.zip
Move the cni lock file into the cni config dir
Commit(fe3faa517e1b) introduced a lock file for network create/rm calls. There is a problem with the location of the lock file. The lock file was stored in the tmpdir. Running multiple podman network create/remove commands in parallel with different tmpdirs made the lockfile inaccessible to the other process, and so parallel read/write operations to the cni config directory continued to occur. This scenario happened frequently during the e2e tests and caused some flakes. Fixes #9041 Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
Diffstat (limited to 'libpod/network/lock.go')
-rw-r--r--libpod/network/lock.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/libpod/network/lock.go b/libpod/network/lock.go
index 0395359eb..037f41efa 100644
--- a/libpod/network/lock.go
+++ b/libpod/network/lock.go
@@ -1,6 +1,10 @@
package network
import (
+ "os"
+ "path/filepath"
+
+ "github.com/containers/common/pkg/config"
"github.com/containers/storage"
)
@@ -8,8 +12,13 @@ import (
// delete cases to avoid unwanted collisions in network names.
// TODO this uses a file lock and should be converted to shared memory
// when we have a more general shared memory lock in libpod
-func acquireCNILock(lockPath string) (*CNILock, error) {
- l, err := storage.GetLockfile(lockPath)
+func acquireCNILock(config *config.Config) (*CNILock, error) {
+ cniDir := GetCNIConfDir(config)
+ err := os.MkdirAll(cniDir, 0755)
+ if err != nil {
+ return nil, err
+ }
+ l, err := storage.GetLockfile(filepath.Join(cniDir, LockFileName))
if err != nil {
return nil, err
}