So, to sum up:
* router update -> notification -> l3 agent < race condition > * Neutron API <- RPC sync_routers <- l3 agent < end race condition > * Neutron API -> return with empty address scopes, gw_port down -> l3 agent * Neutron API <- RPC get_agent_gateway_port <- l3 agent * Address scope mismatch -> no routes added
So, to sum up:
* router update -> notification -> l3 agent gateway_ port <- l3 agent
< race condition >
* Neutron API <- RPC sync_routers <- l3 agent
< end race condition >
* Neutron API -> return with empty address scopes, gw_port down -> l3 agent
* Neutron API <- RPC get_agent_
* Address scope mismatch -> no routes added