in internal/conn/storage/credcache.go [157:193]
func (c *credCache) refreshCred(ctx context.Context, now time.Time) error {
if c.fakeRefreshCred != nil {
return c.fakeRefreshCred(ctx, now)
}
start := now.Truncate(time.Second)
expiry := start.Add(7 * 24 * time.Hour)
cred, err := c.cli.GetUserDelegationCredential(
ctx,
service.KeyInfo{
Expiry: toPtr(expiry.UTC().Format(sas.TimeFormat)),
Start: toPtr(start.UTC().Format(sas.TimeFormat)),
},
nil,
)
if err != nil {
current := c.cred.Load()
if current == nil {
current = &credData{}
}
if current.expires.Before(c.now()) {
cd := &credData{
expires: current.expires,
err: err,
}
c.cred.Store(cd)
}
return err
}
cd := &credData{
cred: cred,
expires: expiry,
}
c.cred.Store(cd)
return nil
}