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 CE4851F428 for ; Tue, 28 Mar 2023 02:59:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1679972345; bh=jgerzuW5cn0FHJqOTlDJEVubTLiG08LTGfkbzgyGClY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=V5mHIsrhOLq4Lgsg0qozFJv4+6qmgkY1dd+xehmwxboa+T84J8AqL5afvBmlIx/VW zUp30wmNtjEhd+KGqY6Owc1qnjsMj++AXeQOqSU/cVWd//rdNCs/AaI+pJwF7s8KGz pF2h6P+GCNnIYETSQZlfz1n2wnf3aiO42zsZwELA= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/4] cindex: simplify some internal data structures Date: Tue, 28 Mar 2023 02:59:01 +0000 Message-Id: <20230328025904.3822761-2-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: We'll rely more on local-ized `our' globals rather than hashref fields. The former is more resistant to typos and can be checked at compile-time earlier via `perl -c'. The {-internal} field is also renamed to {-cidx_internal} in case to reduce confusion within a large code base. --- lib/PublicInbox/CodeSearchIdx.pm | 22 +++++++++------------- script/public-inbox-cindex | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm index e353f452..85e44cdc 100644 --- a/lib/PublicInbox/CodeSearchIdx.pm +++ b/lib/PublicInbox/CodeSearchIdx.pm @@ -289,10 +289,9 @@ sub docids_by_postlist ($$) { # consider moving to PublicInbox::Search @ids; } -sub run_todo ($) { - my ($self) = @_; +sub run_deferred () { my $n; - while (defined(my $x = shift(@{$self->{todo} // []}))) { + while (defined(my $x = shift(@{$DEFER // []}))) { my $cb = shift @$x; $cb->(@$x); ++$n; @@ -308,12 +307,12 @@ sub need_reap { # post_loop_do sub cidx_reap ($$) { my ($self, $jobs) = @_; - while (run_todo($self)) {} + while (run_deferred()) {} local @PublicInbox::DS::post_loop_do = (\&need_reap, $jobs); while (need_reap(undef, $jobs)) { PublicInbox::DS::event_loop($MY_SIG, $SIGSET); } - while (!$jobs && run_todo($self)) {} + while (!$jobs && run_deferred()) {} } sub cidx_await_cb { # awaitpid cb @@ -527,7 +526,7 @@ sub index_repo { # cidx_await cb $consumers->{$repo->{shard_n}} = undef; commit_used_shards($self, $git, $consumers); progress($self, "$git->{git_dir}: done"); - return run_todo($self); + return run_deferred(); } die "E: store_repo $git->{git_dir}: id=$id"; } @@ -725,7 +724,7 @@ sub prep_umask ($) { my ($self) = @_; my $um; my $cur = umask; - if ($self->{-internal}) { # respect core.sharedRepository + if ($self->{-cidx_internal}) { # respect core.sharedRepository @{$self->{git_dirs}} == 1 or die 'BUG: only for GIT_DIR'; # yuck, FIXME move umask handling out of inbox-specific stuff require PublicInbox::InboxWritable; @@ -750,14 +749,12 @@ sub prep_umask ($) { sub cidx_run { # main entry point my ($self) = @_; my $restore_umask = prep_umask($self); - local $self->{todo} = []; - local $DEFER = $self->{todo}; + local $DEFER = []; local $SIGSET = PublicInbox::DS::block_signals(); my $restore = PublicInbox::OnDestroy->new($$, \&PublicInbox::DS::sig_setmask, $SIGSET); local $LIVE = {}; - local $DO_QUIT; - local $TMP_GIT; + local ($DO_QUIT, $TMP_GIT, $REINDEX); local @IDX_SHARDS = cidx_init($self); local $self->{current_info} = ''; local $MY_SIG = { @@ -772,8 +769,7 @@ sub cidx_run { # main entry point $m =~ s/\A(#?\s*)/$1$self->{current_info}: /; $cb->($m, @_); }; - load_existing($self) unless $self->{-internal}; - local $REINDEX; + load_existing($self) unless $self->{-cidx_internal}; if ($self->{-opt}->{reindex}) { require PublicInbox::SharedKV; $REINDEX = PublicInbox::SharedKV->new; diff --git a/script/public-inbox-cindex b/script/public-inbox-cindex index fb906bad..4c9136cf 100755 --- a/script/public-inbox-cindex +++ b/script/public-inbox-cindex @@ -79,7 +79,7 @@ EOM for my $gd (@git_dirs) { my $cd = "$gd/public-inbox-cindex"; my $cidx = PublicInbox::CodeSearchIdx->new($cd, { %$opt }); - $cidx->{-internal} = 1; + $cidx->{-cidx_internal} = 1; @{$cidx->{git_dirs}} = ($gd); $cidx->cidx_run; }