From 9f61d853b6fcf5d5cb28a2cd56106c03a805dc5a Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Mon, 10 Mar 2014 09:47:51 -0400 Subject: [PATCH] connection: Handle errors when deregistering events on close (bz #1069351) --- ...e-errors-when-deregistering-events-o.patch | 54 +++++++++++++++++++ virt-manager.spec | 11 +++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 0018-connection-Handle-errors-when-deregistering-events-o.patch diff --git a/0018-connection-Handle-errors-when-deregistering-events-o.patch b/0018-connection-Handle-errors-when-deregistering-events-o.patch new file mode 100644 index 0000000..84d688c --- /dev/null +++ b/0018-connection-Handle-errors-when-deregistering-events-o.patch @@ -0,0 +1,54 @@ +From daeba426032fa48dec96ecbc5106113152504eb0 Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Mon, 10 Mar 2014 09:33:04 -0400 +Subject: [PATCH] connection: Handle errors when deregistering events on close + (bz 1069351) + +Otherwise this interrupts the close/cleanup routine, and the connection +never appears to disconnect in the UI. This causes error dialog spamming +when libvirtd goes down. + +(cherry picked from commit 081e34715ffa5a210e1e0c8670fe3a1a3ec5180b) +--- + virtManager/connection.py | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +diff --git a/virtManager/connection.py b/virtManager/connection.py +index 57e143d..4c034b8 100644 +--- a/virtManager/connection.py ++++ b/virtManager/connection.py +@@ -929,16 +929,25 @@ class vmmConnection(vmmGObject): + def close(self): + def cleanup(devs): + for dev in devs.values(): +- dev.cleanup() +- +- if not self._backend.is_closed(): +- if self._domain_cb_id is not None: +- self._backend.domainEventDeregisterAny(self._domain_cb_id) +- self._domain_cb_id = None ++ try: ++ dev.cleanup() ++ except: ++ logging.debug("Failed to cleanup %s", exc_info=True) + +- if self._network_cb_id is not None: +- self._backend.networkEventDeregisterAny(self._network_cb_id) +- self._network_cb_id = None ++ try: ++ if not self._backend.is_closed(): ++ if self._domain_cb_id is not None: ++ self._backend.domainEventDeregisterAny( ++ self._domain_cb_id) ++ self._domain_cb_id = None ++ ++ if self._network_cb_id is not None: ++ self._backend.networkEventDeregisterAny( ++ self._network_cb_id) ++ self._network_cb_id = None ++ except: ++ logging.debug("Failed to deregister events in conn cleanup", ++ exc_info=True) + + self._backend.close() + self.record = [] diff --git a/virt-manager.spec b/virt-manager.spec index e7a819e..8889836 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -20,7 +20,7 @@ %define _version 1.0.0 -%define _release 5 +%define _release 6 # This macro is used for the continuous automated builds. It just @@ -70,6 +70,9 @@ Patch0015: 0015-xmlbuilder-Log-broken-XML-if-we-can-t-parse-it.patch Patch0016: 0016-xmlbuilder-Actually-import-logging.patch # addhardware: Fix adding disk through 'customize' dialog (bz #1073808) Patch0017: 0017-addhardware-Fix-adding-disk-through-customize-dialog.patch +# connection: Handle errors when deregistering events on close (bz +# #1069351) +Patch0018: 0018-connection-Handle-errors-when-deregistering-events-o.patch BuildArch: noarch @@ -166,6 +169,9 @@ machine). %patch0016 -p1 # addhardware: Fix adding disk through 'customize' dialog (bz #1073808) %patch0017 -p1 +# connection: Handle errors when deregistering events on close (bz +# #1069351) +%patch0018 -p1 %build %if %{qemu_user} @@ -275,6 +281,9 @@ fi %changelog +* Mon Mar 10 2014 Cole Robinson - 1.0.0-6 +- connection: Handle errors when deregistering events on close (bz #1069351) + * Fri Mar 07 2014 Cole Robinson - 1.0.0-5 - addhardware: Fix adding disk through 'customize' dialog (bz #1073808)