From: Eric Wong Date: Tue, 13 Oct 2020 01:34:30 +0000 (+0000) Subject: admin: preserve config ordering of `--all' switch X-Git-Tag: v1.7.0~1712 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=8080720d242f7450ecaf7e962c0f4ac9c5c2115b;p=public-inbox.git admin: preserve config ordering of `--all' switch When `--all' is passed to -index and similar commands, process them in the same order as what is given in the config file. This ensures predictable behavior so admins can ensure certain inboxes see updated indices before others. For (upcoming) external indices, this will ensure stable Xref: ordering for predictable caching/memoization by NNTP clients. --- diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm index fb88e621..9d48e5eb 100644 --- a/lib/PublicInbox/Admin.pm +++ b/lib/PublicInbox/Admin.pm @@ -97,12 +97,14 @@ sub resolve_inboxes ($;$$) { my $min_ver = $opt->{-min_inbox_version} || 0; my (@old, @ibxs); my %dir2ibx; + my $all = $opt->{all} ? [] : undef; if ($cfg) { $cfg->each_inbox(sub { my ($ibx) = @_; my $path = abs_path($ibx->{inboxdir}); if (defined($path)) { $dir2ibx{$path} = $ibx; + push @$all, $ibx if $all; } else { warn <{name} $ibx->{inboxdir}: $! @@ -110,10 +112,9 @@ EOF } }); } - if ($opt->{all}) { - my @all = values %dir2ibx; - @all = grep { $_->version >= $min_ver } @all; - push @ibxs, @all; + if ($all) { + @$all = grep { $_->version >= $min_ver } @$all; + @ibxs = @$all; } else { # directories specified on the command-line my $i = 0; my @dirs = @$argv;