@@ -124,9 +124,9 @@ type Controller struct {
124
124
// recreation in case of pod failures.
125
125
podBackoffStore * backoffStore
126
126
127
- // completedJobStore contains the job ids for which the job status is updated to completed
127
+ // finishedJobStore contains the job ids for which the job status is finished
128
128
// but the corresponding event is not yet received.
129
- completedJobStore * jobUIDCache
129
+ finishedJobStore sync. Map
130
130
}
131
131
132
132
type syncJobCtx struct {
@@ -188,9 +188,7 @@ func newControllerWithClock(ctx context.Context, podInformer coreinformers.PodIn
188
188
recorder : eventBroadcaster .NewRecorder (scheme .Scheme , v1.EventSource {Component : "job-controller" }),
189
189
clock : clock ,
190
190
podBackoffStore : newBackoffStore (),
191
- completedJobStore : & jobUIDCache {
192
- set : sets .New [types.UID ](),
193
- },
191
+ finishedJobStore : sync.Map {},
194
192
}
195
193
196
194
if _ , err := jobInformer .Informer ().AddEventHandler (cache.ResourceEventHandlerFuncs {
@@ -543,7 +541,7 @@ func (jm *Controller) deleteJob(logger klog.Logger, obj interface{}) {
543
541
return
544
542
}
545
543
}
546
- jm .completedJobStore . remove (jobObj .UID )
544
+ jm .finishedJobStore . Delete (jobObj .UID )
547
545
jm .enqueueLabelSelector (jobObj )
548
546
}
549
547
@@ -828,6 +826,7 @@ func (jm *Controller) syncJob(ctx context.Context, key string) (rErr error) {
828
826
}
829
827
return err
830
828
}
829
+
831
830
// Skip syncing of the job it is managed by another controller.
832
831
// We cannot rely solely on skipping of queueing such jobs for synchronization,
833
832
// because it is possible a synchronization task is queued for a job, without
@@ -848,10 +847,10 @@ func (jm *Controller) syncJob(ctx context.Context, key string) (rErr error) {
848
847
// re-syncing here as the record has to be removed for finished/deleted jobs
849
848
return fmt .Errorf ("error removing backoff record %w" , err )
850
849
}
851
- jm .completedJobStore . remove (job .UID )
850
+ jm .finishedJobStore . Delete (job .UID )
852
851
return nil
853
852
}
854
- if jm .completedJobStore . exists (job .UID ) {
853
+ if _ , ok := jm .finishedJobStore . Load (job .UID ); ok {
855
854
logger .V (2 ).Info ("Skip syncing the job as its marked completed but the completed update event is not yet received" , "uid" , job .UID , "key" , key )
856
855
return nil
857
856
}
@@ -1316,7 +1315,7 @@ func (jm *Controller) trackJobStatusAndRemoveFinalizers(ctx context.Context, job
1316
1315
}
1317
1316
if jobFinished {
1318
1317
jm .recordJobFinished (jobCtx .job , jobCtx .finishedCondition )
1319
- jm .completedJobStore . add (jobCtx .job .UID )
1318
+ jm .finishedJobStore . Store (jobCtx .job .UID , struct {}{} )
1320
1319
}
1321
1320
recordJobPodFinished (logger , jobCtx .job , oldCounters )
1322
1321
}
0 commit comments