unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH 0/6] trivial clone|fetch-related stuff
@ 2022-10-20  8:43 Eric Wong
  2022-10-20  8:43 ` [PATCH 1/6] clone|fetch: preserve mtime of modified manifest.js.gz Eric Wong
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

Much bigger, barely-tested changes in the pipeline to support
cloning + updating multi-inbox mirrors (without unnecessary
sleeps and delays[1]).  Here's some trivial stuff first.

Of course, I have a SHA-256 coderepo somewhere, so more
tweaks on that front.

4/6 is the only user-visible change, but hopefully nobody
is parsing stderr.

Eric Wong (6):
  clone|fetch: preserve mtime of modified manifest.js.gz
  another step towards git SHA-256 support
  githttpbackend: remove unused $BIN variable
  treewide: replace /^I: / prefix with /^# /
  lei_mirror: make _finish_add_external call more obvious
  lei_mirror: delimit names by `\n' to improve die message

 examples/grok-pull.post_update_hook.sh |  2 +-
 lib/PublicInbox/ExtSearchIdx.pm        | 26 ++++++++++++--------------
 lib/PublicInbox/Fetch.pm               |  2 ++
 lib/PublicInbox/Gcf2.pm                |  4 ++--
 lib/PublicInbox/GitHTTPBackend.pm      | 13 +++++--------
 lib/PublicInbox/InboxIdle.pm           |  8 +++-----
 lib/PublicInbox/LeiMirror.pm           |  5 ++++-
 lib/PublicInbox/MiscIdx.pm             |  2 +-
 lib/PublicInbox/OverIdx.pm             |  6 +++---
 lib/PublicInbox/Watch.pm               |  4 ++--
 script/public-inbox-watch              |  6 +++---
 t/extsearch.t                          |  6 +++---
 t/git.t                                |  4 ++--
 t/imapd.t                              |  6 +++---
 t/import.t                             |  4 ++--
 t/mda.t                                |  4 ++--
 xt/git-http-backend.t                  |  4 ++--
 17 files changed, 52 insertions(+), 54 deletions(-)

