mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-20 01:23:48 +00:00
Wire contexts to Core controllers
This commit is contained in:
@@ -102,22 +102,22 @@ func New(jobInformer batchinformers.JobInformer, client clientset.Interface) *Co
|
||||
}
|
||||
|
||||
// Run starts the workers to clean up Jobs.
|
||||
func (tc *Controller) Run(workers int, stopCh <-chan struct{}) {
|
||||
func (tc *Controller) Run(ctx context.Context, workers int) {
|
||||
defer utilruntime.HandleCrash()
|
||||
defer tc.queue.ShutDown()
|
||||
|
||||
klog.Infof("Starting TTL after finished controller")
|
||||
defer klog.Infof("Shutting down TTL after finished controller")
|
||||
|
||||
if !cache.WaitForNamedCacheSync("TTL after finished", stopCh, tc.jListerSynced) {
|
||||
if !cache.WaitForNamedCacheSync("TTL after finished", ctx.Done(), tc.jListerSynced) {
|
||||
return
|
||||
}
|
||||
|
||||
for i := 0; i < workers; i++ {
|
||||
go wait.Until(tc.worker, time.Second, stopCh)
|
||||
go wait.UntilWithContext(ctx, tc.worker, time.Second)
|
||||
}
|
||||
|
||||
<-stopCh
|
||||
<-ctx.Done()
|
||||
}
|
||||
|
||||
func (tc *Controller) addJob(obj interface{}) {
|
||||
@@ -159,19 +159,19 @@ func (tc *Controller) enqueueAfter(job *batch.Job, after time.Duration) {
|
||||
tc.queue.AddAfter(key, after)
|
||||
}
|
||||
|
||||
func (tc *Controller) worker() {
|
||||
for tc.processNextWorkItem() {
|
||||
func (tc *Controller) worker(ctx context.Context) {
|
||||
for tc.processNextWorkItem(ctx) {
|
||||
}
|
||||
}
|
||||
|
||||
func (tc *Controller) processNextWorkItem() bool {
|
||||
func (tc *Controller) processNextWorkItem(ctx context.Context) bool {
|
||||
key, quit := tc.queue.Get()
|
||||
if quit {
|
||||
return false
|
||||
}
|
||||
defer tc.queue.Done(key)
|
||||
|
||||
err := tc.processJob(key.(string))
|
||||
err := tc.processJob(ctx, key.(string))
|
||||
tc.handleErr(err, key)
|
||||
|
||||
return true
|
||||
@@ -192,7 +192,7 @@ func (tc *Controller) handleErr(err error, key interface{}) {
|
||||
// its TTL hasn't expired, it will be added to the queue after the TTL is expected
|
||||
// to expire.
|
||||
// This function is not meant to be invoked concurrently with the same key.
|
||||
func (tc *Controller) processJob(key string) error {
|
||||
func (tc *Controller) processJob(ctx context.Context, key string) error {
|
||||
namespace, name, err := cache.SplitMetaNamespaceKey(key)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -218,7 +218,7 @@ func (tc *Controller) processJob(key string) error {
|
||||
// Before deleting the Job, do a final sanity check.
|
||||
// If TTL is modified before we do this check, we cannot be sure if the TTL truly expires.
|
||||
// The latest Job may have a different UID, but it's fine because the checks will be run again.
|
||||
fresh, err := tc.client.BatchV1().Jobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
fresh, err := tc.client.BatchV1().Jobs(namespace).Get(ctx, name, metav1.GetOptions{})
|
||||
if errors.IsNotFound(err) {
|
||||
return nil
|
||||
}
|
||||
@@ -239,7 +239,7 @@ func (tc *Controller) processJob(key string) error {
|
||||
Preconditions: &metav1.Preconditions{UID: &fresh.UID},
|
||||
}
|
||||
klog.V(4).Infof("Cleaning up Job %s/%s", namespace, name)
|
||||
if err := tc.client.BatchV1().Jobs(fresh.Namespace).Delete(context.TODO(), fresh.Name, options); err != nil {
|
||||
if err := tc.client.BatchV1().Jobs(fresh.Namespace).Delete(ctx, fresh.Name, options); err != nil {
|
||||
return err
|
||||
}
|
||||
metrics.JobDeletionDurationSeconds.Observe(time.Since(*expiredAt).Seconds())
|
||||
|
Reference in New Issue
Block a user