From 8080720d242f7450ecaf7e962c0f4ac9c5c2115b Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 13 Oct 2020 01:34:30 +0000 Subject: 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. --- lib/PublicInbox/Admin.pm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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; -- cgit v1.2.3-24-ge0c7