Re-order default backend deletion calls
This commit is contained in:
parent
d1e8a629ca
commit
6260eeeed4
2 changed files with 25 additions and 27 deletions
|
@ -88,19 +88,8 @@ func NewLoadBalancerPool(
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *L7s) create(ri *L7RuntimeInfo) (*L7, error) {
|
func (l *L7s) create(ri *L7RuntimeInfo) (*L7, error) {
|
||||||
// Lazily create a default backend so we don't tax users who don't care
|
|
||||||
// about Ingress by consuming 1 of their 3 GCE BackendServices. This
|
|
||||||
// BackendService is deleted when there are no more Ingresses, either
|
|
||||||
// through Sync or Shutdown.
|
|
||||||
if l.glbcDefaultBackend == nil {
|
if l.glbcDefaultBackend == nil {
|
||||||
err := l.defaultBackendPool.Add(l.defaultBackendNodePort)
|
glog.Warningf("Creating l7 without a default backend")
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
l.glbcDefaultBackend, err = l.defaultBackendPool.Get(l.defaultBackendNodePort)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return &L7{
|
return &L7{
|
||||||
runtimeInfo: ri,
|
runtimeInfo: ri,
|
||||||
|
@ -175,25 +164,25 @@ func (l *L7s) Delete(name string) error {
|
||||||
func (l *L7s) Sync(lbs []*L7RuntimeInfo) error {
|
func (l *L7s) Sync(lbs []*L7RuntimeInfo) error {
|
||||||
glog.V(3).Infof("Creating loadbalancers %+v", lbs)
|
glog.V(3).Infof("Creating loadbalancers %+v", lbs)
|
||||||
|
|
||||||
// The default backend is completely managed by the l7 pool.
|
if len(lbs) != 0 {
|
||||||
// This includes recreating it if it's deleted, or fixing broken links.
|
// Lazily create a default backend so we don't tax users who don't care
|
||||||
|
// about Ingress by consuming 1 of their 3 GCE BackendServices. This
|
||||||
|
// BackendService is GC'd when there are no more Ingresses.
|
||||||
if err := l.defaultBackendPool.Add(l.defaultBackendNodePort); err != nil {
|
if err := l.defaultBackendPool.Add(l.defaultBackendNodePort); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// create new loadbalancers, perform an edge hop for existing
|
defaultBackend, err := l.defaultBackendPool.Get(l.defaultBackendNodePort)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
l.glbcDefaultBackend = defaultBackend
|
||||||
|
}
|
||||||
|
// create new loadbalancers, validate existing
|
||||||
for _, ri := range lbs {
|
for _, ri := range lbs {
|
||||||
if err := l.Add(ri); err != nil {
|
if err := l.Add(ri); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tear down the default backend when there are no more loadbalancers
|
|
||||||
// because the cluster could go down anytime and we'd leak it otherwise.
|
|
||||||
if len(lbs) == 0 {
|
|
||||||
if err := l.defaultBackendPool.Delete(l.defaultBackendNodePort); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
l.glbcDefaultBackend = nil
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,6 +204,15 @@ func (l *L7s) GC(names []string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Tear down the default backend when there are no more loadbalancers.
|
||||||
|
// This needs to happen after we've deleted all url-maps that might be
|
||||||
|
// using it.
|
||||||
|
if len(names) == 0 {
|
||||||
|
if err := l.defaultBackendPool.Delete(l.defaultBackendNodePort); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
l.glbcDefaultBackend = nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +584,7 @@ func (l *L7) edgeHop() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if l.runtimeInfo.TLS != nil {
|
if l.runtimeInfo.TLS != nil {
|
||||||
glog.V(3).Infof("Edge hopping https for %v", l.Name)
|
glog.V(3).Infof("validating https for %v", l.Name)
|
||||||
if err := l.edgeHopHttps(); err != nil {
|
if err := l.edgeHopHttps(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ func (c *CloudListingPool) ReplenishPool() {
|
||||||
for i := range items {
|
for i := range items {
|
||||||
key, err := c.keyGetter(items[i])
|
key, err := c.keyGetter(items[i])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(4).Infof("CloudListingPool: %v", err)
|
glog.V(5).Infof("CloudListingPool: %v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
c.InMemoryPool.Add(key, items[i])
|
c.InMemoryPool.Add(key, items[i])
|
||||||
|
|
Loading…
Reference in a new issue