Skip to content

Commit

Permalink
[backend] BSServer/BSStdServer: dump running pids on exit/restart
Browse files Browse the repository at this point in the history
  • Loading branch information
mlschroe committed Mar 24, 2023
1 parent c5f1c11 commit d2f5f71
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/backend/BSServer.pm
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,17 @@ sub maxchildreached {
}
}

sub dump_child_pids {
return unless $server;
return unless %{$server->{'chld'} || {}} || %{$server->{'chld2'} || {}};
print "Running processes:\n";
for my $n ('chld', 'chld2') {
my $out = '';
$out .= " $_:$server->{$n}->{$_}" for sort {$a <=> $b} keys %{$server->{$n} || {}};
print " $n:$out\n";
}
}

sub server {
my ($conf) = @_;

Expand Down Expand Up @@ -323,6 +334,10 @@ sub server {
my $clnt;
my $sock = $server->{'socket'};
my $sock2 = $server->{'socket2'};
$server->{'conf'} = $conf;
$server->{'chld'} = \%chld;
$server->{'chld2'} = \%chld2 if $sock2;

while (1) {
my $tout = $timeout || 5; # reap every 5 seconds
if ($conf->{'periodic'}) {
Expand Down
2 changes: 2 additions & 0 deletions src/backend/BSStdServer.pm
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,14 @@ sub periodic {
my ($conf) = @_;
my $rundir = $conf->{'rundir'};
if (-e "$rundir/$conf->{'name'}.exit") {
BSServer::dump_child_pids();
BSServer::msg("$conf->{'name'} exiting...");
unlink("$conf->{'ajaxsocketpath'}.lock") if $conf->{'ajaxsocketpath'};
unlink("$rundir/$conf->{'name'}.exit");
exit(0);
}
if (-e "$rundir/$conf->{'name'}.restart") {
BSServer::dump_child_pids();
BSServer::msg("$conf->{'name'} restarting...");
if (system($0, "--test")) {
BSServer::msg("$0 failed, aborting restart");
Expand Down

0 comments on commit d2f5f71

Please sign in to comment.