Skip to content

Commit 90035a9

Browse files
committed
Use anonymous function for locking when serving health probes
Updates serveHealthProbes to use the same anonymous function pattern that serveMetrics does for performing operations that necessitate acquiring the controller manager's lock. Signed-off-by: hasheddan <[email protected]>
1 parent cf7ac88 commit 90035a9

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)