Skip to content

Commit 78c478c

Browse files
committed
fix: ensure startup logs scanner can be stopped
1 parent 3913854 commit 78c478c

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

agent/agent.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ func (a *agent) runScript(ctx context.Context, lifecycle, script string) (err er
911911
return nil
912912
}
913913

914-
func (a *agent) trackScriptLogs(ctx context.Context, reader io.Reader) (chan struct{}, error) {
914+
func (a *agent) trackScriptLogs(ctx context.Context, reader io.ReadCloser) (chan struct{}, error) {
915915
// Synchronous sender, there can only be one outbound send at a time.
916916
//
917917
// It's important that we either flush or drop all logs before returning
@@ -923,17 +923,25 @@ func (a *agent) trackScriptLogs(ctx context.Context, reader io.Reader) (chan str
923923
flush := time.NewTimer(flushTimeout)
924924
flush.Stop()
925925

926+
var backlog []agentsdk.StartupLog
926927
defer func() {
927928
flush.Stop()
929+
_ = reader.Close() // Ensure read routine is closed.
930+
if len(backlog) > 0 {
931+
a.logger.Debug(ctx, "track script logs sender exiting, discarding logs", slog.F("discarded_logs_count", len(backlog)))
932+
}
928933
a.logger.Debug(ctx, "track script logs sender exited")
929934
close(sendDone)
930935
}()
931936

932-
var backlog []agentsdk.StartupLog
933937
done := false
934938
for {
935939
flushed := false
936940
select {
941+
case <-ctx.Done():
942+
return
943+
case <-a.closed:
944+
return
937945
// Close (!ok) can be triggered by the reader closing due to
938946
// EOF or due to agent closing, when this happens we attempt
939947
// a final flush. If the context is canceled this will be a
@@ -1026,7 +1034,8 @@ func (a *agent) trackScriptLogs(ctx context.Context, reader io.Reader) (chan str
10261034
if err != nil {
10271035
close(send)
10281036
<-sendDone
1029-
return nil, err
1037+
close(logsDone)
1038+
return logsDone, err
10301039
}
10311040

10321041
return logsDone, nil

0 commit comments

Comments
 (0)