@@ -50,12 +50,11 @@ func New(clientDialer Dialer, opts *Options) io.Closer {
50
50
}
51
51
ctx , ctxCancel := context .WithCancel (context .Background ())
52
52
daemon := & provisionerDaemon {
53
- clientDialer : clientDialer ,
54
- opts : opts ,
55
- acquiredJobDone : make (chan struct {}),
56
- closeContext : ctx ,
57
- closeCancel : ctxCancel ,
58
- closed : make (chan struct {}),
53
+ clientDialer : clientDialer ,
54
+ opts : opts ,
55
+ closeContext : ctx ,
56
+ closeCancel : ctxCancel ,
57
+ closed : make (chan struct {}),
59
58
}
60
59
go daemon .connect (ctx )
61
60
return daemon
@@ -90,7 +89,7 @@ type provisionerDaemon struct {
90
89
acquiredJobCancel context.CancelFunc
91
90
acquiredJobCancelled atomic.Bool
92
91
acquiredJobRunning atomic.Bool
93
- acquiredJobDone chan struct {}
92
+ acquiredJobGroup sync. WaitGroup
94
93
}
95
94
96
95
// Connect establishes a connection to coderd.
@@ -182,6 +181,7 @@ func (p *provisionerDaemon) acquireJob(ctx context.Context) {
182
181
return
183
182
}
184
183
ctx , p .acquiredJobCancel = context .WithCancel (ctx )
184
+ p .acquiredJobGroup .Add (1 )
185
185
p .acquiredJobCancelled .Store (false )
186
186
p .acquiredJobRunning .Store (true )
187
187
@@ -234,7 +234,7 @@ func (p *provisionerDaemon) runJob(ctx context.Context) {
234
234
}
235
235
p .opts .Logger .Debug (ctx , "cleaned up work directory" )
236
236
p .acquiredJobRunning .Store (false )
237
- close ( p . acquiredJobDone )
237
+ p . acquiredJobGroup . Done ( )
238
238
}()
239
239
// It's safe to cast this ProvisionerType. This data is coming directly from coderd.
240
240
provisioner , hasProvisioner := p .opts .Provisioners [p .acquiredJob .Provisioner ]
@@ -520,7 +520,7 @@ func (p *provisionerDaemon) closeWithError(err error) error {
520
520
if ! p .acquiredJobCancelled .Load () {
521
521
p .cancelActiveJob (errMsg )
522
522
}
523
- <- p . acquiredJobDone
523
+ p . acquiredJobGroup . Wait ()
524
524
}
525
525
526
526
p .opts .Logger .Debug (context .Background (), "closing server with error" , slog .Error (err ))
0 commit comments