mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-08 20:50:24 +00:00
Proxy: delete serviceInfo when stopping a service
This commit is contained in:
@@ -319,19 +319,27 @@ func copyBytes(in, out *net.TCPConn, wg *sync.WaitGroup) {
|
|||||||
|
|
||||||
// StopProxy stops the proxy for the named service.
|
// StopProxy stops the proxy for the named service.
|
||||||
func (proxier *Proxier) StopProxy(service string) error {
|
func (proxier *Proxier) StopProxy(service string) error {
|
||||||
// TODO: delete from map here?
|
|
||||||
info, found := proxier.getServiceInfo(service)
|
info, found := proxier.getServiceInfo(service)
|
||||||
if !found {
|
if !found {
|
||||||
return fmt.Errorf("unknown service: %s", service)
|
return fmt.Errorf("unknown service: %s", service)
|
||||||
}
|
}
|
||||||
|
return proxier.stopProxy(service, info)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This assumes proxier.mu is not locked.
|
||||||
|
func (proxier *Proxier) stopProxy(service string, info *serviceInfo) error {
|
||||||
|
proxier.mu.Lock()
|
||||||
|
defer proxier.mu.Unlock()
|
||||||
return proxier.stopProxyInternal(service, info)
|
return proxier.stopProxyInternal(service, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This assumes proxier.mu is locked.
|
||||||
func (proxier *Proxier) stopProxyInternal(service string, info *serviceInfo) error {
|
func (proxier *Proxier) stopProxyInternal(service string, info *serviceInfo) error {
|
||||||
if !info.setActive(false) {
|
if !info.setActive(false) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
glog.Infof("Removing service: %s", service)
|
glog.Infof("Removing service: %s", service)
|
||||||
|
delete(proxier.serviceMap, service)
|
||||||
return info.socket.Close()
|
return info.socket.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,7 +413,7 @@ func (proxier *Proxier) OnUpdate(services []api.Service) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if exists && info.port != service.Port {
|
if exists && info.port != service.Port {
|
||||||
err := proxier.stopProxyInternal(service.ID, info)
|
err := proxier.stopProxy(service.ID, info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("error stopping %s: %v", service.ID, err)
|
glog.Errorf("error stopping %s: %v", service.ID, err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user