mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-28 18:06:34 +02:00
core/zero: fix ticker usage (#5019)
core/zero: fix ticker usage (#4969) Co-authored-by: Caleb Doxsey <cdoxsey@pomerium.com>
This commit is contained in:
parent
15479cd21f
commit
4fd72eee2a
2 changed files with 10 additions and 26 deletions
|
@ -29,10 +29,6 @@ func Retry(
|
|||
})
|
||||
|
||||
watches, backoff := newConfig(opts...)
|
||||
ticker := time.NewTicker(backoff.NextBackOff())
|
||||
defer ticker.Stop()
|
||||
|
||||
s := makeSelect(ctx, watches, name, ticker.C, fn)
|
||||
|
||||
restart:
|
||||
for {
|
||||
|
@ -51,10 +47,11 @@ restart:
|
|||
backoff:
|
||||
for {
|
||||
interval := backoff.NextBackOff()
|
||||
ticker.Reset(interval)
|
||||
log.Ctx(ctx).Warn().Msgf("backing off for %s...", interval.String())
|
||||
|
||||
timer := time.NewTimer(interval)
|
||||
s := makeSelect(ctx, watches, name, timer.C, fn)
|
||||
next, err := s.Exec(ctx)
|
||||
timer.Stop()
|
||||
logNext(ctx, next, err)
|
||||
switch next {
|
||||
case nextRestart:
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
"github.com/hashicorp/go-multierror"
|
||||
|
@ -52,28 +51,16 @@ func (svc *Mux) Run(ctx context.Context, opts ...fanout.Option) error {
|
|||
}
|
||||
|
||||
func (svc *Mux) run(ctx context.Context) error {
|
||||
bo := backoff.NewExponentialBackOff()
|
||||
bo.MaxElapsedTime = 0
|
||||
|
||||
ticker := time.NewTicker(time.Microsecond)
|
||||
defer ticker.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
case <-ticker.C:
|
||||
}
|
||||
|
||||
err := svc.subscribeAndDispatch(ctx, bo.Reset)
|
||||
if err != nil {
|
||||
ticker.Reset(bo.NextBackOff())
|
||||
}
|
||||
b := backoff.NewExponentialBackOff()
|
||||
b.MaxElapsedTime = 0
|
||||
|
||||
return backoff.Retry(func() error {
|
||||
err := svc.subscribeAndDispatch(ctx, b.Reset)
|
||||
if apierror.IsTerminalError(err) {
|
||||
return err
|
||||
return backoff.Permanent(err)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}, backoff.WithContext(b, ctx))
|
||||
}
|
||||
|
||||
func (svc *Mux) subscribeAndDispatch(ctx context.Context, onConnected func()) (err error) {
|
||||
|
|
Loading…
Add table
Reference in a new issue