Async notify neutron-server for HA states

RPC notifier method can sometimes be time-consuming,
this will cause other parallel processing resources
fail to send notifications in time. This patch changes
the notify to asynchronous.

Closes-Bug: #1824911
Change-Id: I3f555a0c78fbc02d8214f12b62c37d140bc71da1
(cherry picked from commit 0f471a47c0)
This commit is contained in:
LIU Yulong 2019-04-26 15:42:32 +08:00 committed by Swaminathan Vasudevan
parent de95bc658e
commit 88a362df09
2 changed files with 4 additions and 1 deletions

View File

@ -169,7 +169,7 @@ class L3PluginApi(object):
def update_ha_routers_states(self, context, states):
"""Update HA routers states."""
cctxt = self.client.prepare(version='1.5')
return cctxt.call(context, 'update_ha_routers_states',
return cctxt.cast(context, 'update_ha_routers_states',
host=self.host, states=states)
def process_prefix_update(self, context, prefix_update):

View File

@ -182,6 +182,9 @@ class AgentMixin(object):
ri.disable_radvd()
def notify_server(self, batched_events):
eventlet.spawn_n(self._notify_server, batched_events)
def _notify_server(self, batched_events):
translated_states = dict((router_id, TRANSLATION_MAP[state]) for
router_id, state in batched_events)
LOG.debug('Updating server with HA routers states %s',