updated autocert renew check logic

This commit is contained in:
yusing 2024-11-29 05:26:05 +08:00
parent acdb324f7d
commit c269bd04d3

View file

@ -154,16 +154,21 @@ func (p *Provider) ScheduleRenewal() {
} }
go func() { go func() {
task := task.GlobalTask("cert renew scheduler") task := task.GlobalTask("cert renew scheduler")
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
defer task.Finish("cert renew scheduler stopped") defer task.Finish("cert renew scheduler stopped")
for { for {
renewalTime := p.ShouldRenewOn()
timer := time.NewTimer(time.Until(renewalTime))
select { select {
case <-task.Context().Done(): case <-task.Context().Done():
timer.Stop()
return return
case <-ticker.C: // check every 5 seconds case <-timer.C:
if err := p.renewIfNeeded(); err != nil { if err := p.renewIfNeeded(); err != nil {
E.LogWarn("cert renew failed", err, &logger) E.LogWarn("cert renew failed", err, &logger)
// Retry after 1 hour on failure
time.Sleep(time.Hour)
} }
} }
} }