Event implementations need to be registered before a connection to the
Hypervisor is opened, otherwise event handling can be impaired (e.g.
delayed messages). This fact is referenced in an e-mail [1], but should
also be noted in the documentation of the registration functions.
[1]
https://www.redhat.com/archives/libvirt-users/2014-April/msg00011.html
---
src/util/virevent.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/util/virevent.c b/src/util/virevent.c
index 54b6396..e0fd35e 100644
--- a/src/util/virevent.c
+++ b/src/util/virevent.c
@@ -204,6 +204,9 @@ virEventRemoveTimeout(int timer)
* to integrate with the libglib2 event loop, or libevent
* or the QT event loop.
*
+ * For proper event handling, it is important that the event implementation
+ * is registered before a connection to the Hypervisor is opened.
+ *
* Use of the virEventAddHandle() and similar APIs require that the
* corresponding handler is registered. Use of the
* virConnectDomainEventRegisterAny() and similar APIs requires that
@@ -247,6 +250,9 @@ void virEventRegisterImpl(virEventAddHandleFunc addHandle,
* not have a need to integrate with an external event
* loop impl.
*
+ * For proper event handling, it is important that the event implementation
+ * is registered before a connection to the Hypervisor is opened.
+ *
* Once registered, the application has to invoke virEventRunDefaultImpl() in
* a loop to process events. Failure to do so may result in connections being
* closed unexpectedly as a result of keepalive timeout. The default
--
1.8.3.1