Commit 286c0e8f authored by ibuler's avatar ibuler

[Update] 修改连接缓存问题

parent 4933b6fd
...@@ -161,25 +161,12 @@ func newClient(asset *model.Asset, systemUser *model.SystemUser, timeout time.Du ...@@ -161,25 +161,12 @@ func newClient(asset *model.Asset, systemUser *model.SystemUser, timeout time.Du
} }
func NewClient(user *model.User, asset *model.Asset, systemUser *model.SystemUser, timeout time.Duration) (client *gossh.Client, err error) { func NewClient(user *model.User, asset *model.Asset, systemUser *model.SystemUser, timeout time.Duration) (client *gossh.Client, err error) {
key := fmt.Sprintf("%s_%s_%s", user.ID, asset.ID, systemUser.ID) client = GetClientFromCache(user, asset, systemUser)
clientLock.RLock() if client != nil {
client, ok := sshClients[key]
clientLock.RUnlock()
var u = user.Username
var ip = asset.IP
var sysName = systemUser.Username
if ok {
clientLock.Lock()
clientsRefCounter[client]++
var counter = clientsRefCounter[client]
logger.Infof("Reuse connection: %s->%s@%s ref: %d", u, sysName, ip, counter)
clientLock.Unlock()
return client, nil return client, nil
} }
key := fmt.Sprintf("%s_%s_%s", user.ID, asset.ID, systemUser.ID)
client, err = newClient(asset, systemUser, timeout) client, err = newClient(asset, systemUser, timeout)
if err == nil { if err == nil {
clientLock.Lock() clientLock.Lock()
...@@ -198,7 +185,14 @@ func GetClientFromCache(user *model.User, asset *model.Asset, systemUser *model. ...@@ -198,7 +185,14 @@ func GetClientFromCache(user *model.User, asset *model.Asset, systemUser *model.
if !ok { if !ok {
return return
} }
var u = user.Username
var ip = asset.IP
var sysName = systemUser.Username
clientsRefCounter[client]++ clientsRefCounter[client]++
var counter = clientsRefCounter[client]
logger.Infof("Reuse connection: %s->%s@%s ref: %d", u, sysName, ip, counter)
return return
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment