Change in vdsm[master]: vm: serialize destroy() and creation
fromani at redhat.com
fromani at redhat.com
Wed Mar 23 17:10:23 UTC 2016
Francesco Romani has uploaded a new change for review.
Change subject: vm: serialize destroy() and creation
......................................................................
vm: serialize destroy() and creation
Change-Id: I234922e46791f5baf46fcb5c790a9d386ac92371
Signed-off-by: Francesco Romani <fromani at redhat.com>
---
M vdsm/virt/vm.py
1 file changed, 9 insertions(+), 9 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/50/55150/1
diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py
index 60d17e2..5950d1e 100644
--- a/vdsm/virt/vm.py
+++ b/vdsm/virt/vm.py
@@ -84,6 +84,10 @@
from .vmxml import METADATA_VM_TUNE_PREFIX
+# in seconds, just selected "big enough" random value
+_DESTROY_STARTUP_TIMEOUT = 30
+
+
DEFAULT_BRIDGE = config.get("vars", "default_bridge")
# A libvirt constant for undefined cpu quota
@@ -303,6 +307,7 @@
self._numaInfo = {}
self._vmJobs = None
self._clientPort = ''
+ self._created = threading.Event()
@property
def start_time(self):
@@ -751,6 +756,7 @@
self.log.exception("The vm start process failed")
self.setDownStatus(ERROR, vmexitreason.GENERIC_ERROR, str(e))
finally:
+ self._created.set()
if acquired:
self.log.debug('Releasing incoming migration semaphore')
migration.incomingMigrations.release()
@@ -1744,15 +1750,6 @@
uuidPath, name)
def _domDependentInit(self):
- if self._destroyed.is_set():
- # reaching here means that Vm.destroy() was called before we could
- # handle it. We must handle it now
- try:
- self._dom.destroy()
- except Exception:
- pass
- raise Exception('destroy() called before Vm started')
-
if not self._dom.connected:
raise MissingLibvirtDomainError(vmexitreason.LIBVIRT_START_FAILED)
@@ -3884,6 +3881,9 @@
def destroy(self):
self.log.debug('destroy Called')
+ if not self._created.wait(_DESTROY_STARTUP_TIMEOT):
+ self.log.warning('VM still booting, timeout reached')
+ return response.error('unavail')
result = self.doDestroy()
if response.is_error(result):
--
To view, visit https://gerrit.ovirt.org/55150
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I234922e46791f5baf46fcb5c790a9d386ac92371
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani at redhat.com>
More information about the vdsm-patches
mailing list