From: Eric Wong Date: Mon, 12 Dec 2022 09:58:54 +0000 (+0000) Subject: lei_mirror: break circular references X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=ed1531f62391e8dd13cb474419a5907a96ba7538 lei_mirror: break circular references It seems more graceful than dying and breaking a mirror, since the {reference} in util-linux was irrelevant anyways with the move to forkgroups. --- diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index d6d2c69e..92156cf1 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -960,9 +960,13 @@ sub clone_all { # resolve multi-level references while ($m && defined($nxt = $m->{$x}->{reference})) { exists($todo->{$nxt}) or last; - die < 1000; -E: dependency loop detected (`$x' => `$nxt') + if (++$nr > 1000) { + $m->{$x}->{reference} = undef; + $m->{$nxt}->{reference} = undef; + warn < `$nxt'), breaking EOM + } $x = $nxt; } my $y = delete $todo->{$x} // next; # already done