diff --git a/src/config/api-server/vnc_cfg_ifmap.py b/src/config/api-server/vnc_cfg_ifmap.py index e0cf2e490ba..f3bc4305691 100644 --- a/src/config/api-server/vnc_cfg_ifmap.py +++ b/src/config/api-server/vnc_cfg_ifmap.py @@ -575,17 +575,28 @@ def _build_request(self, id1_name, id2_name, meta_list, delete=False): def _delete_id_self_meta(self, self_imid, meta_name): mapclient = self._mapclient contrail_metaname = 'contrail:' + meta_name if meta_name else None - del_str = self._build_request(self_imid, 'self', [contrail_metaname], + del_str = self._build_request(self_imid, 'self', [contrail_metaname], 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):