From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 85DFA1F43D for ; Tue, 28 Mar 2023 02:59:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1679972346; bh=Sac7wz5/Cgyh6wtmm1dZyzTWEq0dWsNui7XNiX85S4g=; h=From:To:Subject:Date:In-Reply-To:References:From; b=bvlKWJM8j/3beVR1XukUDnZP3YBExa7mhfQmpFXj6ZKMtxo9zGzLEvEpF9scZzkM8 LSM7l6WHlDfulbUarXQGQAS51J4ZFs+PDnyycCeET7UBuEUt73jGzf8sfXv0Q5vfZl 6yL+BEPJy0eNlBk1gDEqdckVwZowKVhwTFSpHEck= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 4/4] cindex: leave SIGTSTP and SIGCONT unblocked Date: Tue, 28 Mar 2023 02:59:04 +0000 Message-Id: <20230328025904.3822761-5-e@80x24.org> In-Reply-To: <20230328025904.3822761-1-e@80x24.org> References: <20230328025904.3822761-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This makes it easier to pause and restart long-running indexing jobs which use our event loop. --- lib/PublicInbox/CodeSearchIdx.pm | 3 ++- lib/PublicInbox/DS.pm | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm index f60af015..8d57ec10 100644 --- a/lib/PublicInbox/CodeSearchIdx.pm +++ b/lib/PublicInbox/CodeSearchIdx.pm @@ -841,7 +841,8 @@ sub cidx_run { # main entry point my ($self) = @_; my $restore_umask = prep_umask($self); local $DEFER = []; - local $SIGSET = PublicInbox::DS::block_signals(); + local $SIGSET = PublicInbox::DS::block_signals( + POSIX::SIGTSTP, POSIX::SIGCONT); my $restore = PublicInbox::OnDestroy->new($$, \&PublicInbox::DS::sig_setmask, $SIGSET); local $LIVE = {}; diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 340086fc..98084b5c 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -193,10 +193,11 @@ sub RunTimers { sub sig_setmask { sigprocmask(SIG_SETMASK, @_) or die "sigprocmask: $!" } -sub block_signals () { - my $oldset = POSIX::SigSet->new; +sub block_signals { # anything in @_ stays unblocked my $newset = POSIX::SigSet->new; $newset->fillset or die "fillset: $!"; + $newset->delset($_) for @_; + my $oldset = POSIX::SigSet->new; sig_setmask($newset, $oldset); $oldset; }