From b24d8afc77ebd8f758bee4ab675571644ee2650b Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 11 Jun 2018 17:48:08 -0400 Subject: [PATCH] Fix race condition and such --- VMInstance.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/VMInstance.py b/VMInstance.py index f6cdf1fe..ca920a9a 100644 --- a/VMInstance.py +++ b/VMInstance.py @@ -47,22 +47,24 @@ class VMInstance: def watch_hypervisor(data, stat, event=""): print(data.decode('ascii')) try: - self.hypervisor = data.decode('ascii') - self.state = self.zk.get('/domains/{}/state'.format(self.domuuid)) - self.manage_vm_state() - except: - pass + if self.hypervisor != data.decode('ascii'): + self.hypervisor = data.decode('ascii') + self.state = self.zk.get('/domains/{}/state'.format(self.domuuid))[0].decode('ascii') + self.manage_vm_state() + except Exception as e: + print(e) # Watch for changes to the state field in Zookeeper @zk.DataWatch('/domains/{}/state'.format(self.domuuid)) def watch_state(data, stat, event=""): print(data.decode('ascii')) try: - self.state = data.decode('ascii') - self.hypervisor = self.zk.get('/domains/{}/hypervisor'.format(self.domuuid)) - self.manage_vm_state() - except: - pass + if self.state != data.decode('ascii'): + self.state = data.decode('ascii') + self.hypervisor = self.zk.get('/domains/{}/hypervisor'.format(self.domuuid))[0].decode('ascii') + self.manage_vm_state() + except Exception as e: + print(e) # Get data functions def getstate(self):