|
|
@@ -6,6 +6,10 @@ use warnings;
|
|
|
no warnings 'experimental';
|
|
|
use feature qw{signatures};
|
|
|
|
|
|
+use HTTP::Tiny::UNIX();
|
|
|
+use Trog::Log qw{WARN};
|
|
|
+use Trog::Config();
|
|
|
+
|
|
|
# Deal with Params which may or may not be arrays
|
|
|
sub coerce_array ($param) {
|
|
|
my $p = $param || [];
|
|
|
@@ -19,4 +23,18 @@ sub strip_and_trunc ($s) {
|
|
|
return substr $s, 0, 280;
|
|
|
}
|
|
|
|
|
|
+# Instruct the parent to restart. Normally this is HUP, but nginx-unit decides to be special.
|
|
|
+sub restart_parent ( $env ) {
|
|
|
+ if ($env->{PSGI_ENGINE} && $env->{PSGI_ENGINE} eq 'nginx-unit') {
|
|
|
+ my $conf = Trog::Config->get();
|
|
|
+ my $nginx_socket = $conf->param('nginx-unit.socket');
|
|
|
+ my $client = HTTP::Tiny::UNIX->new();
|
|
|
+ my $res = $client->request('GET', "http:$nginx_socket//control/applications/tcms/restart" );
|
|
|
+ WARN("could not reload application (got $res->{status} from nginx-unit)!") unless $res->{status} == 200;
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ my $parent = getppid;
|
|
|
+ kill 'HUP', $parent;
|
|
|
+}
|
|
|
+
|
|
|
1;
|