Fix panic on multiple ingress mess up upstream is primary or not
This commit is contained in:
parent
8740c1b661
commit
435377f47f
2 changed files with 286 additions and 9 deletions
|
|
@ -1227,9 +1227,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",
|
||||
|
|
@ -1239,7 +1246,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)
|
||||
}
|
||||
|
|
@ -1258,6 +1265,7 @@ func mergeAlternativeBackends(ing *ingress.Ingress, upstreams map[string]*ingres
|
|||
}
|
||||
|
||||
merged := false
|
||||
altEqualsPri := false
|
||||
|
||||
server, ok := servers[rule.Host]
|
||||
if !ok {
|
||||
|
|
@ -1271,6 +1279,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",
|
||||
|
|
@ -1280,7 +1294,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