nix: fix postgrest-loadtest command
Uses python for sending SIGNIT cross-platform
This commit is contained in:
committed by
Steve Chavez
parent
82981a1a29
commit
7968b918ec
+17
-2
@@ -5,7 +5,6 @@
|
|||||||
, lib
|
, lib
|
||||||
, postgresqlVersions
|
, postgresqlVersions
|
||||||
, postgrest
|
, postgrest
|
||||||
, procps
|
|
||||||
, python3Packages
|
, python3Packages
|
||||||
, slocat
|
, slocat
|
||||||
, writeText
|
, writeText
|
||||||
@@ -330,6 +329,22 @@ let
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# Broadcast SIGINT to any running postgrest instances on the host. Uses python for cross-platform compatibility.
|
||||||
|
signalPostgrest =
|
||||||
|
writers.writePython3 "postgrest-signal-int"
|
||||||
|
{ libraries = [ python3Packages.psutil ]; }
|
||||||
|
''
|
||||||
|
import psutil
|
||||||
|
import signal
|
||||||
|
|
||||||
|
for proc in psutil.process_iter(["name"]):
|
||||||
|
try:
|
||||||
|
if proc.info["name"] == "postgrest":
|
||||||
|
proc.send_signal(signal.SIGINT)
|
||||||
|
except (psutil.NoSuchProcess, psutil.AccessDenied):
|
||||||
|
continue
|
||||||
|
'';
|
||||||
|
|
||||||
withPgrst =
|
withPgrst =
|
||||||
checkedShellScript
|
checkedShellScript
|
||||||
{
|
{
|
||||||
@@ -381,7 +396,7 @@ let
|
|||||||
# would reap neighbor postgrest instances as well, because INT is asking
|
# would reap neighbor postgrest instances as well, because INT is asking
|
||||||
# the process to terminate too.
|
# the process to terminate too.
|
||||||
# TODO: consider cgroups to make this cleaner
|
# TODO: consider cgroups to make this cleaner
|
||||||
${procps}/bin/pkill --echo --signal=INT --exact postgrest
|
${signalPostgrest}
|
||||||
kill "$pid" || true
|
kill "$pid" || true
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|||||||
Reference in New Issue
Block a user