summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2019-09-20 08:41:42 +0200
committerValentin Rothberg <rothberg@redhat.com>2019-09-20 08:41:42 +0200
commit28a382d8b249fa524366a29459136d1d402da612 (patch)
treedc1482228f9551baa475197d07d95a57917e52ab /plugins
parentdaba1b3df655242353c70c8f77e9a6bb9db432b1 (diff)
split acquiring the lock out of getLock
Split the logic to acquire the disk locks into a separate method `dnsNameLock.acquire() error` to make the API more flexible and less prone to errors. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/meta/dnsname/files.go17
-rw-r--r--plugins/meta/dnsname/main.go9
2 files changed, 19 insertions, 7 deletions
diff --git a/plugins/meta/dnsname/files.go b/plugins/meta/dnsname/files.go
index 70fdfe5..c74bae4 100644
--- a/plugins/meta/dnsname/files.go
+++ b/plugins/meta/dnsname/files.go
@@ -4,13 +4,14 @@ import (
"bufio"
"bytes"
"fmt"
- "github.com/coreos/go-iptables/iptables"
"io/ioutil"
"net"
"os"
"strings"
"text/template"
+ "github.com/coreos/go-iptables/iptables"
+
"github.com/containernetworking/plugins/plugins/ipam/host-local/backend/disk"
"github.com/sirupsen/logrus"
)
@@ -20,7 +21,7 @@ type dnsNameLock struct {
lock *disk.FileLock
}
-// release unlocks and closes the disk lock
+// release unlocks and closes the disk lock.
func (m *dnsNameLock) release() error {
if err := m.lock.Unlock(); err != nil {
return err
@@ -28,16 +29,18 @@ func (m *dnsNameLock) release() error {
return m.lock.Close()
}
-// getLock returns a dnsNameLock. the lock should be that of the configuration
-// directory for the domain.
+// acquire locks the disk lock.
+func (m *dnsNameLock) acquire() error {
+ return m.lock.Lock()
+}
+
+// getLock returns a dnsNameLock synchronizing the configuration directory for
+// the domain.
func getLock(path string) (*dnsNameLock, error) {
l, err := disk.NewFileLock(path)
if err != nil {
return nil, err
}
- if err := l.Lock(); err != nil {
- return nil, err
- }
return &dnsNameLock{l}, nil
}
diff --git a/plugins/meta/dnsname/main.go b/plugins/meta/dnsname/main.go
index 9da7bb0..b84f2da 100644
--- a/plugins/meta/dnsname/main.go
+++ b/plugins/meta/dnsname/main.go
@@ -75,6 +75,9 @@ func cmdAdd(args *skel.CmdArgs) error {
if err != nil {
return err
}
+ if err := lock.acquire(); err != nil {
+ return err
+ }
defer func() {
if err := lock.release(); err != nil {
logrus.Errorf("unable to release lock for '%s': %q", dnsNameConf.AddOnHostsFile, err)
@@ -121,6 +124,9 @@ func cmdDel(args *skel.CmdArgs) error {
if err != nil {
return err
}
+ if err := lock.acquire(); err != nil {
+ return err
+ }
defer func() {
// if the lock isn't given up by another process
if err := lock.release(); err != nil {
@@ -171,6 +177,9 @@ func cmdCheck(args *skel.CmdArgs) error {
if err != nil {
return err
}
+ if err := lock.acquire(); err != nil {
+ return err
+ }
defer func() {
// if the lock isn't given up by another process
if err := lock.release(); err != nil {