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/.
Neels Hofmeyr gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/1936 osmoutil: end_proc: wait for term in a loop Allows a minuscule first wait_time, and is tolerant for processes that take longer to terminate. Actually all of our current processes are very fast to terminate. This patch was created while looking for a different problem, now that it's there we might as well keep it. Change-Id: I98849e4550116c5666fdf6f5d4cbb576ffa3e14a --- M osmopy/osmoutil.py 1 file changed, 19 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/python/osmo-python-tests refs/changes/36/1936/1 diff --git a/osmopy/osmoutil.py b/osmopy/osmoutil.py index faedc43..8f0369b 100755 --- a/osmopy/osmoutil.py +++ b/osmopy/osmoutil.py @@ -47,12 +47,27 @@ return proc.terminate() - time.sleep(.01) - rc = proc.poll() - if rc is None: + time_to_wait_for_term = 5 + wait_step = 0.001 + waited_time = 0 + while True: + # poll returns None if proc is still running + rc = proc.poll() + if rc is not None: + break + waited_time += wait_step + # make wait_step approach 1.0 + wait_step = (1. + 5. * wait_step) / 6. + if waited_time >= time_to_wait_for_term: + break + time.sleep(wait_step) + + if proc.poll() is None: # termination seems to be slower than that, let's just kill - print "Killed child process" proc.kill() + print "Killed child process" + elif waited_time > .002: + print "Terminating took %.3fs" % waited_time proc.wait() -- To view, visit https://gerrit.osmocom.org/1936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I98849e4550116c5666fdf6f5d4cbb576ffa3e14a Gerrit-PatchSet: 1 Gerrit-Project: python/osmo-python-tests Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>