]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei: don't drop WQ workers on normal exit
authorEric Wong <e@80x24.org>
Sat, 5 Jun 2021 21:06:06 +0000 (21:06 +0000)
committerEric Wong <e@80x24.org>
Sun, 6 Jun 2021 17:51:24 +0000 (17:51 +0000)
This is dangerous and causes race conditions on commands
which utilize multiple workqueues.

lib/PublicInbox/LEI.pm

index 2dd21fc69a4492daf820069d0efd52104a3f0395..8adf70faf2d70dbcf629e103bdf9fd589b2673da 100644 (file)
@@ -480,6 +480,7 @@ sub sigint_reap {
 
 sub fail ($$;$) {
        my ($self, $buf, $exit_code) = @_;
+       $self->{failed}++;
        err($self, $buf) if defined $buf;
        # calls fail_handler:
        $self->{pkt_op_p}->pkt_do('!') if $self->{pkt_op_p};
@@ -1043,7 +1044,7 @@ sub accept_dispatch { # Listener {post_accept} callback
 sub dclose {
        my ($self) = @_;
        delete $self->{-progress};
-       _drop_wq($self);
+       _drop_wq($self) if $self->{failed};
        close(delete $self->{1}) if $self->{1}; # may reap_compress
        $self->close if $self->{-event_init_done}; # PublicInbox::DS::close
 }