@@ -44,7 +44,7 @@ type StoreReconciler struct {
4444running atomic.Bool
4545stopped atomic.Bool
4646done chan struct {}
47- provisionNotifyCh chan * database.ProvisionerJob
47+ provisionNotifyCh chan database.ProvisionerJob
4848}
4949
5050var _ prebuilds.ReconciliationOrchestrator = & StoreReconciler {}
@@ -64,7 +64,7 @@ func NewStoreReconciler(store database.Store,
6464clock :clock ,
6565registerer :registerer ,
6666done :make (chan struct {},1 ),
67- provisionNotifyCh :make (chan * database.ProvisionerJob ,100 ),
67+ provisionNotifyCh :make (chan database.ProvisionerJob ,10 ),
6868}
6969
7070reconciler .metrics = NewMetricsCollector (store ,logger ,reconciler )
@@ -117,11 +117,7 @@ func (c *StoreReconciler) Run(ctx context.Context) {
117117case <- ctx .Done ():
118118return
119119case job := <- c .provisionNotifyCh :
120- if job == nil {
121- continue
122- }
123-
124- err := provisionerjobs .PostJob (c .pubsub ,* job )
120+ err := provisionerjobs .PostJob (c .pubsub ,job )
125121if err != nil {
126122c .logger .Error (ctx ,"failed to post provisioner job to pubsub" ,slog .Error (err ))
127123}
@@ -600,9 +596,13 @@ func (c *StoreReconciler) provision(
600596return xerrors .Errorf ("provision workspace: %w" ,err )
601597}
602598
599+ if provisionerJob == nil {
600+ return nil
601+ }
602+
603603// Publish provisioner job event outside of transaction.
604604select {
605- case c .provisionNotifyCh <- provisionerJob :
605+ case c .provisionNotifyCh <- * provisionerJob :
606606default :// channel full, drop the message; provisioner will pick this job up later with its periodic check, though.
607607c .logger .Warn (ctx ,"provisioner job notification queue full, dropping" ,
608608slog .F ("job_id" ,provisionerJob .ID ),slog .F ("prebuild_id" ,prebuildID .String ()))