From: Eric Wong Date: Tue, 29 Apr 2025 17:16:44 +0000 (+0000) Subject: treewide: remove unnecessary Sigfd use and requires X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e248682cc7dd1e65aaafec278ed059f2f8e68eb5;p=thirdparty%2Fpublic-inbox.git treewide: remove unnecessary Sigfd use and requires signalfd is an implementation detail and its use may be replaced in future changes. --- diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm index 7cf600c1f..748743fe7 100644 --- a/lib/PublicInbox/ExtSearchIdx.pm +++ b/lib/PublicInbox/ExtSearchIdx.pm @@ -1358,7 +1358,6 @@ sub eidx_watch { # public-inbox-extindex --watch main loop require PublicInbox::InboxIdle; require PublicInbox::DS; require PublicInbox::Syscall; - require PublicInbox::Sigfd; my $idler = PublicInbox::InboxIdle->new($self->{cfg}); if (!$self->{cfg}) { $idler->watch_inbox($_) for (@{ibx_sorted($self, 'active')}); diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index ec54e2f1c..80032272c 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -32,6 +32,7 @@ BEGIN { tcp_host_port test_lei lei lei_ok $lei_out $lei_err $lei_opt test_httpd no_httpd_errors xbail require_cmd is_xdeeply tail_f ignore_inline_c_missing no_pollerfd no_coredump cfg_new + require_fast_reliable_signals strace strace_inject lsof_pid oct_is $find_xh_pid); require Test::More; my @methods = grep(!/\W/, @Test::More::EXPORT); @@ -61,6 +62,18 @@ sub check_broken_tmpfs () { 1; } +sub require_fast_reliable_signals (;$) { + state $ok = do { + require PublicInbox::Sigfd; + my $s = PublicInbox::Sigfd->new({}) ? 1 : $ENV{TEST_UNRELIABLE}; + PublicInbox::DS->Reset; + $s; + }; + return $ok if $ok || defined(wantarray); + my $m = "fast, reliable signals not available(\$^O=$^O)"; + @_ ? skip($m, 1) : plan(skip_all => $m); +} + sub require_bsd (;$) { state $ok = ($^O =~ m!\A(?:free|net|open)bsd\z! || $^O eq 'dragonfly'); diff --git a/t/httpd-unix.t b/t/httpd-unix.t index d4d50528e..7f992f7fc 100644 --- a/t/httpd-unix.t +++ b/t/httpd-unix.t @@ -11,7 +11,6 @@ use autodie qw(close); require_mods qw(-httpd); use IO::Socket::UNIX; use POSIX qw(mkfifo); -require PublicInbox::Sigfd; my ($tmpdir, $for_destroy) = tmpdir(); my $unix = "$tmpdir/unix.sock"; my $psgi = './t/httpd-corner.psgi'; @@ -97,11 +96,6 @@ check_sock($unix); ok(-S $unix, 'unix socket still exists'); } -# portable Perl can delay or miss signal dispatches due to races, -# so disable some tests on systems lacking signalfd(2) or EVFILT_SIGNAL -my $has_sigfd = PublicInbox::Sigfd->new({}) ? 1 : $ENV{TEST_UNRELIABLE}; -PublicInbox::DS::Reset() if $has_sigfd; - sub delay_until { my ($cond, $msg) = @_; my $end = time + 30; @@ -114,7 +108,7 @@ sub delay_until { SKIP: { require_mods('Net::Server::Daemonize', 52); - $has_sigfd or skip('signalfd / EVFILT_SIGNAL not available', 52); + require_fast_reliable_signals 1; my $pid_file = "$tmpdir/pid"; my $read_pid = sub { my $f = shift; diff --git a/t/spawn.t b/t/spawn.t index 36f4ed2e5..dd30bf457 100644 --- a/t/spawn.t +++ b/t/spawn.t @@ -4,7 +4,6 @@ use v5.12; use Test::More; use PublicInbox::Spawn qw(which spawn popen_rd run_qx); -require PublicInbox::Sigfd; require PublicInbox::DS; use PublicInbox::OnDestroy; my $rlimit_map = PublicInbox::Spawn->can('rlimit_map'); diff --git a/xt/git-http-backend-parallel.t b/xt/git-http-backend-parallel.t index 70b5d0eae..2d957b65c 100644 --- a/xt/git-http-backend-parallel.t +++ b/xt/git-http-backend-parallel.t @@ -10,7 +10,6 @@ use File::Path qw(remove_tree); use PublicInbox::IO qw(write_file try_cat); use PublicInbox::Spawn qw(spawn); use PublicInbox::Git qw(git_exe); -require PublicInbox::Sigfd; my $git_dir = $ENV{GIANT_GIT_DIR} // plan 'skip_all' => 'GIANT_GIT_DIR not defined'; require_mods qw(-httpd psgi); @@ -55,13 +54,10 @@ my $run_clones = sub { \%chld_status; }; -my $sigfd = PublicInbox::Sigfd->new; my $reload_cfg = sub { write_file '>>', $henv->{PI_CONFIG}, @_; kill 'HUP', $PublicInbox::TestCommon::CURRENT_DAEMON->{pid}; - # signalfd/EVFILT_SIGNAL platforms should handle signals more - # predictably and not need tick - tick(1) unless $sigfd; + tick(1) unless require_fast_reliable_signals; }; my $ck_503 = sub {