summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-07-19 01:54:44 +0000
committerGerrit Code Review <review@openstack.org>2016-07-19 01:54:45 +0000
commit67c34607f29ba39bb0709bd31f31e784fa5d1af6 (patch)
tree069e5b916b69a22946b51db6c8f70606164dca4c
parent189d355b3ded10fad96761ba026dc82e082cab92 (diff)
parent85b29358765c202be4998dc88f4ac5b1f2861bf3 (diff)
downloadneutron-67c34607f29ba39bb0709bd31f31e784fa5d1af6.tar.gz
Merge "Use new DB context when checking if agent is online during rescheduling" into stable/liberty
-rw-r--r--neutron/db/l3_agentschedulers_db.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/neutron/db/l3_agentschedulers_db.py b/neutron/db/l3_agentschedulers_db.py
index c287b83619..580911d1ca 100644
--- a/neutron/db/l3_agentschedulers_db.py
+++ b/neutron/db/l3_agentschedulers_db.py
@@ -117,6 +117,10 @@ class L3AgentSchedulerDbMixin(l3agentscheduler.L3AgentSchedulerPluginBase,
if binding.l3_agent_id in agents_back_online:
continue
else:
+ # we need new context to make sure we use different DB
+ # transaction - otherwise we may fetch same agent record
+ # each time due to REPEATABLE_READ isolation level
+ context = n_ctx.get_admin_context()
agent = self._get_agent(context, binding.l3_agent_id)
if agent.is_active:
agents_back_online.add(binding.l3_agent_id)