Skip to content

Commit b64dca1

Browse files
fix: graceful shutdown handling and logs flush (#6239)
* flushed messages and handled graceful shutdown * flushing removed * removed common lib chnages
1 parent df4beab commit b64dca1

File tree

9 files changed

+63
-28
lines changed

9 files changed

+63
-28
lines changed

Diff for: App.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package main
1919
import (
2020
"context"
2121
"crypto/tls"
22+
"errors"
2223
"fmt"
2324
"github.com/devtron-labs/common-lib/middlewares"
2425
pubsub "github.com/devtron-labs/common-lib/pubsub-lib"
@@ -137,7 +138,7 @@ func (app *App) Start() {
137138
err = server.ListenAndServe()
138139
}
139140
//err := http.ListenAndServe(fmt.Sprintf(":%d", port), auth.Authorizer(app.Enforcer, app.sessionManager)(app.MuxRouter.Router))
140-
if err != nil {
141+
if err != nil && !errors.Is(err, http.ErrServerClosed) {
141142
app.Logger.Errorw("error in startup", "err", err)
142143
os.Exit(2)
143144
}

Diff for: cmd/external-app/externalApp.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
package main
1818

1919
import (
20+
"context"
21+
"errors"
2022
"fmt"
2123
"net/http"
2224
"os"
25+
"time"
2326

2427
authMiddleware "github.com/devtron-labs/authenticator/middleware"
2528
"github.com/devtron-labs/common-lib/middlewares"
@@ -75,7 +78,7 @@ func (app *App) Start() {
7578
app.server = server
7679

7780
err = server.ListenAndServe()
78-
if err != nil {
81+
if err != nil && !errors.Is(err, http.ErrServerClosed) {
7982
app.Logger.Errorw("error in startup", "err", err)
8083
os.Exit(2)
8184
}
@@ -88,4 +91,19 @@ func (app *App) Stop() {
8891
app.Logger.Info("flushing messages of posthog")
8992
posthogCl.Close()
9093
}
94+
95+
timeoutContext, _ := context.WithTimeout(context.Background(), 5*time.Second)
96+
app.Logger.Infow("closing router")
97+
err := app.server.Shutdown(timeoutContext)
98+
if err != nil {
99+
app.Logger.Errorw("error in mux router shutdown", "err", err)
100+
}
101+
102+
app.Logger.Infow("closing db connection")
103+
err = app.db.Close()
104+
if err != nil {
105+
app.Logger.Errorw("error in closing db connection", "err", err)
106+
}
107+
app.Logger.Infow("housekeeping done. exiting now")
108+
91109
}

Diff for: cmd/external-app/main.go

+5-7
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,14 @@ func main() {
2929
if err != nil {
3030
log.Panic(err)
3131
}
32+
go app.Start()
3233
// gracefulStop start
3334
var gracefulStop = make(chan os.Signal)
3435
signal.Notify(gracefulStop, syscall.SIGTERM)
3536
signal.Notify(gracefulStop, syscall.SIGINT)
36-
go func() {
37-
sig := <-gracefulStop
38-
fmt.Printf("caught sig: %+v", sig)
39-
app.Stop()
40-
os.Exit(0)
41-
}()
37+
38+
sig := <-gracefulStop
39+
fmt.Printf("caught sig: %+v", sig)
40+
app.Stop()
4241
// gracefulStop end
43-
app.Start()
4442
}

Diff for: go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@ require gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
288288

289289
replace (
290290
github.com/argoproj/argo-workflows/v3 v3.5.10 => github.com/devtron-labs/argo-workflows/v3 v3.5.10
291-
github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241219033445-6c0c7082c583
292-
github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241225093445-23a98e8bb120
291+
github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241230042545-446c0258ec13
292+
github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241230042545-446c0258ec13
293293
github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
294294
github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5
295295
k8s.io/api => k8s.io/api v0.29.7

Diff for: go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -792,10 +792,10 @@ github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc h1:VRRKCwnzq
792792
github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
793793
github.com/devtron-labs/argo-workflows/v3 v3.5.10 h1:6rxQOesOzDz6SgQCMDQNHaehsKFW3C7U8CZeEek5kgQ=
794794
github.com/devtron-labs/argo-workflows/v3 v3.5.10/go.mod h1:/vqxcovDPT4zqr4DjR5v7CF8ggpY1l3TSa2CIG3jmjA=
795-
github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241219033445-6c0c7082c583 h1:YN6O8N4+msUbbmWB+QOpq6ha7hCjF/kkds9bsOZ0EWg=
796-
github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241219033445-6c0c7082c583/go.mod h1:vFJ3M7akwAWCtugDXRW+5Q9P+cp0RiH+K/D5FBbb/JA=
797-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241225093445-23a98e8bb120 h1:HiYR58c/pglJSD79oKUQ2wu/K/aV4G4cQwvgJs/nB/4=
798-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241225093445-23a98e8bb120/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo=
795+
github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241230042545-446c0258ec13 h1:b2CBCwX0eIFV/ARLC5tk9DipsV4X1AdUzadxStrKkWs=
796+
github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241230042545-446c0258ec13/go.mod h1:vFJ3M7akwAWCtugDXRW+5Q9P+cp0RiH+K/D5FBbb/JA=
797+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241230042545-446c0258ec13 h1:0nYnqC8SuDbXJY9vfC6Wg4xMgsmCi2s+d57SpoRfJ84=
798+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241230042545-446c0258ec13/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo=
799799
github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU=
800800
github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y=
801801
github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 h1:xwbTeijNTf4/j1v+tSfwVqwLVnReas/NqEKeQHvSTys=

Diff for: main.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,15 @@ func main() {
4141
if err != nil {
4242
log.Panic(err)
4343
}
44+
go app.Start()
4445
// gracefulStop start
4546
var gracefulStop = make(chan os.Signal)
4647
signal.Notify(gracefulStop, syscall.SIGTERM)
4748
signal.Notify(gracefulStop, syscall.SIGINT)
48-
go func() {
49-
sig := <-gracefulStop
50-
fmt.Printf("caught sig: %+v", sig)
51-
app.Stop()
52-
os.Exit(0)
53-
}()
54-
// gracefulStop end
5549

56-
app.Start()
50+
sig := <-gracefulStop
51+
fmt.Printf("caught sig: %+v", sig)
52+
app.Stop()
53+
// gracefulStop end
5754

5855
}

Diff for: vendor/github.com/devtron-labs/common-lib/imageScan/bean/bean.go

+21-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/modules.txt

+4-4
Original file line numberDiff line numberDiff line change
@@ -336,15 +336,15 @@ github.com/davecgh/go-spew/spew
336336
# github.com/deckarep/golang-set v1.8.0
337337
## explicit; go 1.17
338338
github.com/deckarep/golang-set
339-
# github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241219033445-6c0c7082c583
339+
# github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241230042545-446c0258ec13
340340
## explicit; go 1.21
341341
github.com/devtron-labs/authenticator/apiToken
342342
github.com/devtron-labs/authenticator/client
343343
github.com/devtron-labs/authenticator/jwt
344344
github.com/devtron-labs/authenticator/middleware
345345
github.com/devtron-labs/authenticator/oidc
346346
github.com/devtron-labs/authenticator/password
347-
# github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241225093445-23a98e8bb120
347+
# github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241230042545-446c0258ec13
348348
## explicit; go 1.21
349349
github.com/devtron-labs/common-lib/async
350350
github.com/devtron-labs/common-lib/blob-storage
@@ -2214,8 +2214,8 @@ xorm.io/xorm/log
22142214
xorm.io/xorm/names
22152215
xorm.io/xorm/schemas
22162216
xorm.io/xorm/tags
2217-
# github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241219033445-6c0c7082c583
2218-
# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241225093445-23a98e8bb120
2217+
# github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20241230042545-446c0258ec13
2218+
# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241230042545-446c0258ec13
22192219
# github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
22202220
# github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5
22212221
# k8s.io/api => k8s.io/api v0.29.7

0 commit comments

Comments
 (0)