From d7289f75e8ffdc99d43cd562c98356c048af2519 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Mon, 9 Dec 2013 14:56:49 -0600 Subject: [PATCH] Auto-restart If /tmp/teuthology-restart-workers is newer than the running process, restart. Signed-off-by: Zack Cerza --- teuthology/queue.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/teuthology/queue.py b/teuthology/queue.py index d2da9b4770..c913aca517 100644 --- a/teuthology/queue.py +++ b/teuthology/queue.py @@ -7,21 +7,38 @@ import sys import tempfile import time import yaml - import beanstalkc +from datetime import datetime + from . import report from . import safepath from .config import config as teuth_config from .misc import read_config log = logging.getLogger(__name__) +start_time = datetime.utcnow() +restart_file_path = '/tmp/teuthology-restart-workers' -# simple flock class +def need_restart(): + if not os.path.exists(restart_file_path): + return False + if os.path.getmtime(restart_file_path) > start_time: + return True + else: + return False -class filelock(object): +def restart(): + log.info('Restarting...') + args = sys.argv[:] + args.insert(0, sys.executable) + os.execv(sys.executable, args) + + +class filelock(object): + # simple flock class def __init__(self, fn): self.fn = fn self.fd = None @@ -127,6 +144,9 @@ def worker(ctx): beanstalk.ignore('default') while True: + if need_restart(): + restart() + job = beanstalk.reserve(timeout=60) if job is None: continue -- 2.39.5