Skip to content

Commit 541bd30

Browse files
committed
chore: better shutdown
1 parent f863cf9 commit 541bd30

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

cmd/node/main.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ import (
99
"regexp"
1010
"strconv"
1111
"strings"
12+
"sync"
1213
"syscall"
1314
"time"
1415

1516
"google.golang.org/grpc"
1617

1718
"github.com/rudderlabs/rudder-go-kit/config"
1819
"github.com/rudderlabs/rudder-go-kit/logger"
20+
"github.com/rudderlabs/rudder-go-kit/profiler"
1921
"github.com/rudderlabs/rudder-go-kit/stats"
2022
svcMetric "github.com/rudderlabs/rudder-go-kit/stats/metric"
2123
obskit "github.com/rudderlabs/rudder-observability-kit/go/labels"
@@ -63,6 +65,8 @@ func main() {
6365
}
6466

6567
func run(ctx context.Context, cancel func(), conf *config.Config, stat stats.Stats, log logger.Logger) error {
68+
defer cancel()
69+
6670
cloudStorage, err := cloudstorage.GetCloudStorage(conf, log)
6771
if err != nil {
6872
return fmt.Errorf("failed to create cloud storage: %w", err)
@@ -108,8 +112,18 @@ func run(ctx context.Context, cancel func(), conf *config.Config, stat stats.Sta
108112
if err != nil {
109113
return fmt.Errorf("failed to create node service: %w", err)
110114
}
111-
defer service.Close() // TODO test graceful shutdown
112-
defer cancel()
115+
116+
var wg sync.WaitGroup
117+
defer func() {
118+
cancel()
119+
wg.Wait()
120+
}()
121+
wg.Add(1)
122+
go func() {
123+
defer wg.Done()
124+
<-ctx.Done()
125+
service.Close() // TODO test graceful shutdown
126+
}()
113127

114128
// Create a gRPC server
115129
server := grpc.NewServer()
@@ -128,6 +142,16 @@ func run(ctx context.Context, cancel func(), conf *config.Config, stat stats.Sta
128142
))),
129143
)
130144

145+
wg.Add(1)
146+
go func() {
147+
defer wg.Done()
148+
defer log.Infon("Profiler server terminated")
149+
if err := profiler.StartServer(ctx, conf.GetInt("Profiler.Port", 7777)); err != nil {
150+
log.Warnn("Profiler server failed", obskit.Error(err))
151+
return
152+
}
153+
}()
154+
131155
// Start the server
132156
if err := server.Serve(lis); err != nil {
133157
return fmt.Errorf("failed to serve: %w", err)

0 commit comments

Comments
 (0)