← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1301035] [NEW] Nova notifier thread does not run in rpc_worker sub-processes

 

Public bug reported:

This reported to me today by Maru.  When an rpc worker is spawned as a
sub-process, that happens after the nova notifier thread has already
started.

eventlet.hubs.use_hub() is the call in
neutron/openstack/common/service.py that causes all thread execution to
stop.

>From the event let documentation:  "Make sure to do this before the
application starts doing any I/O! Calling use_hub completely eliminates
the old hub, and any file descriptors or timers that it had been
managing will be forgotten."

Maru's observation is that this means that thread should not spawn
before forking the process if they need to run in the child process.  I
agree.

The reason that threads spawn is that the plugin gets loaded prior to
forking and the thread for the nova notifier is started in the __init__
method of a sub-class of the plugin.

** Affects: neutron
     Importance: Undecided
     Assignee: Carl Baldwin (carl-baldwin)
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1301035

Title:
  Nova notifier thread does not run in rpc_worker sub-processes

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  This reported to me today by Maru.  When an rpc worker is spawned as a
  sub-process, that happens after the nova notifier thread has already
  started.

  eventlet.hubs.use_hub() is the call in
  neutron/openstack/common/service.py that causes all thread execution
  to stop.

  From the event let documentation:  "Make sure to do this before the
  application starts doing any I/O! Calling use_hub completely
  eliminates the old hub, and any file descriptors or timers that it had
  been managing will be forgotten."

  Maru's observation is that this means that thread should not spawn
  before forking the process if they need to run in the child process.
  I agree.

  The reason that threads spawn is that the plugin gets loaded prior to
  forking and the thread for the nova notifier is started in the
  __init__ method of a sub-class of the plugin.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1301035/+subscriptions


Follow ups

References