@@ -90,7 +90,7 @@ type provisionerDaemon struct {
90
90
acquiredJobCancel context.CancelFunc
91
91
acquiredJobCancelled atomic.Bool
92
92
acquiredJobRunning atomic.Bool
93
- acquiredJobDone chan struct {}
93
+ acquiredJobGroup sync. WaitGroup
94
94
}
95
95
96
96
// Connect establishes a connection to coderd.
@@ -184,7 +184,7 @@ func (p *provisionerDaemon) acquireJob(ctx context.Context) {
184
184
ctx , p .acquiredJobCancel = context .WithCancel (ctx )
185
185
p .acquiredJobCancelled .Store (false )
186
186
p .acquiredJobRunning .Store (true )
187
- p .acquiredJobDone = make ( chan struct {} )
187
+ p .acquiredJobGroup . Add ( 1 )
188
188
189
189
p .opts .Logger .Info (context .Background (), "acquired job" ,
190
190
slog .F ("organization_name" , p .acquiredJob .OrganizationName ),
@@ -235,7 +235,7 @@ func (p *provisionerDaemon) runJob(ctx context.Context) {
235
235
p .acquiredJobMutex .Lock ()
236
236
defer p .acquiredJobMutex .Unlock ()
237
237
p .acquiredJobRunning .Store (false )
238
- close ( p . acquiredJobDone )
238
+ p . acquiredJobGroup . Done ( )
239
239
}()
240
240
// It's safe to cast this ProvisionerType. This data is coming directly from coderd.
241
241
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