[virt-tools-list] [PATCH 2/3] virt-manager: ignore VIR_ERR_NO_DOMAIN when a domain was just deleted
Giuseppe Scrivano
gscrivan at redhat.com
Fri Aug 9 12:18:55 UTC 2013
Some callbacks registered by `idle_add' could try to access a domain that
was just deleted. Detect these cases and don't propagate the exception.
Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>
---
NOTE:
The race situation appears quite seldom, for my tests I have created and
deleted a bunch of LXC application containers. I have noticed this issue
while I was debugging 985291.
virtManager/details.py | 11 +++++++++--
virtManager/domain.py | 2 +-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/virtManager/details.py b/virtManager/details.py
index 2f7e7d4..cb9ea7a 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -2635,8 +2635,15 @@ class vmmDetails(vmmGObjectUI):
# If the dialog is visible, we want to make sure the XML is always
# up to date
- if self.is_visible():
- self.vm.refresh_xml()
+ try:
+ if self.is_visible():
+ self.vm.refresh_xml()
+ except libvirt.libvirtError, e:
+ if (hasattr(libvirt, "VIR_ERR_NO_DOMAIN") and
+ e.get_error_code() == getattr(libvirt, "VIR_ERR_NO_DOMAIN")):
+ self.close()
+ return
+ raise
# Stats page needs to be refreshed every tick
if (page == PAGE_DETAILS and
diff --git a/virtManager/domain.py b/virtManager/domain.py
index de0df8a..bd04452 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1560,6 +1560,7 @@ class vmmDomain(vmmLibvirtObject):
"""
try:
info = self._backend.info()
+ self._update_status(info[0])
except libvirt.libvirtError, e:
if (hasattr(libvirt, "VIR_ERR_NO_DOMAIN") and
e.get_error_code() == getattr(libvirt, "VIR_ERR_NO_DOMAIN")):
@@ -1567,7 +1568,6 @@ class vmmDomain(vmmLibvirtObject):
return
raise
- self._update_status(info[0])
def _update_status(self, status):
"""
--
1.8.3.1
More information about the virt-tools-list
mailing list