@@ -9,13 +9,15 @@ import (
9
9
"regexp"
10
10
"strconv"
11
11
"strings"
12
+ "sync"
12
13
"syscall"
13
14
"time"
14
15
15
16
"google.golang.org/grpc"
16
17
17
18
"github.com/rudderlabs/rudder-go-kit/config"
18
19
"github.com/rudderlabs/rudder-go-kit/logger"
20
+ "github.com/rudderlabs/rudder-go-kit/profiler"
19
21
"github.com/rudderlabs/rudder-go-kit/stats"
20
22
svcMetric "github.com/rudderlabs/rudder-go-kit/stats/metric"
21
23
obskit "github.com/rudderlabs/rudder-observability-kit/go/labels"
@@ -63,6 +65,8 @@ func main() {
63
65
}
64
66
65
67
func run (ctx context.Context , cancel func (), conf * config.Config , stat stats.Stats , log logger.Logger ) error {
68
+ defer cancel ()
69
+
66
70
cloudStorage , err := cloudstorage .GetCloudStorage (conf , log )
67
71
if err != nil {
68
72
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
108
112
if err != nil {
109
113
return fmt .Errorf ("failed to create node service: %w" , err )
110
114
}
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
+ }()
113
127
114
128
// Create a gRPC server
115
129
server := grpc .NewServer ()
@@ -128,6 +142,16 @@ func run(ctx context.Context, cancel func(), conf *config.Config, stat stats.Sta
128
142
))),
129
143
)
130
144
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
+
131
155
// Start the server
132
156
if err := server .Serve (lis ); err != nil {
133
157
return fmt .Errorf ("failed to serve: %w" , err )
0 commit comments