Never raise an exception in notify()
notify() is called from python-ovs code which is not built to recover from an exception in this user-overriden code. If there is an exception (e.g. the DB server is down when we process the hash ring), this exception can cause an unrecoverable error in processing OVSDB messages, rendering the neutron worker useless. Change-Id: I5f703d82175d71a222c76df37a82b5ccad890d14
This commit is contained in:
parent
f7743f4a98
commit
67e616b238
|
@ -720,6 +720,7 @@ class OvnIdlDistributedLock(BaseOvnIdl):
|
|||
self.driver.agent_chassis_table = 'Chassis_Private'
|
||||
|
||||
def notify(self, event, row, updates=None):
|
||||
try:
|
||||
self.handle_db_schema_changes(event, row)
|
||||
self.notify_handler.notify(event, row, updates, global_=True)
|
||||
try:
|
||||
|
@ -751,8 +752,11 @@ class OvnIdlDistributedLock(BaseOvnIdl):
|
|||
'handling event "%(event)s" for row %(row)s '
|
||||
'(table: %(table)s)',
|
||||
{'node': self._node_uuid, 'hostname': CONF.host,
|
||||
'event': event, 'row': row.uuid, 'table': row._table.name})
|
||||
'event': event, 'row': row.uuid,
|
||||
'table': row._table.name})
|
||||
self.notify_handler.notify(event, row, updates)
|
||||
except Exception as e:
|
||||
LOG.exception(e)
|
||||
|
||||
@abc.abstractmethod
|
||||
def post_connect(self):
|
||||
|
|
Loading…
Reference in New Issue