Skip to content

Commit 7372e7e

Browse files
authored
Merge pull request kubernetes#114724 from tnqn/fix-lb-svc-delete-error
Do not log errors when ServiceHealthServer is closed normally
2 parents 280473e + a5790d5 commit 7372e7e

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

pkg/proxy/healthcheck/common.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type httpServerFactory interface {
3939
// It is designed so that http.Server satisfies this interface,
4040
type httpServer interface {
4141
Serve(listener net.Listener) error
42+
Close() error
4243
}
4344

4445
// Implement listener in terms of net.Listen.

pkg/proxy/healthcheck/healthcheck_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ func (fake *fakeHTTPServer) Serve(listener net.Listener) error {
104104
return nil // Cause the goroutine to return
105105
}
106106

107+
func (fake *fakeHTTPServer) Close() error {
108+
return nil
109+
}
110+
107111
func mknsn(ns, name string) types.NamespacedName {
108112
return types.NamespacedName{
109113
Namespace: ns,

pkg/proxy/healthcheck/service_health.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ type hcInstance struct {
150150
nsn types.NamespacedName
151151
port uint16
152152

153-
listeners []net.Listener
154153
httpServers []httpServer
155154

156155
endpoints int // number of local endpoints for a service
@@ -162,7 +161,6 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
162161
var listener net.Listener
163162

164163
addresses := hcs.nodeAddresses.List()
165-
hcI.listeners = make([]net.Listener, 0, len(addresses))
166164
hcI.httpServers = make([]httpServer, 0, len(addresses))
167165

168166
// for each of the node addresses start listening and serving
@@ -181,16 +179,15 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
181179

182180
// start serving
183181
go func(hcI *hcInstance, listener net.Listener, httpSrv httpServer) {
184-
// Serve() will exit when the listener is closed.
182+
// Serve() will exit and return ErrServerClosed when the http server is closed.
185183
klog.V(3).InfoS("Starting goroutine for healthcheck", "service", hcI.nsn, "address", listener.Addr())
186-
if err := httpSrv.Serve(listener); err != nil {
184+
if err := httpSrv.Serve(listener); err != nil && err != http.ErrServerClosed {
187185
klog.ErrorS(err, "Healthcheck closed", "service", hcI.nsn)
188186
return
189187
}
190188
klog.V(3).InfoS("Healthcheck closed", "service", hcI.nsn, "address", listener.Addr())
191189
}(hcI, listener, httpSrv)
192190

193-
hcI.listeners = append(hcI.listeners, listener)
194191
hcI.httpServers = append(hcI.httpServers, httpSrv)
195192
}
196193

@@ -199,9 +196,9 @@ func (hcI *hcInstance) listenAndServeAll(hcs *server) error {
199196

200197
func (hcI *hcInstance) closeAll() error {
201198
errors := []error{}
202-
for _, listener := range hcI.listeners {
203-
if err := listener.Close(); err != nil {
204-
klog.ErrorS(err, "Error closing listener for health check service", "service", hcI.nsn, "address", listener.Addr())
199+
for _, server := range hcI.httpServers {
200+
if err := server.Close(); err != nil {
201+
klog.ErrorS(err, "Error closing server for health check service", "service", hcI.nsn)
205202
errors = append(errors, err)
206203
}
207204
}

0 commit comments

Comments
 (0)