yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #11333
[Bug 1290487] [NEW] Libvirt native thread used for "forbidden" purposes
Public bug reported:
In the nova.virt.libvirt.driver.LibvirtDriver. _get_new_connection
method two different libvirt event handlers are registered, one for
lifecycle events (_event_lifecycle_callback) and one for connection
events (_close_callback). These callbacks are called by a native thread
that is continually calling libvirt.virEventRunDefaultImpl() in the
_native_thread method; the latter method's Docstring contains the
following note:
This is a native thread which runs the default
libvirt event loop implementation. This processes
any incoming async events from libvirtd and queues
them for later dispatch. This thread is only
permitted to use libvirt python APIs, and the
driver.queue_event method. In particular any use
of logging is forbidden, since it will confuse
eventlet's greenthread integration
while this rule is adhered to by the _event_lifecycle_callback method,
it is violated by _close_callback (the other callback) because it calls
the _set_host_enabled method which, among other things, writes to the
log.
The _close_callback method needs to be altered so that it does not
execute any logic that may interfere with eventlet's greenthread
integration.
** Affects: nova
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1290487
Title:
Libvirt native thread used for "forbidden" purposes
Status in OpenStack Compute (Nova):
New
Bug description:
In the nova.virt.libvirt.driver.LibvirtDriver. _get_new_connection
method two different libvirt event handlers are registered, one for
lifecycle events (_event_lifecycle_callback) and one for connection
events (_close_callback). These callbacks are called by a native
thread that is continually calling libvirt.virEventRunDefaultImpl() in
the _native_thread method; the latter method's Docstring contains the
following note:
This is a native thread which runs the default
libvirt event loop implementation. This processes
any incoming async events from libvirtd and queues
them for later dispatch. This thread is only
permitted to use libvirt python APIs, and the
driver.queue_event method. In particular any use
of logging is forbidden, since it will confuse
eventlet's greenthread integration
while this rule is adhered to by the _event_lifecycle_callback method,
it is violated by _close_callback (the other callback) because it
calls the _set_host_enabled method which, among other things, writes
to the log.
The _close_callback method needs to be altered so that it does not
execute any logic that may interfere with eventlet's greenthread
integration.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1290487/+subscriptions
Follow ups
References