Merge "Fix race conditions between API and worker DB calls"
This commit is contained in:
commit
f0d6624083
|
@ -426,8 +426,15 @@ class ControllerWorker(object):
|
||||||
:returns: None
|
:returns: None
|
||||||
:raises NoSuitablePool: Unable to find the node pool
|
:raises NoSuitablePool: Unable to find the node pool
|
||||||
"""
|
"""
|
||||||
pool = self._pool_repo.get(db_apis.get_session(),
|
db_member = self._member_repo.get(db_apis.get_session(),
|
||||||
id=member[constants.POOL_ID])
|
id=member[constants.MEMBER_ID])
|
||||||
|
if not db_member:
|
||||||
|
LOG.warning('Failed to fetch %s %s from DB. Retrying for up to '
|
||||||
|
'60 seconds.', 'l7member',
|
||||||
|
member[constants.MEMBER_ID])
|
||||||
|
raise db_exceptions.NoResultFound
|
||||||
|
|
||||||
|
pool = db_member.pool
|
||||||
load_balancer = pool.load_balancer
|
load_balancer = pool.load_balancer
|
||||||
provider_lb = provider_utils.db_loadbalancer_to_provider_loadbalancer(
|
provider_lb = provider_utils.db_loadbalancer_to_provider_loadbalancer(
|
||||||
load_balancer).to_dict()
|
load_balancer).to_dict()
|
||||||
|
@ -693,8 +700,15 @@ class ControllerWorker(object):
|
||||||
:returns: None
|
:returns: None
|
||||||
:raises NoResultFound: Unable to find the object
|
:raises NoResultFound: Unable to find the object
|
||||||
"""
|
"""
|
||||||
db_listener = self._listener_repo.get(
|
db_l7policy = self._l7policy_repo.get(
|
||||||
db_apis.get_session(), id=l7policy[constants.LISTENER_ID])
|
db_apis.get_session(), id=l7policy[constants.L7POLICY_ID])
|
||||||
|
if not db_l7policy:
|
||||||
|
LOG.warning('Failed to fetch %s %s from DB. Retrying for up to '
|
||||||
|
'60 seconds.', 'l7policy',
|
||||||
|
l7policy[constants.L7POLICY_ID])
|
||||||
|
raise db_exceptions.NoResultFound
|
||||||
|
|
||||||
|
db_listener = db_l7policy.listener
|
||||||
|
|
||||||
listeners_dicts = (
|
listeners_dicts = (
|
||||||
provider_utils.db_listeners_to_provider_dicts_list_of_dicts(
|
provider_utils.db_listeners_to_provider_dicts_list_of_dicts(
|
||||||
|
@ -767,8 +781,15 @@ class ControllerWorker(object):
|
||||||
:returns: None
|
:returns: None
|
||||||
:raises NoResultFound: Unable to find the object
|
:raises NoResultFound: Unable to find the object
|
||||||
"""
|
"""
|
||||||
db_l7policy = self._l7policy_repo.get(db_apis.get_session(),
|
db_l7rule = self._l7rule_repo.get(db_apis.get_session(),
|
||||||
id=l7rule[constants.L7POLICY_ID])
|
id=l7rule[constants.L7RULE_ID])
|
||||||
|
if not db_l7rule:
|
||||||
|
LOG.warning('Failed to fetch %s %s from DB. Retrying for up to '
|
||||||
|
'60 seconds.', 'l7rule',
|
||||||
|
l7rule[constants.L7RULE_ID])
|
||||||
|
raise db_exceptions.NoResultFound
|
||||||
|
|
||||||
|
db_l7policy = db_l7rule.l7policy
|
||||||
|
|
||||||
load_balancer = db_l7policy.listener.load_balancer
|
load_balancer = db_l7policy.listener.load_balancer
|
||||||
|
|
||||||
|
|
|
@ -983,6 +983,7 @@ class TestControllerWorker(base.TestCase):
|
||||||
constants.L7POLICY_ID: L7POLICY_ID,
|
constants.L7POLICY_ID: L7POLICY_ID,
|
||||||
constants.LISTENER_ID: LISTENER_ID
|
constants.LISTENER_ID: LISTENER_ID
|
||||||
}
|
}
|
||||||
|
mock_l7policy_repo_get.side_effect = [None, _l7policy_mock]
|
||||||
cw.create_l7policy(l7policy_mock)
|
cw.create_l7policy(l7policy_mock)
|
||||||
|
|
||||||
(cw.services_controller.run_poster.
|
(cw.services_controller.run_poster.
|
||||||
|
@ -1071,7 +1072,7 @@ class TestControllerWorker(base.TestCase):
|
||||||
mock_amp_repo_get):
|
mock_amp_repo_get):
|
||||||
|
|
||||||
_flow_mock.reset_mock()
|
_flow_mock.reset_mock()
|
||||||
mock_l7policy_repo_get.return_value = _l7policy_mock
|
mock_l7rule_repo_get.side_effect = [None, _l7rule_mock]
|
||||||
|
|
||||||
cw = controller_worker.ControllerWorker()
|
cw = controller_worker.ControllerWorker()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue