diff --git a/pkg/controller/acmechallenges/controller.go b/pkg/controller/acmechallenges/controller.go index fcb3348f6..af1c3bd70 100644 --- a/pkg/controller/acmechallenges/controller.go +++ b/pkg/controller/acmechallenges/controller.go @@ -70,8 +70,7 @@ func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: *ctx} ctrl.syncHandler = ctrl.processNextWorkItem - // exponentially back-off self checks, with a base of 2s and max wait of 20s - ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "challenges") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*30), "challenges") challengeInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Challenges() challengeInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/acmechallenges/sync.go b/pkg/controller/acmechallenges/sync.go index ee8166244..3b78a4e33 100644 --- a/pkg/controller/acmechallenges/sync.go +++ b/pkg/controller/acmechallenges/sync.go @@ -161,8 +161,8 @@ func (c *Controller) Sync(ctx context.Context, ch *cmapi.Challenge) (err error) return err } - // retry after 5s - c.queue.AddAfter(key, time.Second*5) + // retry after 10s + c.queue.AddAfter(key, time.Second*10) return nil } diff --git a/pkg/controller/acmeorders/controller.go b/pkg/controller/acmeorders/controller.go index 620ebb13d..81c2871a8 100644 --- a/pkg/controller/acmeorders/controller.go +++ b/pkg/controller/acmeorders/controller.go @@ -65,7 +65,7 @@ func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: *ctx} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "orders") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*30), "orders") orderInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Orders() orderInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/issuer/acme/issue.go b/pkg/issuer/acme/issue.go index 5784a6c83..12e19a880 100644 --- a/pkg/issuer/acme/issue.go +++ b/pkg/issuer/acme/issue.go @@ -42,7 +42,7 @@ import ( ) const ( - createOrderWaitDuration = time.Minute * 5 + createOrderWaitDuration = time.Hour * 1 ) var ( @@ -140,6 +140,7 @@ func (a *Acme) Issue(ctx context.Context, crt *v1alpha1.Certificate) (*issuer.Is if crt.Status.LastFailureTime == nil { nowTime := metav1.NewTime(a.clock.Now()) crt.Status.LastFailureTime = &nowTime + a.Recorder.Eventf(crt, corev1.EventTypeWarning, "FailedOrder", "Order %q failed. Waiting %s before retrying issuance.", existingOrder.Name, createOrderWaitDuration) } if time.Now().Sub(crt.Status.LastFailureTime.Time) < createOrderWaitDuration {