From c269bd04d39f620544e16809477752a44db701a4 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 29 Nov 2024 05:26:05 +0800 Subject: [PATCH] updated autocert renew check logic --- internal/autocert/provider.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/autocert/provider.go b/internal/autocert/provider.go index 499161e..11dd275 100644 --- a/internal/autocert/provider.go +++ b/internal/autocert/provider.go @@ -154,16 +154,21 @@ func (p *Provider) ScheduleRenewal() { } go func() { task := task.GlobalTask("cert renew scheduler") - ticker := time.NewTicker(5 * time.Second) - defer ticker.Stop() defer task.Finish("cert renew scheduler stopped") + for { + renewalTime := p.ShouldRenewOn() + timer := time.NewTimer(time.Until(renewalTime)) + select { case <-task.Context().Done(): + timer.Stop() return - case <-ticker.C: // check every 5 seconds + case <-timer.C: if err := p.renewIfNeeded(); err != nil { E.LogWarn("cert renew failed", err, &logger) + // Retry after 1 hour on failure + time.Sleep(time.Hour) } } }