]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Lock.pm
lock: reduce inotify wakeups
[public-inbox.git] / lib / PublicInbox / Lock.pm
index ca6b33f26ed011bbc43648a1fa84e918b856330b..c0d4d3b35c4a4bbaa5d90c4273eb6cfcc383b6be 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2018 all contributors <meta@public-inbox.org>
+# Copyright (C) 2018-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # Base class for per-inbox locking
@@ -21,9 +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';
+
+       syswrite($lockfh, '.') if $wake;
+
        flock($lockfh, LOCK_UN) or die "unlock failed: $!\n";
        close $lockfh or die "close failed: $!\n";
 }