Fix poolmanager specializes a function pod repeatedly if istio is enabled (#1208)

This commit is contained in:
Ta-Ching Chen
2019-07-03 11:26:35 +08:00
committed by GitHub
parent b229d6e1b0
commit 9f51f9064d
+10 -3
View File
@@ -300,9 +300,16 @@ func (gpm *GenericPoolManager) IsValid(fsvc *fscache.FuncSvc) bool {
for _, obj := range fsvc.KubernetesObjects {
if obj.Kind == "pod" {
pod, err := gpm.kubernetesClient.CoreV1().Pods(obj.Namespace).Get(obj.Name, metav1.GetOptions{})
if err == nil && strings.Contains(fsvc.Address, pod.Status.PodIP) && utils.IsReadyPod(pod) {
gpm.logger.Info("valid pod address", zap.String("address", fsvc.Address))
return true
if err == nil && utils.IsReadyPod(pod) {
// Normally, the address format is http://[pod-ip]:[port], however, if the
// Istio is enabled the address format changes to http://[svc-name]:[port].
// So if the Istio is enabled and pod is in ready state, we return true directly;
// Otherwise, we need to ensure that the address contains pod ip.
if gpm.enableIstio ||
(!gpm.enableIstio && strings.Contains(fsvc.Address, pod.Status.PodIP)) {
gpm.logger.Debug("valid address", zap.String("address", fsvc.Address))
return true
}
}
}
}