From c3d01539d5ed031c9dd688271f5328812930035a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 12 Mar 2021 17:24:03 +0100 Subject: [PATCH] go.mod: github.com/alexflint/go-filemutex v1.1.0 Signed-off-by: Sebastiaan van Stijn --- go.mod | 2 +- go.sum | 3 ++- .../alexflint/go-filemutex/filemutex.go | 5 +++++ .../alexflint/go-filemutex/filemutex_flock.go | 16 ++++++++++++--- .../go-filemutex/filemutex_windows.go | 20 +++++++++++++++---- .../github.com/alexflint/go-filemutex/go.mod | 5 +++++ .../github.com/alexflint/go-filemutex/go.sum | 11 ++++++++++ vendor/modules.txt | 2 +- 8 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 vendor/github.com/alexflint/go-filemutex/filemutex.go create mode 100644 vendor/github.com/alexflint/go-filemutex/go.mod create mode 100644 vendor/github.com/alexflint/go-filemutex/go.sum diff --git a/go.mod b/go.mod index 2ceb664a..a362a06e 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.14 require ( github.com/Microsoft/hcsshim v0.8.16 - github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae + github.com/alexflint/go-filemutex v1.1.0 github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44 github.com/containernetworking/cni v0.8.1-0.20201216164644-62e54113f44a github.com/coreos/go-iptables v0.5.0 diff --git a/go.sum b/go.sum index a69bbb0f..4439ffc0 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,9 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae h1:AMzIhMUqU3jMrZiTuW0zkYeKlKDAFD+DG20IoO421/Y= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0 h1:IAWuUuRYL2hETx5b8vCgwnD+xSdlsTQY6s2JjBsqLdg= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= diff --git a/vendor/github.com/alexflint/go-filemutex/filemutex.go b/vendor/github.com/alexflint/go-filemutex/filemutex.go new file mode 100644 index 00000000..a995523b --- /dev/null +++ b/vendor/github.com/alexflint/go-filemutex/filemutex.go @@ -0,0 +1,5 @@ +package filemutex + +import "errors" + +var AlreadyLocked = errors.New("lock already acquired") diff --git a/vendor/github.com/alexflint/go-filemutex/filemutex_flock.go b/vendor/github.com/alexflint/go-filemutex/filemutex_flock.go index 2bb77520..e5f77425 100644 --- a/vendor/github.com/alexflint/go-filemutex/filemutex_flock.go +++ b/vendor/github.com/alexflint/go-filemutex/filemutex_flock.go @@ -35,6 +35,18 @@ func (m *FileMutex) Lock() error { return nil } +func (m *FileMutex) TryLock() error { + if err := syscall.Flock(m.fd, syscall.LOCK_EX|syscall.LOCK_NB); err != nil { + if errno, ok := err.(syscall.Errno); ok { + if errno == syscall.EWOULDBLOCK { + return AlreadyLocked + } + } + return err + } + return nil +} + func (m *FileMutex) Unlock() error { if err := syscall.Flock(m.fd, syscall.LOCK_UN); err != nil { return err @@ -56,9 +68,7 @@ func (m *FileMutex) RUnlock() error { return nil } -// Close does an Unlock() combined with closing and unlinking the associated -// lock file. You should create a New() FileMutex for every Lock() attempt if -// using Close(). +// Close unlocks the lock and closes the underlying file descriptor. func (m *FileMutex) Close() error { if err := syscall.Flock(m.fd, syscall.LOCK_UN); err != nil { return err diff --git a/vendor/github.com/alexflint/go-filemutex/filemutex_windows.go b/vendor/github.com/alexflint/go-filemutex/filemutex_windows.go index 28797d26..4691d514 100644 --- a/vendor/github.com/alexflint/go-filemutex/filemutex_windows.go +++ b/vendor/github.com/alexflint/go-filemutex/filemutex_windows.go @@ -16,7 +16,8 @@ var ( ) const ( - lockfileExclusiveLock = 2 + lockfileFailImmediately = 1 + lockfileExclusiveLock = 2 ) func lockFileEx(h syscall.Handle, flags, reserved, locklow, lockhigh uint32, ol *syscall.Overlapped) (err error) { @@ -58,6 +59,19 @@ func New(filename string) (*FileMutex, error) { return &FileMutex{fd: fd}, nil } +func (m *FileMutex) TryLock() error { + var ol syscall.Overlapped + if err := lockFileEx(m.fd, lockfileFailImmediately|lockfileExclusiveLock, 0, 1, 0, &ol); err != nil { + if errno, ok := err.(syscall.Errno); ok { + if errno == syscall.Errno(0x21) { + return AlreadyLocked + } + } + return err + } + return nil +} + func (m *FileMutex) Lock() error { var ol syscall.Overlapped if err := lockFileEx(m.fd, lockfileExclusiveLock, 0, 1, 0, &ol); err != nil { @@ -90,9 +104,7 @@ func (m *FileMutex) RUnlock() error { return nil } -// Close does an Unlock() combined with closing and unlinking the associated -// lock file. You should create a New() FileMutex for every Lock() attempt if -// using Close(). +// Close unlocks the lock and closes the underlying file descriptor. func (m *FileMutex) Close() error { var ol syscall.Overlapped if err := unlockFileEx(m.fd, 0, 1, 0, &ol); err != nil { diff --git a/vendor/github.com/alexflint/go-filemutex/go.mod b/vendor/github.com/alexflint/go-filemutex/go.mod new file mode 100644 index 00000000..bcd061ca --- /dev/null +++ b/vendor/github.com/alexflint/go-filemutex/go.mod @@ -0,0 +1,5 @@ +module github.com/alexflint/go-filemutex + +go 1.13 + +require github.com/stretchr/testify v1.4.0 diff --git a/vendor/github.com/alexflint/go-filemutex/go.sum b/vendor/github.com/alexflint/go-filemutex/go.sum new file mode 100644 index 00000000..8fdee585 --- /dev/null +++ b/vendor/github.com/alexflint/go-filemutex/go.sum @@ -0,0 +1,11 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/modules.txt b/vendor/modules.txt index 16c34417..03a3d2b9 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -29,7 +29,7 @@ github.com/Microsoft/hcsshim/internal/vmcompute github.com/Microsoft/hcsshim/internal/wclayer github.com/Microsoft/hcsshim/internal/winapi github.com/Microsoft/hcsshim/osversion -# github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae +# github.com/alexflint/go-filemutex v1.1.0 ## explicit github.com/alexflint/go-filemutex # github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44