From d133d1909f68582e741d25d46d4291a708e0b837 Mon Sep 17 00:00:00 2001 From: Eugine Blikh <bigbes@gmail.com> Date: Mon, 16 Sep 2013 14:20:16 +0400 Subject: [PATCH] Fix race condition --- test/lib/tarantool_server.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/lib/tarantool_server.py b/test/lib/tarantool_server.py index 39f5f4e0a9..95bda71397 100644 --- a/test/lib/tarantool_server.py +++ b/test/lib/tarantool_server.py @@ -4,6 +4,7 @@ import sys import glob import time import yaml +import errno import daemon import socket import signal @@ -520,7 +521,7 @@ class TarantoolServer(Server): else: self.process.wait() - self.wait_until_stopped() + self.wait_until_stopped(pid) # clean-up processs flags self.is_started = False self.process = None @@ -616,17 +617,17 @@ class TarantoolServer(Server): except socket.error as e: time.sleep(0.001) - def wait_until_stopped(self): + def wait_until_stopped(self, pid): """Wait until the server is stoped and has closed sockets""" while True: try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect(("localhost", self.port)) - sock.close() time.sleep(0.001) + os.kill(pid, 0) continue - except socket.error as e: - break + except OSError as err: + if err.errno == errno.ESRCH: + break + raise def find_tests(self, test_suite, suite_path): def patterned(test, patterns): -- GitLab