@@ -20,11 +20,12 @@ import (
2020 "context"
2121 "errors"
2222 "fmt"
23- posthogTelemetry "github.com/devtron-labs/common-lib/telemetry"
2423 "net/http"
2524 "os"
2625 "time"
2726
27+ posthogTelemetry "github.com/devtron-labs/common-lib/telemetry"
28+
2829 authMiddleware "github.com/devtron-labs/authenticator/middleware"
2930 "github.com/devtron-labs/common-lib/middlewares"
3031 "github.com/devtron-labs/devtron/client/telemetry"
@@ -71,21 +72,31 @@ func (app *App) Start() {
7172 app .MuxRouter .Init ()
7273 //authEnforcer := casbin2.Create()
7374
74- _ , err := app .telemetry .SendTelemetryInstallEventEA ()
75-
76- if err != nil {
77- app .Logger .Warnw ("telemetry installation success event failed" , "err" , err )
78- }
75+ // Send telemetry event asynchronously to avoid blocking startup
76+ go func () {
77+ _ , err := app .telemetry .SendTelemetryInstallEventEA ()
78+ if err != nil {
79+ app .Logger .Warnw ("telemetry installation success event failed" , "err" , err )
80+ }
81+ }()
7982 server := & http.Server {Addr : fmt .Sprintf (":%d" , port ), Handler : authMiddleware .Authorizer (app .sessionManager , user .WhitelistChecker , app .userService .CheckUserStatusAndUpdateLoginAudit )(app .MuxRouter .Router )}
8083 app .MuxRouter .Router .Use (middleware .PrometheusMiddleware )
8184 app .MuxRouter .Router .Use (middlewares .Recovery )
8285 app .server = server
8386
84- err = server .ListenAndServe ()
85- if err != nil && ! errors .Is (err , http .ErrServerClosed ) {
86- app .Logger .Errorw ("error in startup" , "err" , err )
87- os .Exit (2 )
88- }
87+ // Start server in goroutine to make it non-blocking
88+ go func () {
89+ app .Logger .Info ("HTTP server starting to listen" )
90+ err := server .ListenAndServe ()
91+ if err != nil && ! errors .Is (err , http .ErrServerClosed ) {
92+ app .Logger .Errorw ("error in startup" , "err" , err )
93+ os .Exit (2 )
94+ }
95+ }()
96+
97+ // Give server a moment to start listening
98+ time .Sleep (1 * time .Second )
99+ app .Logger .Info ("HTTP server should be ready for health checks" )
89100}
90101
91102func (app * App ) Stop () {
@@ -98,7 +109,10 @@ func (app *App) Stop() {
98109
99110 timeoutContext , _ := context .WithTimeout (context .Background (), 5 * time .Second )
100111 app .Logger .Infow ("closing router" )
101- err := app .server .Shutdown (timeoutContext )
112+ var err error
113+ if app .server != nil {
114+ err = app .server .Shutdown (timeoutContext )
115+ }
102116 if err != nil {
103117 app .Logger .Errorw ("error in mux router shutdown" , "err" , err )
104118 }
0 commit comments