[1] grokmirror seems to sleep a bit more than it should:
    https://lore.kernel.org/tools/20211013110344.GA10632@dcvr/
    (And I probably have dain-bramage from insomnia :<)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/6] clone|fetch: preserve mtime of modified manifest.js.gz
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  2022-10-20  8:43 ` [PATCH 2/6] another step towards git SHA-256 support Eric Wong
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

When we cull manifest.js.gz for ignored epochs, attempt to
preserve mtime of the updated manifest.js.gz since it can
be used to optimize future fetches.
---
 lib/PublicInbox/Fetch.pm     | 2 ++
 lib/PublicInbox/LeiMirror.pm | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/lib/PublicInbox/Fetch.pm b/lib/PublicInbox/Fetch.pm
index 5261cad1..364271e8 100644
--- a/lib/PublicInbox/Fetch.pm
+++ b/lib/PublicInbox/Fetch.pm
@@ -221,7 +221,9 @@ EOM
 		if ($mculled) {
 			my $json = PublicInbox::Config->json->encode($m1);
 			my $fn = $ft->filename;
+			my $mtime = (stat($fn))[9];
 			gzip(\$json => $fn) or die "gzip: $GzipError";
+			utime($mtime, $mtime, $fn) or die "utime(..., $fn): $!";
 		}
 		PublicInbox::LeiMirror::ft_rename($ft, $mf, 0666);
 	}
diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index e20d30b4..fa1d2e88 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -408,7 +408,9 @@ EOM
 		# users won't have to delete manifest if they +w an
 		# epoch they no longer want to skip
 		my $json = PublicInbox::Config->json->encode($m);
+		my $mtime = (stat($fn))[9];
 		gzip(\$json => $fn) or die "gzip: $GzipError";
+		utime($mtime, $mtime, $fn) or die "utime(..., $fn): $!";
 	}
 	ft_rename($ft, "$self->{dst}/manifest.js.gz", 0666);
 }

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] another step towards git SHA-256 support
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
  2022-10-20  8:43 ` [PATCH 1/6] clone|fetch: preserve mtime of modified manifest.js.gz Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  2022-10-20  8:43 ` [PATCH 3/6] githttpbackend: remove unused $BIN variable Eric Wong
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

While SHA-256 isn't supported for inboxes, yet
xt/git-http-backend.t now runs properly against a SHA-256 code
repository
---
 lib/PublicInbox/GitHTTPBackend.pm | 12 +++++-------
 t/git.t                           |  4 ++--
 t/import.t                        |  4 ++--
 t/mda.t                           |  4 ++--
 xt/git-http-backend.t             |  4 ++--
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm
index 3aae5454..72b8e6c3 100644
--- a/lib/PublicInbox/GitHTTPBackend.pm
+++ b/lib/PublicInbox/GitHTTPBackend.pm
@@ -23,10 +23,8 @@ my @text = qw[HEAD info/refs info/attributes
 	objects/info/(?:http-alternates|alternates|packs)
 	cloneurl description];
 
-my @binary = qw!
-	objects/[a-f0-9]{2}/[a-f0-9]{38}
-	objects/pack/pack-[a-f0-9]{40}\.(?:pack|idx)
-	!;
+my @binary = ('objects/[a-f0-9]{2}/[a-f0-9]{38,62}',
+	'objects/pack/pack-[a-f0-9]{40,64}\.(?:pack|idx)');
 
 our $ANY = join('|', @binary, @text, 'git-upload-pack');
 my $BIN = join('|', @binary);
@@ -62,13 +60,13 @@ sub serve_dumb {
 
 	my $h = [];
 	my $type;
-	if ($path =~ m!\Aobjects/[a-f0-9]{2}/[a-f0-9]{38}\z!) {
+	if ($path =~ m!\Aobjects/[a-f0-9]{2}/[a-f0-9]{38,62}\z!) {
 		$type = 'application/x-git-loose-object';
 		cache_one_year($h);
-	} elsif ($path =~ m!\Aobjects/pack/pack-[a-f0-9]{40}\.pack\z!) {
+	} elsif ($path =~ m!\Aobjects/pack/pack-[a-f0-9]{40,64}\.pack\z!) {
 		$type = 'application/x-git-packed-objects';
 		cache_one_year($h);
-	} elsif ($path =~ m!\Aobjects/pack/pack-[a-f0-9]{40}\.idx\z!) {
+	} elsif ($path =~ m!\Aobjects/pack/pack-[a-f0-9]{40,64}\.idx\z!) {
 		$type = 'application/x-git-packed-objects-toc';
 		cache_one_year($h);
 	} elsif ($path =~ /\A(?:$TEXT)\z/o) {
diff --git a/t/git.t b/t/git.t
index 56fc8d95..d8957e42 100644
--- a/t/git.t
+++ b/t/git.t
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use Test::More;
@@ -44,7 +44,7 @@ use PublicInbox::Git;
 	my $f = 'HEAD:foo.txt';
 	my @x = $gcf->check($f);
 	is(scalar @x, 3, 'returned 3 element array for existing file');
-	like($x[0], qr/\A[a-f0-9]{40}\z/, 'returns obj ID in 1st element');
+	like($x[0], qr/\A[a-f0-9]{40,64}\z/, 'returns obj ID in 1st element');
 	is('blob', $x[1], 'returns obj type in 2nd element');
 	like($x[2], qr/\A\d+\z/, 'returns obj size in 3rd element');
 
diff --git a/t/import.t b/t/import.t
index ae76858b..4ba74022 100644
--- a/t/import.t
+++ b/t/import.t
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use warnings;
@@ -30,7 +30,7 @@ my $smsg = bless {}, 'PublicInbox::Smsg' if $v2;
 like($im->add($mime, undef, $smsg), qr/\A:[0-9]+\z/, 'added one message');
 
 if ($v2) {
-	like($smsg->{blob}, qr/\A[a-f0-9]{40}\z/, 'got last object_id');
+	like($smsg->{blob}, qr/\A[a-f0-9]{40,64}\z/, 'got last object_id');
 	my @cmd = ('git', "--git-dir=$git->{git_dir}", qw(hash-object --stdin));
 	open my $in, '+<', undef or BAIL_OUT "open(+<): $!";
 	print $in $mime->as_string or die "write failed: $!";
diff --git a/t/mda.t b/t/mda.t
index d20cdb92..e3c5cdff 100644
--- a/t/mda.t
+++ b/t/mda.t
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use warnings;
@@ -97,7 +97,7 @@ EOF
 		local $ENV{PATH} = $main_path;
 		ok(run_script(['-mda'], undef, { 0 => \$in }));
 		my $rev = $git->qx(qw(rev-list HEAD));
-		like($rev, qr/\A[a-f0-9]{40}/, "good revision committed");
+		like($rev, qr/\A[a-f0-9]{40,64}/, "good revision committed");
 		chomp $rev;
 		my $cmt = $git->cat_file($rev);
 		like($$cmt, qr/^author Me <me\@example\.com> 0 \+0000\n/m,
diff --git a/xt/git-http-backend.t b/xt/git-http-backend.t
index adadebb0..1f3ba063 100644
--- a/xt/git-http-backend.t
+++ b/xt/git-http-backend.t
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 #
 # Ensure buffering behavior in -httpd doesn't cause runaway memory use
@@ -53,7 +53,7 @@ SKIP: {
 		}
 	}
 	skip "no packs found in $git_dir" unless defined $pack;
-	if ($pack !~ m!(/objects/pack/pack-[a-f0-9]{40}.pack)\z!) {
+	if ($pack !~ m!(/objects/pack/pack-[a-f0-9]{40,64}.pack)\z!) {
 		skip "bad pack name: $pack";
 	}
 	my $url = $1;

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] githttpbackend: remove unused $BIN variable
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
  2022-10-20  8:43 ` [PATCH 1/6] clone|fetch: preserve mtime of modified manifest.js.gz Eric Wong
  2022-10-20  8:43 ` [PATCH 2/6] another step towards git SHA-256 support Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  2022-10-20  8:43 ` [PATCH 4/6] treewide: replace /^I: / prefix with /^# / Eric Wong
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

