← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2077790] [NEW] [eventlet] RPC handler thread model is incompatible with eventlet

 

Public bug reported:

The RPC handler class ``_ObjectChangeHandler``, that is instantiated in
``OVOServerRpcInterface``, is not eventlet compatible.

The ``OVOServerRpcInterface`` class is in charge of receiving the
resource events (port, network, SG, etc.) and send this update via RPC
to the listeners (agents like OVS agent or DHCP agent). Since [1], we
create a single long running thread that reads the stored events and
sends the RPC message (``RPCClient.cast`` because it is not expected a
reply).

Although this architecture is correct, it is not fully compatible with
eventlet. Since [2] and the upper patches testing this patch, the OVS
jobs (that use RPC between the server and the agents) are randomly
failing. This is more frequently with the SG API operations (SG rule
addition and deletion).

This bug proposes to make the event RPC cast synchronous with the API
call, avoiding using a thread to collect and send the RPC messages. Once
eventlet is removed from the OpenStack project, we'll be able to use the
previous model.

POC patch: https://review.opendev.org/c/openstack/neutron/+/926922
Testing patch: https://review.opendev.org/c/openstack/neutron/+/926788

[1]https://review.opendev.org/c/openstack/neutron/+/788510
[2]https://review.opendev.org/c/openstack/neutron/+/925376

** Affects: neutron
     Importance: Undecided
         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/2077790

Title:
  [eventlet] RPC handler thread model is incompatible with eventlet

Status in neutron:
  New

Bug description:
  The RPC handler class ``_ObjectChangeHandler``, that is instantiated
  in ``OVOServerRpcInterface``, is not eventlet compatible.

  The ``OVOServerRpcInterface`` class is in charge of receiving the
  resource events (port, network, SG, etc.) and send this update via RPC
  to the listeners (agents like OVS agent or DHCP agent). Since [1], we
  create a single long running thread that reads the stored events and
  sends the RPC message (``RPCClient.cast`` because it is not expected a
  reply).

  Although this architecture is correct, it is not fully compatible with
  eventlet. Since [2] and the upper patches testing this patch, the OVS
  jobs (that use RPC between the server and the agents) are randomly
  failing. This is more frequently with the SG API operations (SG rule
  addition and deletion).

  This bug proposes to make the event RPC cast synchronous with the API
  call, avoiding using a thread to collect and send the RPC messages.
  Once eventlet is removed from the OpenStack project, we'll be able to
  use the previous model.

  POC patch: https://review.opendev.org/c/openstack/neutron/+/926922
  Testing patch: https://review.opendev.org/c/openstack/neutron/+/926788

  [1]https://review.opendev.org/c/openstack/neutron/+/788510
  [2]https://review.opendev.org/c/openstack/neutron/+/925376

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



Follow ups