소스 검색

Merge pull request #1000 from ggaaooppeenngg/fix-delete-handler

subnet: handle unknown state in delete event
Tom Denham 6 년 전
부모
커밋
c7ee1fc9f9
1개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      subnet/kube/kube.go

+ 15 - 0
subnet/kube/kube.go

@@ -163,6 +163,21 @@ func newKubeSubnetManager(c clientset.Interface, sc *subnet.Config, nodeName str
 			},
 			},
 			UpdateFunc: ksm.handleUpdateLeaseEvent,
 			UpdateFunc: ksm.handleUpdateLeaseEvent,
 			DeleteFunc: func(obj interface{}) {
 			DeleteFunc: func(obj interface{}) {
+				node, isNode := obj.(*v1.Node)
+				// We can get DeletedFinalStateUnknown instead of *api.Node here and we need to handle that correctly.
+				if !isNode {
+					deletedState, ok := obj.(cache.DeletedFinalStateUnknown)
+					if !ok {
+						glog.Infof("Error received unexpected object: %v", obj)
+						return
+					}
+					node, ok = deletedState.Obj.(*v1.Node)
+					if !ok {
+						glog.Infof("Error deletedFinalStateUnknown contained non-Node object: %v", deletedState.Obj)
+						return
+					}
+					obj = node
+				}
 				ksm.handleAddLeaseEvent(subnet.EventRemoved, obj)
 				ksm.handleAddLeaseEvent(subnet.EventRemoved, obj)
 			},
 			},
 		},
 		},