It hasn't been used in many years since commit
c1630b7dc4ef (githttpbackend: match Content-Type of git-http-backend(1), 2016-07-03)
---
 lib/PublicInbox/GitHTTPBackend.pm | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm
index 72b8e6c3..1eb51f27 100644
--- a/lib/PublicInbox/GitHTTPBackend.pm
+++ b/lib/PublicInbox/GitHTTPBackend.pm
@@ -27,7 +27,6 @@ my @binary = ('objects/[a-f0-9]{2}/[a-f0-9]{38,62}',
 	'objects/pack/pack-[a-f0-9]{40,64}\.(?:pack|idx)');
 
 our $ANY = join('|', @binary, @text, 'git-upload-pack');
-my $BIN = join('|', @binary);
 my $TEXT = join('|', @text);
 
 sub serve {

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] treewide: replace /^I: / prefix with /^# /
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
                   ` (2 preceding siblings ...)
  2022-10-20  8:43 ` [PATCH 3/6] githttpbackend: remove unused $BIN variable Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  2022-10-20  8:43 ` [PATCH 5/6] lei_mirror: make _finish_add_external call more obvious Eric Wong
  2022-10-20  8:43 ` [PATCH 6/6] lei_mirror: delimit names by `\n' to improve die message Eric Wong
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

This is like more familiar to readers of TAP (Test Anywhere
Protocol) output, as well as shell and Perl scripters which also
use `#' for comments.

AFAIK, nobody is parsing our stderr, and I'm not sure how
standardized the `I:' prefix is (nor `W:' and `E:' are).  It's
already the prevailing style in Lei* code, too, so things have
been moving in that direction for a bit.
---
 examples/grok-pull.post_update_hook.sh |  2 +-
 lib/PublicInbox/ExtSearchIdx.pm        | 26 ++++++++++++--------------
 lib/PublicInbox/Gcf2.pm                |  4 ++--
 lib/PublicInbox/InboxIdle.pm           |  8 +++-----
 lib/PublicInbox/MiscIdx.pm             |  2 +-
 lib/PublicInbox/OverIdx.pm             |  6 +++---
 lib/PublicInbox/Watch.pm               |  4 ++--
 script/public-inbox-watch              |  6 +++---
 t/extsearch.t                          |  6 +++---
 t/imapd.t                              |  6 +++---
 10 files changed, 33 insertions(+), 37 deletions(-)

