From c3f9fde5d7ef8d66a9a504843b8b88c9eebcc603 Mon Sep 17 00:00:00 2001 From: Todd Date: Fri, 10 May 2024 09:38:30 -0700 Subject: [PATCH] Wait to select tokens until we know we need to (#4794) AuthToken selection involves checking to seeing if the one we are picking has been canceled or expired on the boundary controller. If we are only searching locally and not performing a refresh, there is no need to check if the tokens have expired or not. --- internal/clientcache/internal/cache/refresh.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/clientcache/internal/cache/refresh.go b/internal/clientcache/internal/cache/refresh.go index 002e7ce8f..b9a77a537 100644 --- a/internal/clientcache/internal/cache/refresh.go +++ b/internal/clientcache/internal/cache/refresh.go @@ -186,11 +186,6 @@ func (r *RefreshService) RefreshForSearch(ctx context.Context, authTokenid strin return errors.New(ctx, errors.Internal, op, "unexpected number of refreshable users", errors.WithoutEvent()) } - tokens, err := r.cleanAndPickAuthTokens(ctx, u) - if err != nil { - return errors.Wrap(ctx, err, op, errors.WithoutEvent()) - } - opts, err := getOpts(opt...) if err != nil { return errors.Wrap(ctx, err, op, errors.WithoutEvent()) @@ -203,6 +198,10 @@ func (r *RefreshService) RefreshForSearch(ctx context.Context, authTokenid strin return errors.Wrap(ctx, err, op) } if opts.withIgnoreSearchStaleness || rtv != nil && time.Since(rtv.UpdateTime) > r.maxSearchStaleness { + tokens, err := r.cleanAndPickAuthTokens(ctx, u) + if err != nil { + return errors.Wrap(ctx, err, op, errors.WithoutEvent()) + } args := []any{"user", u.Id, "force refresh", opts.withIgnoreSearchStaleness} if rtv != nil { args = append(args, "alias staleness", time.Since(rtv.UpdateTime)) @@ -218,6 +217,10 @@ func (r *RefreshService) RefreshForSearch(ctx context.Context, authTokenid strin return errors.Wrap(ctx, err, op, errors.WithoutEvent()) } if opts.withIgnoreSearchStaleness || rtv != nil && time.Since(rtv.UpdateTime) > r.maxSearchStaleness { + tokens, err := r.cleanAndPickAuthTokens(ctx, u) + if err != nil { + return errors.Wrap(ctx, err, op, errors.WithoutEvent()) + } args := []any{"user", u.Id, "force refresh", opts.withIgnoreSearchStaleness} if rtv != nil { args = append(args, "target staleness", time.Since(rtv.UpdateTime)) @@ -233,6 +236,10 @@ func (r *RefreshService) RefreshForSearch(ctx context.Context, authTokenid strin return errors.Wrap(ctx, err, op) } if opts.withIgnoreSearchStaleness || rtv != nil && time.Since(rtv.UpdateTime) > r.maxSearchStaleness { + tokens, err := r.cleanAndPickAuthTokens(ctx, u) + if err != nil { + return errors.Wrap(ctx, err, op, errors.WithoutEvent()) + } args := []any{"user", u.Id, "force refresh", opts.withIgnoreSearchStaleness} if rtv != nil { args = append(args, "session staleness", time.Since(rtv.UpdateTime))