]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Lock.pm
inboxidle: new class to detect inbox changes
[public-inbox.git] / lib / PublicInbox / Lock.pm
index 032841ed5cf500ec05f635874e350c1687971f34..693a37949a651f7935df09d6c58a785dc2322140 100644 (file)
@@ -24,6 +24,13 @@ sub lock_release {
        my ($self) = @_;
        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, '.');
+       }
        flock($lockfh, LOCK_UN) or die "unlock failed: $!\n";
        close $lockfh or die "close failed: $!\n";
 }