diff --git a/examples/grok-pull.post_update_hook.sh b/examples/grok-pull.post_update_hook.sh
index 77489472..4d303c03 100755
--- a/examples/grok-pull.post_update_hook.sh
+++ b/examples/grok-pull.post_update_hook.sh
@@ -111,7 +111,7 @@ case $cfg_dir in
 			"publicinbox.$inbox_name.infourl" "$url"
 	done
 	curl -sSfv "$remote_inbox_url"/description >"$inbox_dir"/description
-	echo "I: $inbox_name at $inbox_dir ($addresses) $local_url"
+	echo "# $inbox_name at $inbox_dir ($addresses) $local_url"
 	;;
 esac
 
diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm
index 7c44a1a4..401b18d0 100644
--- a/lib/PublicInbox/ExtSearchIdx.pm
+++ b/lib/PublicInbox/ExtSearchIdx.pm
@@ -406,14 +406,14 @@ EOM
 	while (my ($ibx_id, $eidx_key) = $ibx_ck->fetchrow_array) {
 		next if $self->{ibx_map}->{$eidx_key};
 		$self->{midx}->remove_eidx_key($eidx_key);
-		warn "I: deleting messages for $eidx_key...\n";
+		warn "# deleting messages for $eidx_key...\n";
 		$x3_doc->execute($ibx_id);
 		my $ibx = { -ibx_id => $ibx_id, -gc_eidx_key => $eidx_key };
 		while (my ($docid, $xnum, $oid) = $x3_doc->fetchrow_array) {
 			my $r = _unref_doc($sync, $docid, $ibx, $xnum, $oid);
 			$oid = unpack('H*', $oid);
 			$r = $r ? 'unref' : 'remove';
-			warn "I: $r #$docid $eidx_key $oid\n";
+			warn "# $r #$docid $eidx_key $oid\n";
 			if (checkpoint_due($sync)) {
 				$x3_doc = $ibx_ck = undef;
 				reindex_checkpoint($self, $sync);
@@ -433,12 +433,12 @@ SELECT key FROM eidx_meta WHERE key LIKE ? ESCAPE ?
 		$lc_i->execute("lc-%:$pat//%", '\\');
 		while (my ($key) = $lc_i->fetchrow_array) {
 			next if $key !~ m!\Alc-v[1-9]+:\Q$eidx_key\E//!;
-			warn "I: removing $key\n";
+			warn "# removing $key\n";
 			$self->{oidx}->dbh->do(<<'', undef, $key);
 DELETE FROM eidx_meta WHERE key = ?
 
 		}
-		warn "I: $eidx_key removed\n";
+		warn "# $eidx_key removed\n";
 	}
 }
 
@@ -447,20 +447,20 @@ sub eidx_gc_scan_shards ($$) { # TODO: use for lei/store
 	my $nr = $self->{oidx}->dbh->do(<<'');
 DELETE FROM xref3 WHERE docid NOT IN (SELECT num FROM over)
 
-	warn "I: eliminated $nr stale xref3 entries\n" if $nr != 0;
+	warn "# eliminated $nr stale xref3 entries\n" if $nr != 0;
 	reindex_checkpoint($self, $sync) if checkpoint_due($sync);
 
 	# fixup from old bugs:
 	$nr = $self->{oidx}->dbh->do(<<'');
 DELETE FROM over WHERE num > 0 AND num NOT IN (SELECT docid FROM xref3)
 
-	warn "I: eliminated $nr stale over entries\n" if $nr != 0;
+	warn "# eliminated $nr stale over entries\n" if $nr != 0;
 	reindex_checkpoint($self, $sync) if checkpoint_due($sync);
 
 	$nr = $self->{oidx}->dbh->do(<<'');
 DELETE FROM eidxq WHERE docid NOT IN (SELECT num FROM over)
 
-	warn "I: eliminated $nr stale reindex queue entries\n" if $nr != 0;
+	warn "# eliminated $nr stale reindex queue entries\n" if $nr != 0;
 	reindex_checkpoint($self, $sync) if checkpoint_due($sync);
 
 	my ($cur) = $self->{oidx}->dbh->selectrow_array(<<EOM);
@@ -490,7 +490,7 @@ SELECT num FROM over WHERE num >= ? ORDER BY num ASC LIMIT 10000
 			reindex_checkpoint($self, $sync);
 		}
 	}
