Skip to content

Commit 14cdca7

Browse files
committed
[datastore] Stop crons on ctx's cancels, cancel ctx when error occur during RunHTTPServer
1 parent 637626f commit 14cdca7

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

cmds/core-service/main.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,27 @@ func RunHTTPServer(ctx context.Context, ctxCanceler func(), address, locality st
164164
versioningV1Server = &versioning.Server{}
165165
)
166166

167+
ctx, ctxCancel := context.WithCancel(ctx)
168+
167169
// Initialize aux
168170
auxV1Server, err = createAuxServer(ctx, locality, *publicEndpoint, *scdGlobalLock, logger)
169171
if err != nil {
172+
ctxCancel()
170173
return stacktrace.Propagate(err, "Failed to create aux server")
171174
}
172175

173176
// Initialize remote ID
174177
ridV1Server, ridV2Server, err = createRIDServers(ctx, locality, logger)
175178
if err != nil {
179+
ctxCancel()
176180
return stacktrace.Propagate(err, "Failed to create remote ID server")
177181
}
178182

179183
// Initialize access token validation
180184
keyResolver, err := createKeyResolver()
181185
switch {
182186
case err != nil:
187+
ctxCancel()
183188
return stacktrace.Propagate(err, "Error creating RSA authorizer")
184189
case keyResolver == nil:
185190
logger.Warn("operating without authorizing interceptor")
@@ -193,6 +198,7 @@ func RunHTTPServer(ctx context.Context, ctxCanceler func(), address, locality st
193198
},
194199
)
195200
if err != nil {
201+
ctxCancel()
196202
return stacktrace.Propagate(err, "Error creating RSA authorizer")
197203
}
198204

@@ -212,6 +218,7 @@ func RunHTTPServer(ctx context.Context, ctxCanceler func(), address, locality st
212218
if *enableSCD {
213219
scdV1Server, err = createSCDServer(ctx, logger)
214220
if err != nil {
221+
ctxCancel()
215222
return stacktrace.Propagate(err, "Failed to create strategic conflict detection server")
216223
}
217224

@@ -265,11 +272,13 @@ func RunHTTPServer(ctx context.Context, ctxCanceler func(), address, locality st
265272
// Indicate ready for container health checks
266273
readyFile, err := os.Create("service.ready")
267274
if err != nil {
275+
ctxCancel()
268276
return stacktrace.Propagate(err, "Error touching file to indicate service ready")
269277
}
270278

271279
err = readyFile.Close()
272280
if err != nil {
281+
ctxCancel()
273282
return stacktrace.Propagate(err, "Error closing touched file to indicate service ready")
274283
}
275284

pkg/datastoreutils/dial.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ func DialStore[S any](ctx context.Context, dbName string, withCheckCron bool, ne
5858
return zero, stacktrace.Propagate(err, "Failed to schedule db check for %s", dbName)
5959
}
6060
c.Start()
61+
62+
go func() {
63+
<-ctx.Done()
64+
c.Stop()
65+
}()
6166
}
6267

6368
return s, nil

0 commit comments

Comments
 (0)