Public bug reported:

The ML2 plugin initializes some RPC notifiers (for agents), which consequently 
declare some exchanges in the RabbitMQ server.
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/rpc.py#L456

Two of these exchanges are:
- `q-agent-notifier-port-update_fanout`
- `q-agent-notifier-port-delete_fanout`

For the `q-agent-notifier-port-update_fanout` exchange, some agents like 
linuxbridge, macvtap and sriovnic create the corresponding consumers.
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py#L218
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/macvtap/agent/macvtap_neutron_agent.py#L149
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py#L830

For the `q-agent-notifier-port-delete_fanout exchange`, I cannot find
any agent that implements the corresponding consumer. If agents do not
implement that consumer, the corresponding queue is not created in
RabbitMQ (and therefore there is no exchange-to-queue binding).
Consequently, when a Neutron port (when using OVS mech driver, for
example) is deleted, a message is sent to the `q-agent-notifier-port-
delete_fanout` exchange, and the broker considers it an unroutable
message and drops it.

In some large environments, if the necessary queues/consumers are not present, 
deleting or updating Neutron ports can lead to an increase in RabbitMQ's 
unroutable messages metrics, which may erroneously suggest performance issues 
with the RabbitMQ server.
Is there a way to avoid initializing RabbitMQ exchanges that will not actually 
be used?

** 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/2080314

Title:
  ML2 plugin: No consumers for q-agent-notifier-port-delete_fanout
  exchange result in unroutable RabbitMQ messages

Status in neutron:
  New

Bug description:
  The ML2 plugin initializes some RPC notifiers (for agents), which 
consequently declare some exchanges in the RabbitMQ server.
  
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/rpc.py#L456

  Two of these exchanges are:
  - `q-agent-notifier-port-update_fanout`
  - `q-agent-notifier-port-delete_fanout`

  For the `q-agent-notifier-port-update_fanout` exchange, some agents like 
linuxbridge, macvtap and sriovnic create the corresponding consumers.
  
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py#L218
  
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/macvtap/agent/macvtap_neutron_agent.py#L149
  
https://opendev.org/openstack/neutron/src/commit/dd3853007bb36999d391a823505fbe0c279d2317/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py#L830

  For the `q-agent-notifier-port-delete_fanout exchange`, I cannot find
  any agent that implements the corresponding consumer. If agents do not
  implement that consumer, the corresponding queue is not created in
  RabbitMQ (and therefore there is no exchange-to-queue binding).
  Consequently, when a Neutron port (when using OVS mech driver, for
  example) is deleted, a message is sent to the `q-agent-notifier-port-
  delete_fanout` exchange, and the broker considers it an unroutable
  message and drops it.

  In some large environments, if the necessary queues/consumers are not 
present, deleting or updating Neutron ports can lead to an increase in 
RabbitMQ's unroutable messages metrics, which may erroneously suggest 
performance issues with the RabbitMQ server.
  Is there a way to avoid initializing RabbitMQ exchanges that will not 
actually be used?

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


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to