From d9b83cf9c4ef6b05db911a2009c771f325273309 Mon Sep 17 00:00:00 2001 From: Thibault VINCENT <thibault.vincent@smartjog.com> Date: Thu, 12 May 2011 15:50:43 +0200 Subject: [PATCH] fix: scheduler timer locking, tried to correct problems after successive reconnections --- ccnode/ccnode.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/ccnode/ccnode.py b/ccnode/ccnode.py index b0b798e..d1f8c5a 100644 --- a/ccnode/ccnode.py +++ b/ccnode/ccnode.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import logging -from threading import Timer, Lock +from threading import Timer, Lock, Event from time import sleep from sjrpc.client import SimpleRpcClient from sjrpc.utils import ConnectionProxy @@ -18,6 +18,7 @@ class CCNode(object): ''' self._scheduler_timer = None self._scheduler_mutex = Lock() + self._scheduler_stopped = Event() self._handler = handlers.NodeHandler(self, hypervisor, exec_cmd, force_xen) self._manager = SimpleRpcClient.from_addr(server, port, enable_ssl=True, @@ -27,7 +28,12 @@ class CCNode(object): def run(self): ''' ''' - self._manager.run() + try: + self._manager.run() + except: + pass # FIXME + finally: + self._scheduler_stopped.set() def authentify(self, login, password): ''' @@ -62,9 +68,10 @@ class CCNode(object): ''' ''' with self._scheduler_mutex: - self._handler.scheduler_run() - sleep(0.1) - self._scheduler_rearm() + if not self._scheduler_stopped.is_set(): + self._handler.scheduler_run() + sleep(0.1) + self._scheduler_rearm() def get_server(self): ''' -- GitLab