Both read(2) on inotify and kevent(2) return a finite amount of
events. Let the kernel notify us again in cases where we'd
need to retry instead of looping ourselves. This can prevent
missed/delayed notifications while still ensuring fairness in
busy event loops.
package PublicInbox::DirIdle;
use strict;
use parent 'PublicInbox::DS';
package PublicInbox::DirIdle;
use strict;
use parent 'PublicInbox::DS';
-use PublicInbox::Syscall qw(EPOLLIN EPOLLET);
+use PublicInbox::Syscall qw(EPOLLIN);
use PublicInbox::In2Tie;
my ($MAIL_IN, $MAIL_GONE, $ino_cls);
use PublicInbox::In2Tie;
my ($MAIL_IN, $MAIL_GONE, $ino_cls);
if ($ino_cls) {
$inot = $ino_cls->new or die "E: $ino_cls->new: $!";
my $io = PublicInbox::In2Tie::io($inot);
if ($ino_cls) {
$inot = $ino_cls->new or die "E: $ino_cls->new: $!";
my $io = PublicInbox::In2Tie::io($inot);
- $self->SUPER::new($io, EPOLLIN | EPOLLET);
+ $self->SUPER::new($io, EPOLLIN);
} else {
require PublicInbox::FakeInotify;
$inot = PublicInbox::FakeInotify->new; # starts timer
} else {
require PublicInbox::FakeInotify;
$inot = PublicInbox::FakeInotify->new; # starts timer
package PublicInbox::InboxIdle;
use strict;
use parent qw(PublicInbox::DS);
package PublicInbox::InboxIdle;
use strict;
use parent qw(PublicInbox::DS);
-use PublicInbox::Syscall qw(EPOLLIN EPOLLET);
+use PublicInbox::Syscall qw(EPOLLIN);
my $IN_MODIFY = 0x02; # match Linux inotify
my $ino_cls;
if ($^O eq 'linux' && eval { require Linux::Inotify2; 1 }) {
my $IN_MODIFY = 0x02; # match Linux inotify
my $ino_cls;
if ($^O eq 'linux' && eval { require Linux::Inotify2; 1 }) {
if ($ino_cls) {
$inot = $ino_cls->new or die "E: $ino_cls->new: $!";
my $io = PublicInbox::In2Tie::io($inot);
if ($ino_cls) {
$inot = $ino_cls->new or die "E: $ino_cls->new: $!";
my $io = PublicInbox::In2Tie::io($inot);
- $self->SUPER::new($io, EPOLLIN | EPOLLET);
+ $self->SUPER::new($io, EPOLLIN);
} else {
require PublicInbox::FakeInotify;
$inot = PublicInbox::FakeInotify->new;
} else {
require PublicInbox::FakeInotify;
$inot = PublicInbox::FakeInotify->new;