]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
cindex: simplify some internal data structures
authorEric Wong <e@80x24.org>
Tue, 28 Mar 2023 02:59:01 +0000 (02:59 +0000)
committerEric Wong <e@80x24.org>
Wed, 29 Mar 2023 04:36:50 +0000 (04:36 +0000)
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
script/public-inbox-cindex

index e353f452598598c929a8c9abbf0e40d50a22b4c3..85e44cdc3f88a176f909ddda042334afd7ec3133 100644 (file)
@@ -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;
index fb906bad32ba82a0aa5819525c01bf9cdc06cf90..4c9136cf95c211e761dbd6666fedf2c0628c1e7f 100755 (executable)
@@ -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;
        }