Comment 0 for bug 1597561

Carl Baldwin (carl-baldwin) wrote :

At the end of deleting a GW port for a router, l3_dvr_db.py will look for any
more router gw ports on the external network. If there are none, then it calls
delete_floatingip_agent_gateway_port [1]. This should fan out to all l3 agents
on all compute nodes [2]. Each agent should then delete the port [3].

In some cases, the fip namespace and the gateway port are not deleted. I don't
know where things are going wrong. This seems pretty straight-forward. Do
some agents miss the fanout? We know at least some of them are getting the
fanout. So, it is definitely being sent.

When I checked, the port had been deleted from the database. The fact that a
new one is created supports this because if one existed in the DB already then
it would be returned.

[1] https://github.com/openstack/neutron/blob/d3cd20151a67289f023875de682a6d3c4ccee645/neutron/db/l3_dvr_db.py#L179
[2] https://github.com/openstack/neutron/blob/d3cd20151a67289f023875de682a6d3c4ccee645/neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py#L166
[3] https://github.com/openstack/neutron/blob/d3cd20151a67289f023875de682a6d3c4ccee645/neutron/agent/l3/dvr.py#L73