]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commit
L3 agent: paginate sync routers task
authorOleg Bondarev <obondarev@mirantis.com>
Tue, 13 Oct 2015 09:45:59 +0000 (12:45 +0300)
committerOleg Bondarev <obondarev@mirantis.com>
Tue, 12 Jan 2016 09:56:45 +0000 (12:56 +0300)
commit0e97feb0f30bc0ef6f4fe041cb41b7aa81042263
treef3632912bfff89bf2a3415f543153af244bff1b8
parent904cdc723b6da6638f9cd97047a0ef8ecc8c0da6
L3 agent: paginate sync routers task

In case there are thousands of routers attached to thousands of
networks, sync_routers request might take a long time and lead to timeout
on agent side, so agent initiate another resync. This may lead to an endless
loop causing server overload and agent not being able to sync state.

This patch makes l3 agent first check how many routers are assigned to
it and then start to fetch routers by chunks.
Initial chunk size is set to 256 but may be decreased dynamically in case
timeouts happen while waiting response from server.

This approach allows to reduce the load on server side and to speed up
resync on agent side by starting processing right after receiving
the first chunk.

Closes-Bug: #1516260
Change-Id: Id675910c2a0b862bfb9e6f4fdaf3cd9fe337e52f
neutron/agent/l3/agent.py
neutron/api/rpc/handlers/l3_rpc.py
neutron/db/l3_agentschedulers_db.py
neutron/tests/functional/agent/l3/test_legacy_router.py
neutron/tests/unit/agent/l3/test_agent.py