Merge pull request #4506 from ProNic-QY/master
Fix panic on multiple ingress mess up upstream is primary or not
This commit is contained in:
commit
76e2a5d731
2 changed files with 286 additions and 9 deletions
|
|
@ -1230,9 +1230,16 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
} else {
|
||||
|
||||
merged := false
|
||||
altEqualsPri := false
|
||||
|
||||
for _, loc := range servers[defServerName].Locations {
|
||||
priUps := upstreams[loc.Backend]
|
||||
altEqualsPri = altUps.Name == priUps.Name
|
||||
if altEqualsPri {
|
||||
klog.Warningf("alternative upstream %s in Ingress %s/%s is primary upstream in Other Ingress for location %s%s!",
|
||||
altUps.Name, ing.Namespace, ing.Name, servers[defServerName].Hostname, loc.Path)
|
||||
break
|
||||
}
|
||||
|
||||
if canMergeBackend(priUps, altUps) {
|
||||
klog.V(2).Infof("matching backend %v found for alternative backend %v",
|
||||
|
|
@ -1242,7 +1249,7 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
}
|
||||
}
|
||||
|
||||
if !merged {
|
||||
if !altEqualsPri && !merged {
|
||||
klog.Warningf("unable to find real backend for alternative backend %v. Deleting.", altUps.Name)
|
||||
delete(upstreams, altUps.Name)
|
||||
}
|
||||
|
|
@ -1261,6 +1268,7 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
}
|
||||
|
||||
merged := false
|
||||
altEqualsPri := false
|
||||
|
||||
server, ok := servers[rule.Host]
|
||||
if !ok {
|
||||
|
|
@ -1274,6 +1282,12 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
// find matching paths
|
||||
for _, loc := range server.Locations {
|
||||
priUps := upstreams[loc.Backend]
|
||||
altEqualsPri = altUps.Name == priUps.Name
|
||||
if altEqualsPri {
|
||||
klog.Warningf("alternative upstream %s in Ingress %s/%s is primary upstream in Other Ingress for location %s%s!",
|
||||
altUps.Name, ing.Namespace, ing.Name, server.Hostname, loc.Path)
|
||||
break
|
||||
}
|
||||
|
||||
if canMergeBackend(priUps, altUps) && loc.Path == path.Path {
|
||||
klog.V(2).Infof("matching backend %v found for alternative backend %v",
|
||||
|
|
@ -1283,7 +1297,7 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
}
|
||||
}
|
||||
|
||||
if !merged {
|
||||
if !altEqualsPri && !merged {
|
||||
klog.Warningf("unable to find real backend for alternative backend %v. Deleting.", altUps.Name)
|
||||
delete(upstreams, altUps.Name)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue