[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Remove the watch on the /vm/<uuid> path when rebooting or migrating. We don't
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID d581e11e247c72ac48ae5be69fd5c08a823dd655 # Parent f23db20517850e84fbc40fe3c09211d9f5defa39 Remove the watch on the /vm/<uuid> path when rebooting or migrating. We don't want to end up with multiple watches on the same path, otherwise we get a watch event storm after many such reboots or migrates. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r f23db2051785 -r d581e11e247c tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Dec 2 15:35:22 2005 +++ b/tools/python/xen/xend/XendDomainInfo.py Fri Dec 2 15:36:39 2005 @@ -775,7 +775,10 @@ if reason == 'suspend': self.state_set(STATE_DOM_SHUTDOWN) # Don't destroy the domain. XendCheckpoint will do - # this once it has finished. + # this once it has finished. However, stop watching + # the VM path now, otherwise we will end up with one + # watch for the old domain, and one for the new. + self.unwatchVm() elif reason in ['poweroff', 'reboot']: restart_reason = reason else: @@ -1185,18 +1188,31 @@ def cleanupVm(self): """Cleanup VM resources. Idempotent. Nothrow guarantee.""" + self.unwatchVm() + + try: + self.removeVm() + except: + log.exception("Removing VM path failed.") + + + ## private: + + def unwatchVm(self): + """Remove the watch on the VM path, if any. Idempotent. Nothrow + guarantee.""" + try: try: if self.vmWatch: self.vmWatch.unwatch() + finally: self.vmWatch = None - except: - log.exception("Unwatching VM path failed.") - - self.removeVm() except: - log.exception("Removing VM path failed.") - + log.exception("Unwatching VM path failed.") + + + ## public: def destroy(self): """Cleanup VM and destroy domain. Nothrow guarantee.""" @@ -1351,6 +1367,7 @@ if rename: self.preserveForRestart() else: + self.unwatchVm() self.destroyDomain() # new_dom's VM will be the same as this domain's VM, except where @@ -1387,6 +1404,7 @@ log.info("Renaming dead domain %s (%d, %s) to %s (%s).", self.info['name'], self.domid, self.info['uuid'], new_name, new_uuid) + self.unwatchVm() self.release_devices() self.info['name'] = new_name self.info['uuid'] = new_uuid @@ -1398,6 +1416,7 @@ def preserve(self): log.info("Preserving dead domain %s (%d).", self.info['name'], self.domid) + self.unwatchVm() self.storeDom('xend/shutdown_completed', 'True') self.state_set(STATE_DOM_SHUTDOWN) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |