diff options
Diffstat (limited to 'lib/PublicInbox/Lock.pm')
-rw-r--r-- | lib/PublicInbox/Lock.pm | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/PublicInbox/Lock.pm b/lib/PublicInbox/Lock.pm index 693a3794..c0d4d3b3 100644 --- a/lib/PublicInbox/Lock.pm +++ b/lib/PublicInbox/Lock.pm @@ -21,16 +21,12 @@ sub lock_acquire { } sub lock_release { - my ($self) = @_; + my ($self, $wake) = @_; return unless $self->{lock_path}; my $lockfh = delete $self->{lockfh} or croak 'not locked'; - # NetBSD 8.1 and OpenBSD 6.5 (and maybe other versions/*BSDs) lack - # NOTE_CLOSE_WRITE from FreeBSD 11+, so trigger NOTE_WRITE, instead. - # We also need to change the ctime on Linux systems w/o inotify - if ($^O ne 'linux' || !eval { require Linux::Inotify2; 1 }) { - syswrite($lockfh, '.'); - } + syswrite($lockfh, '.') if $wake; + flock($lockfh, LOCK_UN) or die "unlock failed: $!\n"; close $lockfh or die "close failed: $!\n"; } |