Merge "Get rid of additional db contention on fetching VIP"

This commit is contained in:
Jenkins 2014-03-21 09:29:15 +00:00 committed by Gerrit Code Review
commit a742ca0011
1 changed files with 10 additions and 1 deletions

View File

@ -192,7 +192,16 @@ class LoadBalancerPluginDb(LoadBalancerPluginBase,
def update_status(self, context, model, id, status,
status_description=None):
with context.session.begin(subtransactions=True):
v_db = self._get_resource(context, model, id)
if issubclass(model, Vip):
try:
v_db = (self._model_query(context, model).
filter(model.id == id).
options(orm.noload('port')).
one())
except exc.NoResultFound:
raise loadbalancer.VipNotFound(vip_id=id)
else:
v_db = self._get_resource(context, model, id)
if v_db.status != status:
v_db.status = status
# update status_description in two cases: