From aeeb311eb0c0ff02016bc797d9ba67641021bdf6 Mon Sep 17 00:00:00 2001 From: dineshb-jnpr Date: Fri, 12 May 2017 16:02:11 -0700 Subject: [PATCH] Fix VM-Vrouter ref update race. When there is an add followed by delete, back-to-back, it is possible VNC layer may not have updated the VM with vrouter info, as that ref update is a seperate event. Since VM's are always expected to vrouter info, if the ref is missing, update that vrouter record in config db by reading from vnc. Change-Id: I1771bad79ea6f58a768d9481224456fe7089534e Closes-Bug: #1689905 --- src/container/kube-manager/kube_manager/vnc/vnc_pod.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/container/kube-manager/kube_manager/vnc/vnc_pod.py b/src/container/kube-manager/kube_manager/vnc/vnc_pod.py index 89b11e883dc..b5d5eb27994 100644 --- a/src/container/kube-manager/kube_manager/vnc/vnc_pod.py +++ b/src/container/kube-manager/kube_manager/vnc/vnc_pod.py @@ -396,6 +396,12 @@ def vnc_pod_delete(self, pod_id): if not vm: return + # If this VM's vrouter info is not available in our config db, + # then it is a case of race between delete and ref updates. + # So explicitly update this entry in config db. + if not vm.virtual_router: + vm.update() + self._clear_label_to_pod_cache(vm) if vm.virtual_router: