X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLEI.pm;h=a258722e04d582724e567011aabd6c321e16c3a7;hb=b584a53f053a7629e656df00ccf6f168c260af48;hp=098a45ba585decba83030d4c63033190cc249aff;hpb=b81620fe98e17acddbdef47fc4709815bb7ac7cd;p=public-inbox.git diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 098a45ba..a258722e 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -605,16 +605,19 @@ sub incr { $self->{counters}->{$field} += $nr; } +sub pkt_ops { + my ($lei, $ops) = @_; + $ops->{'!'} = [ \&fail_handler, $lei ]; + $ops->{'|'} = [ \&sigpipe_handler, $lei ]; + $ops->{x_it} = [ \&x_it, $lei ]; + $ops->{child_error} = [ \&child_error, $lei ]; + $ops->{incr} = [ \&incr, $lei ]; + $ops; +} + sub workers_start { my ($lei, $wq, $jobs, $ops, $flds) = @_; - $ops = { - '!' => [ \&fail_handler, $lei ], - '|' => [ \&sigpipe_handler, $lei ], - 'x_it' => [ \&x_it, $lei ], - 'child_error' => [ \&child_error, $lei ], - 'incr' => [ \&incr, $lei ], - ($ops ? %$ops : ()), - }; + $ops = pkt_ops($lei, { ($ops ? %$ops : ()) }); $ops->{''} //= [ $wq->can('_lei_wq_eof') || \&wq_eof, $lei ]; my $end = $lei->pkt_op_pair; my $ident = $wq->{-wq_ident} // "lei-$lei->{cmd} worker"; @@ -1330,6 +1333,7 @@ sub lazy_start { open STDOUT, '>&STDIN' or die "redirect stdout failed: $!"; # $daemon pipe to `lei' closed, main loop begins: PublicInbox::DS->EventLoop; + dump_and_clear_log(); exit($exit_code // 0); }