Skip to content

Commit

Permalink
Handle NoIdError in vnc_subscribe callback
Browse files Browse the repository at this point in the history
Under load SVC can receive notifications for resources
that don't exist anymore.

Change-Id: I6c47286e421fe932702abbbddd0b7a4a6bcc1794
Closes-Bug: #1576627
  • Loading branch information
eonpatapon committed Jun 20, 2016
1 parent c542960 commit d3d0b09
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions src/config/svc-monitor/svc_monitor/svc_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,25 +218,26 @@ def _vnc_subscribe_actions(self, oper_info):
obj_class = DBBase._OBJ_TYPE_MAP.get(obj_type)
if obj_class is None:
return
obj_id = oper_info['uuid']
dependency_tracker = DependencyTracker(DBBase._OBJ_TYPE_MAP,
self._REACTION_MAP)

if oper_info['oper'] == 'CREATE' or oper_info['oper'] == 'UPDATE':
dependency_tracker = DependencyTracker(DBBase._OBJ_TYPE_MAP,
self._REACTION_MAP)
obj_id = oper_info['uuid']
obj = obj_class.get(obj_id)
if oper_info['oper'] == 'CREATE':
obj = obj_class.locate(obj_id)
if obj is not None:
dependency_tracker.evaluate(obj_type, obj)
else:
obj = obj_class.locate(obj_id)
obj.update()
dependency_tracker.evaluate(obj_type, obj)
elif oper_info['oper'] == 'UPDATE':
obj = obj_class.get(obj_id)
if obj is not None:
try:
obj.update()
dependency_tracker.evaluate(obj_type, obj)
except exceptions.NoIdError:
obj = None
elif oper_info['oper'] == 'DELETE':
obj_id = oper_info['uuid']
obj = obj_class.get(obj_id)
if obj is None:
return
dependency_tracker = DependencyTracker(DBBase._OBJ_TYPE_MAP,
self._REACTION_MAP)
dependency_tracker.evaluate(obj_type, obj)
obj_class.delete(obj_id)
else:
Expand All @@ -246,8 +247,9 @@ def _vnc_subscribe_actions(self, oper_info):
return

if obj is None:
self.config_log('Error while accessing %s uuid %s' % (
obj_type, obj_id))
self.config_log('%s uuid %s has vanished' % (
obj_type, obj_id),
level=SandeshLevel.SYS_WARN)
return

except Exception:
Expand Down

0 comments on commit d3d0b09

Please sign in to comment.