--- src/osaf/consensus/plugins/tcp/tcp.plugin | 26 +++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/src/osaf/consensus/plugins/tcp/tcp.plugin b/src/osaf/consensus/plugins/tcp/tcp.plugin index 06b542d16..98091668c 100755 --- a/src/osaf/consensus/plugins/tcp/tcp.plugin +++ b/src/osaf/consensus/plugins/tcp/tcp.plugin @@ -26,7 +26,6 @@ import syslog import threading -counter_run = False counter_time = 0.0 def time_counting(hb_interval): @@ -35,9 +34,9 @@ def time_counting(hb_interval): but if it is container, clock time still jump. This function to help know node is frozen or arbitrator server issue ''' - global counter_run, counter_time + global counter_time counter_time = 0.0 - while (counter_run): + while (True): time.sleep(hb_interval) counter_time += hb_interval @@ -494,34 +493,33 @@ class ArbitratorPlugin(object): return ret last_arb_timestamp = 0 - global counter_run, counter_time + last_counter_time = 0 + global counter_time counter = None while True: if key == self.takeover_request: if self.is_active() is False: # maybe a controller swap occurred break + if counter is None: + counter = threading.Thread( + target=time_counting, + args=(self.heartbeat_interval,)) + counter.setDaemon(True) + counter.start() while True: try: time_at_arb = self.proxy.heartbeat(self.hostname) - if counter is not None: - counter_run = False - counter.join() if (last_arb_timestamp != 0) and \ (time_at_arb - last_arb_timestamp > self.timeout): - if counter_time < self.timeout: + if counter_time - last_counter_time < self.timeout: syslog.syslog('VM/Container was frozen!') ret['code'] = 126 return ret syslog.syslog('Arb server issue?') raise socket.error('Arb server issue?') else: - counter = threading.Thread( - target=time_counting, - args=(self.heartbeat_interval,)) - counter_run = True - counter.setDaemon(True) - counter.start() + last_counter_time = counter_time last_arb_timestamp = time_at_arb break except socket.error: -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel