← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1995972] [NEW] L3 router is doing schedule_routers when adding/removing external gateway

 

Public bug reported:

Hello all !

When I add or remove an external gateway on L3 router, neutron will
always choose new agents (candidates ) and try to bind the router to
them.

Of course it will realize afterwards that the router already has agents
and that it should not do it but it takes some time ( few seconds when
you have a lot of l3-agents ) to choose the agents and try to bind the
router on them.

Step to reproduce :
openstack router create router1
openstack router set --external-gateway Ext-Net router1


Logs that shows it : 

Unable to find a vacant binding_index for router <router-id> and agent
<agent_id> bind_router /opt/openstack/neutron/lib/python3.6/site-
packages/neutron/scheduler/l3_agent_scheduler.py:198

We are running Neutron openstack stein in HA configured

We can improve the creation time by setting schedule_routers to False in the routers_updated function : 
https://github.com/openstack/neutron/blob/master/neutron/db/l3_db.py#L2142-L2143

This will avoid going into : 
https://github.com/openstack/neutron/blob/master/neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py#L135

And then : 
https://github.com/openstack/neutron/blob/master/neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py#L97

And it will avoid going into `plugin.schedule_routers(adminContext,
router_ids)`

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

Title:
  L3 router is doing schedule_routers when adding/removing external
  gateway

Status in neutron:
  New

Bug description:
  Hello all !

  When I add or remove an external gateway on L3 router, neutron will
  always choose new agents (candidates ) and try to bind the router to
  them.

  Of course it will realize afterwards that the router already has
  agents and that it should not do it but it takes some time ( few
  seconds when you have a lot of l3-agents ) to choose the agents and
  try to bind the router on them.

  Step to reproduce :
  openstack router create router1
  openstack router set --external-gateway Ext-Net router1

  
  Logs that shows it : 

  Unable to find a vacant binding_index for router <router-id> and agent
  <agent_id> bind_router /opt/openstack/neutron/lib/python3.6/site-
  packages/neutron/scheduler/l3_agent_scheduler.py:198

  We are running Neutron openstack stein in HA configured

  We can improve the creation time by setting schedule_routers to False in the routers_updated function : 
  https://github.com/openstack/neutron/blob/master/neutron/db/l3_db.py#L2142-L2143

  This will avoid going into : 
  https://github.com/openstack/neutron/blob/master/neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py#L135

  And then : 
  https://github.com/openstack/neutron/blob/master/neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py#L97

  And it will avoid going into `plugin.schedule_routers(adminContext,
  router_ids)`

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