diff --git a/src/config/api-server/vnc_cfg_ifmap.py b/src/config/api-server/vnc_cfg_ifmap.py index e0cf2e490ba..697d499c4a4 100644 --- a/src/config/api-server/vnc_cfg_ifmap.py +++ b/src/config/api-server/vnc_cfg_ifmap.py @@ -579,13 +579,24 @@ def _delete_id_self_meta(self, self_imid, meta_name): True) self._publish_to_ifmap_enqueue('delete', del_str) - # del meta from cache and del id if this was last meta - if meta_name: - del self._id_to_metas[self_imid][meta_name] - if not self._id_to_metas[self_imid]: + try: + + # del meta from cache and del id if this was last meta + if meta_name: + del self._id_to_metas[self_imid][meta_name] + if not self._id_to_metas[self_imid]: + del self._id_to_metas[self_imid] + else: del self._id_to_metas[self_imid] - else: - del self._id_to_metas[self_imid] + + except KeyError: + # Case of delete received for an id which we do not know about. + # Could be a case of duplicate delete. + # There is nothing for us to do here. Just log and proceed. + msg = "Delete received for unknown imid(%s) meta_name(%s)." % \ + (self_imid, meta_name) + self.config_log(msg, level=SandeshLevel.SYS_DEBUG) + # end _delete_id_self_meta def _delete_id_pair_meta_list(self, id1, meta_list):