-	warn "I: eliminated $nr stale Xapian documents\n" if $nr != 0;
+	warn "# eliminated $nr stale Xapian documents\n" if $nr != 0;
 }
 
 sub eidx_gc {
@@ -731,13 +731,11 @@ sub eidxq_lock_acquire ($) {
 	my $t = strftime('%Y-%m-%d %k:%M %z', localtime($time));
 	local $self->{current_info} = 'eidxq';
 	if ($euid == $> && $ident eq host_ident) {
-		if (kill(0, $pid)) {
-			warn <<EOM; return;
-I: PID:$pid (re)indexing since $t, it will continue our work
+		kill(0, $pid) and warn <<EOM and return;
+# PID:$pid (re)indexing since $t, it will continue our work
 EOM
-		}
 		if ($!{ESRCH}) {
-			warn "I: eidxq_lock is stale ($cur), clobbering\n";
+			warn "# eidxq_lock is stale ($cur), clobbering\n";
 			return _eidxq_take($self);
 		}
 		warn "E: kill(0, $pid) failed: $!\n"; # fall-through:
@@ -837,7 +835,7 @@ sub reindex_unseen ($$$$) {
 		xnum => $xsmsg->{num},
 		# {mids} and {chash} will be filled in at _reindex_unseen
 	};
-	warn "I: reindex_unseen ${\$ibx->eidx_key}:$req->{xnum}:$req->{oid}\n";
+	warn "# reindex_unseen ${\$ibx->eidx_key}:$req->{xnum}:$req->{oid}\n";
 	$self->git->cat_async($xsmsg->{blob}, \&_reindex_unseen, $req);
 }
 
diff --git a/lib/PublicInbox/Gcf2.pm b/lib/PublicInbox/Gcf2.pm
index 5c353095..54b3d6aa 100644
--- a/lib/PublicInbox/Gcf2.pm
+++ b/lib/PublicInbox/Gcf2.pm
@@ -128,14 +128,14 @@ sub loop (;$) {
 			# retry once if missing.  We only get unabbreviated OIDs
 			# from SQLite or Xapian DBs, here, so malicious clients
 			# can't trigger excessive retries:
-			warn "I: $$ $oid missing, retrying in $git_dir\n";
+			warn "# $$ $oid missing, retrying in $git_dir\n";
 
 			$gcf2 = new();
 			%seen = ($git_dir => add_alt($gcf2, $git_dir));
 			$check_at = clock_gettime(CLOCK_MONOTONIC) + $exp;
 
 			if ($gcf2->cat_oid(1, $oid)) {
-				warn "I: $$ $oid found after retry\n";
+				warn "# $$ $oid found after retry\n";
 			} else {
 				warn "W: $$ $oid missing after retry\n";
 				print "$oid missing\n"; # mimic git-cat-file
diff --git a/lib/PublicInbox/InboxIdle.pm b/lib/PublicInbox/InboxIdle.pm
index ffbbfea7..005e2636 100644
--- a/lib/PublicInbox/InboxIdle.pm
+++ b/lib/PublicInbox/InboxIdle.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # fields:
@@ -48,11 +48,9 @@ sub in2_arm ($$) { # PublicInbox::Config::each_inbox callback
 		$self->{on_unlock}->{$w->name} = $ibx;
 	} else {
 		warn "E: ".ref($inot)."->watch($lock, IN_MODIFY) failed: $!\n";
-		if ($!{ENOSPC} && $^O eq 'linux') {
-			warn <<"";
-I: consider increasing /proc/sys/fs/inotify/max_user_watches
+		warn <<"" if $!{ENOSPC} && $^O eq 'linux';
+# consider increasing /proc/sys/fs/inotify/max_user_watches
 
-		}
 	}
 
 	# TODO: detect deleted packs (and possibly other files)
diff --git a/lib/PublicInbox/MiscIdx.pm b/lib/PublicInbox/MiscIdx.pm
index 76b33b16..19200b92 100644
--- a/lib/PublicInbox/MiscIdx.pm
+++ b/lib/PublicInbox/MiscIdx.pm
@@ -72,7 +72,7 @@ sub remove_eidx_key {
 	}
 	for my $docid (@docids) {
 		$xdb->delete_document($docid);
-		warn "I: remove inbox docid #$docid ($eidx_key)\n";
+		warn "# remove inbox docid #$docid ($eidx_key)\n";
 	}
 }
 
diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm
index a49ca6db..6cc86d5d 100644
--- a/lib/PublicInbox/OverIdx.pm
+++ b/lib/PublicInbox/OverIdx.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # for XOVER, OVER in NNTP, and feeds/homepage/threads in PSGI
@@ -509,12 +509,12 @@ EOF
 				next;
 			}
 			$pr->(<<EOM) if $pr;
-I: ghost $r->{num} <$mid> THREADID=$r->{tid} culled
+# ghost $r->{num} <$mid> THREADID=$r->{tid} culled
 EOM
 		}
 		delete_by_num($self, $r->{num});
 	}
