From 017e956f4225cb4b1e49372a2a0e59ce9a9a4798 Mon Sep 17 00:00:00 2001 From: dineshb-jnpr Date: Wed, 26 Oct 2016 10:42:56 -0700 Subject: [PATCH] Gracefully handle duplicate delete requests. This code change is to handle any gracefully handle duplicate delete requests sent by external entities, in this case service monitor. This code change will log and handle the key not found excpetion and proceed. The service monitor, sending duplicate deletes is tracked by bug: 1636932 Change-Id: I606561ca0e3c570713b41c196325180a16f96987 closes-bug: #1635901 --- src/config/api-server/vnc_cfg_ifmap.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/config/api-server/vnc_cfg_ifmap.py b/src/config/api-server/vnc_cfg_ifmap.py index 1eb37119f3f..f730fded0be 100644 --- a/src/config/api-server/vnc_cfg_ifmap.py +++ b/src/config/api-server/vnc_cfg_ifmap.py @@ -652,13 +652,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):