This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17125 )
Change subject: remote: Improve wrapper script handling proper exit of ssh-remote processes
......................................................................
remote: Improve wrapper script handling proper exit of ssh-remote processes
Improvements include:
* Avoid race condition between receiving signal and process not yet
started
* Make sure process is killed with -9 if process is still alive a while after
we killed it (SIGINT, SIGTERM). This is useful for processes which
sometimes hang during shutdown like srsue in some conditions.
Change-Id: I3c656b008a3c2b2bb453a59e51d338cb272fa50b
---
M src/osmo_gsm_tester/remote.py
1 file changed, 41 insertions(+), 12 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, approved
diff --git a/src/osmo_gsm_tester/remote.py b/src/osmo_gsm_tester/remote.py
index 771f2b8..65c621e 100644
--- a/src/osmo_gsm_tester/remote.py
+++ b/src/osmo_gsm_tester/remote.py
@@ -59,20 +59,49 @@
wrapper_script = self.run_dir.new_file(RemoteHost.WRAPPER_SCRIPT)
with open(wrapper_script, 'w') as f:
r = """#!/bin/bash
- mypid=0
- sign_handler() {
- sig=$1
- echo "received signal handler $sig, killing $mypid"
- kill $mypid
+ LOGFILE=/tmp/yes
+ kill_pid(){
+ mypid=$1
+ kill $mypid
+ if ! kill -0 $mypid; then
+ return
+ fi
+ echo "sleeping some time waiting for child to die..." >>$LOGFILE
+ sleep 5
+ if ! kill -0 $mypid; then
+ return
+ fi
+ echo "kill -9 the process and wait!" >>$LOGFILE
+ kill -9 $mypid
+ wait $mypid
}
- trap 'sign_handler SIGTERM' SIGTERM
- trap 'sign_handler SIGINT' SIGINT
- trap 'sign_handler SIGHUP' SIGHUP
+ prep_sighandler() {
+ unset term_child_pid
+ unset term_kill_needed
+ trap 'sign_handler SIGTERM' SIGTERM
+ trap 'sign_handler SIGINT' SIGINT
+ trap 'sign_handler SIGHUP' SIGHUP
+ echo "script started, traps set" >$LOGFILE
+ }
+ sign_handler() {
+ sig=$1
+ echo "$sig -> ${term_child_pid}" >>$LOGFILE
+ echo "received signal handler $sig, killing ${term_child_pid}" >>$LOGFILE
+ kill_pid ${term_child_pid}
+ }
+ wait_sighandler()
+ {
+ term_child_pid=$!
+ if [ "${term_kill_needed}" ]; then
+ kill_pid "${term_child_pid}"
+ fi
+ echo "waiting for ${term_child_pid}" >>$LOGFILE
+ wait ${term_child_pid}
+ echo "process ${term_child_pid} finished" >>$LOGFILE
+ }
+ prep_sighandler
$@ &
- mypid=$!
- echo "waiting for $mypid"
- wait $mypid
- echo "process $mypid finished"
+ wait_sighandler
"""
f.write(r)
st = os.stat(wrapper_script)
--
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17125
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: I3c656b008a3c2b2bb453a59e51d338cb272fa50b
Gerrit-Change-Number: 17125
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200211/2adb6fb0/attachment.htm>