about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-25 06:20:21 +0200
committerEric Wong <e@80x24.org>2021-03-25 17:58:59 +0000
commit700f2675366ce6cf2cd39a00b5742ba6fea753e9 (patch)
treeb61ee92e0ce7b42026dea97b08f64bf07b5df98a /lib
parenta3e3a5f5f34f258744938e60639c0b4d7a362f60 (diff)
downloadpublic-inbox-700f2675366ce6cf2cd39a00b5742ba6fea753e9.tar.gz
While we were exiting with a error code, showing a successful
"# mirrored $URL" message is misleading and wrong.  Don't show
success until everything is complete and the config is written.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/LeiMirror.pm11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index d68cd6c1..c83386c6 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -12,8 +12,14 @@ use PublicInbox::Spawn qw(popen_rd spawn);
 sub do_finish_mirror { # dwaitpid callback
         my ($arg, $pid) = @_;
         my ($mrr, $lei) = @$arg;
-        if ($? == 0 && unlink("$mrr->{dst}/mirror.done")) {
+        my $f = "$mrr->{dst}/mirror.done";
+        if ($?) {
+                $lei->child_error($?);
+        } elsif (!unlink($f)) {
+                $lei->err("unlink($f): $!");
+        } else {
                 $lei->add_external_finish($mrr->{dst});
+                $lei->qerr("# mirrored $mrr->{src} => $mrr->{dst}");
         }
         $lei->dclose;
 }
@@ -262,8 +268,7 @@ sub do_mirror { # via wq_io_do
                 return start_clone_url($self) if $self->{src} =~ m!://!;
                 die "TODO: cloning local directories not supported, yet";
         };
-        return $lei->fail($@) if $@;
-        $lei->qerr("# mirrored $self->{src} => $self->{dst}");
+        $lei->fail($@) if $@;
 }
 
 sub start {