Skip to content

Commit 4dad2a0

Browse files
authored
Merge pull request #1313 from hasheddan/health-lock
✨ Use anonymous function for locking when serving health probes
2 parents cf7ac88 + 90035a9 commit 4dad2a0

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

pkg/manager/internal.go

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -418,34 +418,35 @@ func (cm *controllerManager) serveMetrics() {
418418
}
419419

420420
func (cm *controllerManager) serveHealthProbes() {
421-
// TODO(hypnoglow): refactor locking to use anonymous func in the similar way
422-
// it's done in serveMetrics.
423-
cm.mu.Lock()
424421
mux := http.NewServeMux()
425-
426-
if cm.readyzHandler != nil {
427-
mux.Handle(cm.readinessEndpointName, http.StripPrefix(cm.readinessEndpointName, cm.readyzHandler))
428-
// Append '/' suffix to handle subpaths
429-
mux.Handle(cm.readinessEndpointName+"/", http.StripPrefix(cm.readinessEndpointName, cm.readyzHandler))
430-
}
431-
if cm.healthzHandler != nil {
432-
mux.Handle(cm.livenessEndpointName, http.StripPrefix(cm.livenessEndpointName, cm.healthzHandler))
433-
// Append '/' suffix to handle subpaths
434-
mux.Handle(cm.livenessEndpointName+"/", http.StripPrefix(cm.livenessEndpointName, cm.healthzHandler))
435-
}
436-
437422
server := http.Server{
438423
Handler: mux,
439424
}
440-
// Run server
441-
cm.startRunnable(RunnableFunc(func(_ context.Context) error {
442-
if err := server.Serve(cm.healthProbeListener); err != nil && err != http.ErrServerClosed {
443-
return err
425+
426+
func() {
427+
cm.mu.Lock()
428+
defer cm.mu.Unlock()
429+
430+
if cm.readyzHandler != nil {
431+
mux.Handle(cm.readinessEndpointName, http.StripPrefix(cm.readinessEndpointName, cm.readyzHandler))
432+
// Append '/' suffix to handle subpaths
433+
mux.Handle(cm.readinessEndpointName+"/", http.StripPrefix(cm.readinessEndpointName, cm.readyzHandler))
444434
}
445-
return nil
446-
}))
447-
cm.healthzStarted = true
448-
cm.mu.Unlock()
435+
if cm.healthzHandler != nil {
436+
mux.Handle(cm.livenessEndpointName, http.StripPrefix(cm.livenessEndpointName, cm.healthzHandler))
437+
// Append '/' suffix to handle subpaths
438+
mux.Handle(cm.livenessEndpointName+"/", http.StripPrefix(cm.livenessEndpointName, cm.healthzHandler))
439+
}
440+
441+
// Run server
442+
cm.startRunnable(RunnableFunc(func(_ context.Context) error {
443+
if err := server.Serve(cm.healthProbeListener); err != nil && err != http.ErrServerClosed {
444+
return err
445+
}
446+
return nil
447+
}))
448+
cm.healthzStarted = true
449+
}()
449450

450451
// Shutdown the server when stop is closed
451452
<-cm.internalProceduresStop

0 commit comments

Comments
 (0)