-	$pr->("I: rethread culled $total ghosts\n") if $pr && $total;
+	$pr->("# rethread culled $total ghosts\n") if $pr && $total;
 }
 
 # used for cross-inbox search
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm
index 3f6fe21b..082ecfb9 100644
--- a/lib/PublicInbox/Watch.pm
+++ b/lib/PublicInbox/Watch.pm
@@ -328,7 +328,7 @@ sub imap_idle_once ($$$$) {
 	my ($self, $mic, $intvl, $uri) = @_;
 	my $i = $intvl //= (29 * 60);
 	my $end = now() + $intvl;
-	warn "I: $uri idling for ${intvl}s\n";
+	warn "# $uri idling for ${intvl}s\n";
 	local $0 = "IDLE $0";
 	return if $self->{quit};
 	unless ($mic->idle) {
@@ -517,7 +517,7 @@ sub poll_fetch_reap {
 	if ($?) {
 		warn "W: PID=$pid died: \$?=$?\n", map { "$_\n" } @$uris;
 	}
-	warn("I: will check $_ in ${intvl}s\n") for @$uris;
+	warn("# will check $_ in ${intvl}s\n") for @$uris;
 	add_timer($intvl, \&poll_fetch_fork, $self, $intvl, $uris);
 }
 
diff --git a/script/public-inbox-watch b/script/public-inbox-watch
index af02d8f3..4c50461f 100755
--- a/script/public-inbox-watch
+++ b/script/public-inbox-watch
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 my $help = <<EOF;
 usage: public-inbox-watch
@@ -27,7 +27,7 @@ my $reload = sub {
 	$watch->quit;
 	$watch = PublicInbox::Watch->new(PublicInbox::Config->new);
 	if ($watch) {
-		warn("I: reloaded\n");
+		warn "# reloaded\n";
 	} else {
 		warn("E: reloading failed\n");
 		$watch = $prev;
@@ -37,7 +37,7 @@ my $reload = sub {
 if ($watch) {
 	my $scan = sub {
 		return if !$watch;
-		warn "I: scanning\n";
+		warn "# scanning\n";
 		$watch->trigger_scan('full');
 	};
 	my $quit = sub {
diff --git a/t/extsearch.t b/t/extsearch.t
index 6cbe5262..03bcad95 100644
--- a/t/extsearch.t
+++ b/t/extsearch.t
@@ -309,7 +309,7 @@ if ('reindex catches missed messages') {
 	is($oidx->eidx_meta($lc_key), $cmt_b, 'lc-v2 stays unchanged');
 	my @err = split(/^/, $err);
 	is(scalar(@err), 1, 'only one warning') or diag "err=$err";
-	like($err[0], qr/I: reindex_unseen/, 'got reindex_unseen message');
+	like($err[0], qr/# reindex_unseen/, 'got reindex_unseen message');
 	my $new = $oidx->get_art($max + 1);
 	is($new->{subject}, $eml->header('Subject'), 'new message added');
 
@@ -415,8 +415,8 @@ if ('remove v1test and test gc') {
 	my $opt = { 2 => \(my $err = '') };
 	ok(run_script([qw(-extindex --gc), "$home/extindex"], undef, $opt),
 		'extindex --gc');
-	like($err, qr/^I: remove #1 v1\.example /ms, 'removed v1 message');
-	is(scalar(grep(!/^I:/, split(/^/m, $err))), 0,
+	like($err, qr/^# remove #1 v1\.example /ms, 'removed v1 message');
+	is(scalar(grep(!/^#/, split(/^/m, $err))), 0,
 		'no non-informational messages');
 	$misc->{xdb}->reopen;
 	@it = $misc->mset('')->items;
diff --git a/t/imapd.t b/t/imapd.t
index 43de8675..3c74aefd 100644
--- a/t/imapd.t
+++ b/t/imapd.t
@@ -470,7 +470,7 @@ SKIP: {
 	PublicInbox::DS::event_loop();
 	diag 'inbox unlocked on initial fetch, waiting for IDLE';
 
-	tick until (grep(/I: \S+ idling/, <$err>));
+	tick until (grep(/# \S+ idling/, <$err>));
 	open my $fh, '<', 't/iso-2202-jp.eml' or BAIL_OUT $!;
 	$old_env->{ORIGINAL_RECIPIENT} = $addr;
 	ok(run_script([qw(-mda --no-precheck)], $old_env, { 0 => $fh }),
@@ -487,7 +487,7 @@ SKIP: {
 		or BAIL_OUT "git config $?";
 	$w->kill('HUP');
 	diag 'waiting for -watch reload + initial fetch';
-	tick until (grep(/I: will check/, <$err>));
+	tick until (grep(/# will check/, <$err>));
 
 	open $fh, '<', 't/psgi_attach.eml' or BAIL_OUT $!;
 	ok(run_script([qw(-mda --no-precheck)], $old_env, { 0 => $fh }),
@@ -516,7 +516,7 @@ SKIP: {
 		my @t0 = times;
 		$w = start_script(['-watch'], undef, { 2 => $err_wr });
 		seek($err, 0, 0);
-		tick until (grep(/I: \S+ idling/, <$err>));
+		tick until (grep(/# \S+ idling/, <$err>));
 		diag 'killing imapd, waiting for CPU spins';
 		my $delay = 0.11;
 		$td->kill(9);

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] lei_mirror: make _finish_add_external call more obvious
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
                   ` (3 preceding siblings ...)
  2022-10-20  8:43 ` [PATCH 4/6] treewide: replace /^I: / prefix with /^# / Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  2022-10-20  8:43 ` [PATCH 6/6] lei_mirror: delimit names by `\n' to improve die message Eric Wong
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

I get easily confused, sometimes :x
---
 lib/PublicInbox/LeiMirror.pm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index fa1d2e88..1dbd4d0a 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -25,6 +25,7 @@ sub _wq_done_wait { # dwaitpid callback (via wq_eof)
 		warn("unlink($f): $!\n") unless $!{ENOENT};
 	} else {
 		if ($lei->{cmd} ne 'public-inbox-clone') {
+			# calls _finish_add_external
 			$lei->lazy_cb('add-external', '_finish_'
 					)->($lei, $mrr->{dst});
 		}

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] lei_mirror: delimit names by `\n' to improve die message
  2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
                   ` (4 preceding siblings ...)
  2022-10-20  8:43 ` [PATCH 5/6] lei_mirror: make _finish_add_external call more obvious Eric Wong
@ 2022-10-20  8:43 ` Eric Wong
  5 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2022-10-20  8:43 UTC (permalink / raw)
  To: meta

Attempting to clone a top-level manifest should work,
eventually.  But for now, make the list of git repos
more readable.
---
 lib/PublicInbox/LeiMirror.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index 1dbd4d0a..ed8e4842 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -402,7 +402,7 @@ EOM
 		clone_v1($self);
 	} else {
 		die "E: confused by <$uri>, possible matches:\n\t",
-			join(', ', sort keys %$m), "\n";
+			join("\n\t", sort keys %$m), "\n";
 	}
 	if (delete $self->{-culled_manifest}) { # set by clone_v2
 		# write the smaller manifest if epochs were skipped so

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-10-20  8:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-20  8:43 [PATCH 0/6] trivial clone|fetch-related stuff Eric Wong
2022-10-20  8:43 ` [PATCH 1/6] clone|fetch: preserve mtime of modified manifest.js.gz Eric Wong
2022-10-20  8:43 ` [PATCH 2/6] another step towards git SHA-256 support Eric Wong
2022-10-20  8:43 ` [PATCH 3/6] githttpbackend: remove unused $BIN variable Eric Wong
2022-10-20  8:43 ` [PATCH 4/6] treewide: replace /^I: / prefix with /^# / Eric Wong
2022-10-20  8:43 ` [PATCH 5/6] lei_mirror: make _finish_add_external call more obvious Eric Wong
2022-10-20  8:43 ` [PATCH 6/6] lei_mirror: delimit names by `\n' to improve die message Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).