We can just EOF the pipe, and instead rely on per-class
error handling to deal with uncommitted transactions and
what not.
sub ipc_atfork_parent {}
sub ipc_atfork_child {}
-# should only be called inside the worker process
-sub ipc_worker_exit {
- my (undef, $code) = @_;
- exit($code);
-}
-
# idempotent, can be called regardless of whether worker is active or not
sub ipc_worker_stop {
my ($self) = @_;
return; # idempotent
}
die 'no PID with IPC pipes' unless $pid;
- _send_rec($w_req, [ undef, 'ipc_worker_exit', 0 ]);
$w_req = $r_res = undef;
- # allow any sibling to send ipc_worker_exit, but siblings can't wait
return if $$ != $ppid;
dwaitpid($pid, \&ipc_worker_reap, $self);
}