Pick stale amphora randomly

Avoid getting the same amphora all the time if its loadbalancer
stuck in PENDING state and could not be failovered.

Story: 2007340
Task: 38877

Change-Id: I2f680a00be695c3828166e6803882765af79b79e
(cherry picked from commit 0f7d03feca)
This commit is contained in:
Ann Kamyshnikova 2020-03-06 15:20:50 +04:00 committed by Ann Taraday
parent 3b213f38a0
commit a0f75b10ed
1 changed files with 3 additions and 1 deletions

View File

@ -29,6 +29,7 @@ from oslo_utils import uuidutils
from sqlalchemy.orm import joinedload from sqlalchemy.orm import joinedload
from sqlalchemy.orm import noload from sqlalchemy.orm import noload
from sqlalchemy.orm import subqueryload from sqlalchemy.orm import subqueryload
from sqlalchemy.sql import func
from octavia.common import constants as consts from octavia.common import constants as consts
from octavia.common import data_models from octavia.common import data_models
@ -1398,7 +1399,8 @@ class AmphoraHealthRepository(BaseRepository):
amp = session.query(self.model_class).with_for_update().filter_by( amp = session.query(self.model_class).with_for_update().filter_by(
busy=False).filter( busy=False).filter(
self.model_class.last_update < expired_time).first() self.model_class.last_update < expired_time).order_by(
func.random()).first()
if amp is None: if amp is None:
return None return None