in token_auto_update_client.go [31:71]
func (c *TokenAutoUpdateClient) flushSTSToken() {
for {
nowTime := time.Now()
c.lock.Lock()
sleepTime := c.nextExpire.Sub(nowTime)
if sleepTime < time.Duration(time.Minute) {
sleepTime = time.Duration(time.Second * 30)
} else if sleepTime < time.Duration(time.Minute*10) {
sleepTime = sleepTime / 10 * 7
} else if sleepTime < time.Duration(time.Hour) {
sleepTime = sleepTime / 10 * 6
} else {
sleepTime = sleepTime / 10 * 5
}
c.lock.Unlock()
if IsDebugLevelMatched(1) {
level.Info(Logger).Log("msg", "next fetch sleep interval : ", sleepTime.String())
}
trigger := time.After(sleepTime)
select {
case <-trigger:
err := c.fetchSTSToken()
if IsDebugLevelMatched(1) {
level.Info(Logger).Log("msg", "fetch sts token done, error : ", err)
}
case <-c.shutdown:
if IsDebugLevelMatched(1) {
level.Info(Logger).Log("msg", "receive shutdown signal, exit flushSTSToken")
}
return
}
if c.closeFlag {
if IsDebugLevelMatched(1) {
level.Info(Logger).Log("msg", "close flag is true, exit flushSTSToken")
}
return
}
}
}