fix: make authManager a singleton

This commit is contained in:
Qiu Jian
2024-03-10 10:07:23 +08:00
parent b64c14376c
commit 08b2cb4e36
+18 -4
View File
@@ -20,6 +20,7 @@ import (
"net"
"net/http"
"strings"
"sync"
"time"
"yunion.io/x/jsonutils"
@@ -161,16 +162,29 @@ type authManager struct {
accessKeyCache *sAccessKeyCache
}
var (
authManagerInstane *authManager
authManagerLock *sync.Mutex = &sync.Mutex{}
)
func newAuthManager(cli *mcclient.Client, info *AuthInfo) *authManager {
authm := &authManager{
authManagerLock.Lock()
defer authManagerLock.Unlock()
if authManagerInstane != nil {
authManagerInstane.client = cli
authManagerInstane.info = info
return authManagerInstane
}
authManagerInstane = &authManager{
client: cli,
info: info,
tokenCacheVerify: NewTokenCacheVerify(),
accessKeyCache: newAccessKeyCache(),
}
authm.InitSync(authm)
go authm.startRefreshRevokeTokens()
return authm
authManagerInstane.InitSync(authManagerInstane)
go authManagerInstane.startRefreshRevokeTokens()
return authManagerInstane
}
func (a *authManager) startRefreshRevokeTokens() {