70 lines
2.6 KiB
Diff
70 lines
2.6 KiB
Diff
|
From 74e0b06cb64009b5253e8ed54b1e56f1343cb85c Mon Sep 17 00:00:00 2001
|
||
|
From: Cole Robinson <crobinso@redhat.com>
|
||
|
Date: Tue, 25 Feb 2014 15:17:34 -0500
|
||
|
Subject: [PATCH] engine: Fix closing connection when tick() fails (bz 1069351)
|
||
|
|
||
|
(cherry picked from commit ce64d037bff56db994fedd065a9a34b8e827dda2)
|
||
|
---
|
||
|
virtManager/engine.py | 39 ++++++++++++++++++++++++---------------
|
||
|
1 file changed, 24 insertions(+), 15 deletions(-)
|
||
|
|
||
|
diff --git a/virtManager/engine.py b/virtManager/engine.py
|
||
|
index cef3d20..0e5e15d 100644
|
||
|
--- a/virtManager/engine.py
|
||
|
+++ b/virtManager/engine.py
|
||
|
@@ -344,30 +344,39 @@ class vmmEngine(vmmGObject):
|
||
|
return 1
|
||
|
|
||
|
def _tick_single_conn(self, conn, kwargs):
|
||
|
+ e = None
|
||
|
try:
|
||
|
conn.tick(**kwargs)
|
||
|
except KeyboardInterrupt:
|
||
|
raise
|
||
|
- except libvirt.libvirtError, e:
|
||
|
- from_remote = getattr(libvirt, "VIR_FROM_REMOTE", None)
|
||
|
- from_rpc = getattr(libvirt, "VIR_FROM_RPC", None)
|
||
|
- sys_error = getattr(libvirt, "VIR_ERR_SYSTEM_ERROR", None)
|
||
|
+ except Exception, e:
|
||
|
+ pass
|
||
|
+
|
||
|
+ if e is None:
|
||
|
+ return
|
||
|
|
||
|
+ from_remote = getattr(libvirt, "VIR_FROM_REMOTE", None)
|
||
|
+ from_rpc = getattr(libvirt, "VIR_FROM_RPC", None)
|
||
|
+ sys_error = getattr(libvirt, "VIR_ERR_SYSTEM_ERROR", None)
|
||
|
+
|
||
|
+ dom = -1
|
||
|
+ code = -1
|
||
|
+ if isinstance(e, libvirt.libvirtError):
|
||
|
dom = e.get_error_domain()
|
||
|
code = e.get_error_code()
|
||
|
|
||
|
- if (dom in [from_remote, from_rpc] and
|
||
|
- code in [sys_error]):
|
||
|
- logging.exception("Could not refresh connection %s",
|
||
|
- conn.get_uri())
|
||
|
- logging.debug("Closing connection since libvirtd "
|
||
|
- "appears to have stopped")
|
||
|
- else:
|
||
|
- error_msg = _("Error polling connection '%s': %s") \
|
||
|
- % (conn.get_uri(), e)
|
||
|
- self.idle_add(lambda: self.err.show_err(error_msg))
|
||
|
+ if (dom in [from_remote, from_rpc] and
|
||
|
+ code in [sys_error]):
|
||
|
+ logging.exception("Could not refresh connection %s",
|
||
|
+ conn.get_uri())
|
||
|
+ logging.debug("Closing connection since libvirtd "
|
||
|
+ "appears to have stopped")
|
||
|
+ else:
|
||
|
+ error_msg = _("Error polling connection '%s': %s") \
|
||
|
+ % (conn.get_uri(), e)
|
||
|
+ self.idle_add(lambda: self.err.show_err(error_msg))
|
||
|
|
||
|
- self.idle_add(conn.close)
|
||
|
+ self.idle_add(conn.close)
|
||
|
|
||
|
|
||
|
def increment_window_counter(self, src):
|