about summary refs log tree commit homepage
path: root/lib/PublicInbox/Lock.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-06-24 18:45:07 +0000
committerEric Wong <e@yhbt.net>2020-06-25 05:37:45 +0000
commitf977826a17f8735e6947dd2da380df8c6d0b38d8 (patch)
treea3879cdbfd7ba1ac32008173d163d8f5f4163fbb /lib/PublicInbox/Lock.pm
parent7601f7d864d74dae58ee248e426527fb2ebe74a5 (diff)
downloadpublic-inbox-f977826a17f8735e6947dd2da380df8c6d0b38d8.tar.gz
We can reduce the amount of platform-specific code by always
relying on IN_MODIFY/NOTE_WRITE notifications from lock release.
This reduces the number of times our read-only daemons will
need to wake up when -watch sees no-op message changes
(e.g. replied, seen, recent flag changes).
Diffstat (limited to 'lib/PublicInbox/Lock.pm')
-rw-r--r--lib/PublicInbox/Lock.pm10
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";
 }