Skip to content

Commit b659e1e

Browse files
authored
feat: use options on retry (unix) (#78)
1 parent 41cd564 commit b659e1e

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

flock.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,12 @@ func tryCtx(ctx context.Context, fn func() (bool, error), retryDelay time.Durati
143143
if ctx.Err() != nil {
144144
return false, ctx.Err()
145145
}
146+
146147
for {
147148
if ok, err := fn(); ok || err != nil {
148149
return ok, err
149150
}
151+
150152
select {
151153
case <-ctx.Done():
152154
return false, ctx.Err()
@@ -175,6 +177,7 @@ func (f *Flock) ensureFhState() {
175177
return
176178
}
177179

178-
f.fh.Close()
180+
_ = f.fh.Close()
181+
179182
f.fh = nil
180183
}

flock_unix.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ func (f *Flock) lock(locked *bool, flag int) error {
7272
}
7373

7474
*locked = true
75+
7576
return nil
7677
}
7778

@@ -100,7 +101,7 @@ func (f *Flock) Unlock() error {
100101
return err
101102
}
102103

103-
f.fh.Close()
104+
_ = f.fh.Close()
104105

105106
f.l = false
106107
f.r = false
@@ -152,10 +153,10 @@ func (f *Flock) try(locked *bool, flag int) (bool, error) {
152153
retry:
153154
err := syscall.Flock(int(f.fh.Fd()), flag|syscall.LOCK_NB)
154155

155-
switch err {
156-
case syscall.EWOULDBLOCK:
156+
switch {
157+
case errors.Is(err, syscall.EWOULDBLOCK):
157158
return false, nil
158-
case nil:
159+
case err == nil:
159160
*locked = true
160161
return true, nil
161162
}
@@ -183,12 +184,12 @@ func (f *Flock) reopenFDOnError(err error) (bool, error) {
183184
}
184185
if st, err := f.fh.Stat(); err == nil {
185186
// if the file is able to be read and written
186-
if st.Mode()&0o600 == 0o600 {
187-
f.fh.Close()
187+
if st.Mode()&f.perm == f.perm {
188+
_ = f.fh.Close()
188189
f.fh = nil
189190

190-
// reopen in read-write mode and set the filehandle
191-
fh, err := os.OpenFile(f.path, os.O_CREATE|os.O_RDWR, os.FileMode(0o600))
191+
// reopen in read-write mode and set the file handle
192+
fh, err := os.OpenFile(f.path, f.flag, f.perm)
192193
if err != nil {
193194
return false, err
194195
}

flock_unix_variants.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,14 @@ func (f *Flock) try(locked *bool, flag lockType) (bool, error) {
257257
defer f.ensureFhState()
258258
}
259259

260-
haslock, err := f.doLock(tryLock, flag, false)
260+
hasLock, err := f.doLock(tryLock, flag, false)
261261
if err != nil {
262262
return false, err
263263
}
264264

265-
*locked = haslock
266-
return haslock, nil
265+
*locked = hasLock
266+
267+
return hasLock, nil
267268
}
268269

269270
// setlkw calls FcntlFlock with cmd for the entire file indicated by fd.

flock_windows.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func (f *Flock) Unlock() error {
8181
return errNo
8282
}
8383

84-
f.fh.Close()
84+
_ = f.fh.Close()
8585

8686
f.l = false
8787
f.r = false

0 commit comments

Comments
 (0)