Merge pull request #114724 from tnqn/fix-lb-svc-delete-error

Do not log errors when ServiceHealthServer is closed normally
This commit is contained in:
Kubernetes Prow Robot 2023-01-11 10:31:45 -08:00 committed by GitHub
commit 7372e7e807
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 8 deletions

View File

@ -39,6 +39,7 @@ type httpServerFactory interface {
// It is designed so that http.Server satisfies this interface,
type httpServer interface {
Serve(listener net.Listener) error
Close() error
}
// Implement listener in terms of net.Listen.

View File

@ -104,6 +104,10 @@ func (fake *fakeHTTPServer) Serve(listener net.Listener) error {
return nil // Cause the goroutine to return
}
func (fake *fakeHTTPServer) Close() error {
return nil
}
func mknsn(ns, name string) types.NamespacedName {
return types.NamespacedName{
Namespace: ns,

View File

@ -150,7 +150,6 @@ type hcInstance struct {
nsn types.NamespacedName
port uint16
listeners []net.Listener
httpServers []httpServer
endpoints int // number of local endpoints for a service
@ -162,7 +161,6 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
var listener net.Listener
addresses := hcs.nodeAddresses.List()
hcI.listeners = make([]net.Listener, 0, len(addresses))
hcI.httpServers = make([]httpServer, 0, len(addresses))
// for each of the node addresses start listening and serving
@ -181,16 +179,15 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
// start serving
go func(hcI *hcInstance, listener net.Listener, httpSrv httpServer) {
// Serve() will exit when the listener is closed.
// Serve() will exit and return ErrServerClosed when the http server is closed.
klog.V(3).InfoS("Starting goroutine for healthcheck", "service", hcI.nsn, "address", listener.Addr())
if err := httpSrv.Serve(listener); err != nil {
if err := httpSrv.Serve(listener); err != nil && err != http.ErrServerClosed {
klog.ErrorS(err, "Healthcheck closed", "service", hcI.nsn)
return
}
klog.V(3).InfoS("Healthcheck closed", "service", hcI.nsn, "address", listener.Addr())
}(hcI, listener, httpSrv)
hcI.listeners = append(hcI.listeners, listener)
hcI.httpServers = append(hcI.httpServers, httpSrv)
}
@ -199,9 +196,9 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
func (hcI *hcInstance) closeAll() error {
errors := []error{}
for _, listener := range hcI.listeners {
if err := listener.Close(); err != nil {
klog.ErrorS(err, "Error closing listener for health check service", "service", hcI.nsn, "address", listener.Addr())
for _, server := range hcI.httpServers {
if err := server.Close(); err != nil {
klog.ErrorS(err, "Error closing server for health check service", "service", hcI.nsn)
errors = append(errors, err)
}
}