Skip to content

Commit

Permalink
refresh session when reuse cached client
Browse files Browse the repository at this point in the history
  • Loading branch information
sp-yduck committed Nov 11, 2023
1 parent 1d00af3 commit 2351eb7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
13 changes: 12 additions & 1 deletion proxmox/service.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package proxmox

import (
"context"
"crypto/sha256"
"crypto/tls"
"errors"
Expand Down Expand Up @@ -52,7 +53,17 @@ func GetOrCreateService(params Params) (*Service, error) {

key := retrieveSessionKey(params)
if cachedSession, ok := sessionCache.Load(key); ok {
return cachedSession.(*Service), nil
svc := cachedSession.(*Service)
if err := svc.restclient.MakeNewSession(context.Background()); err != nil {
// failed to refresh session. just try to create new svc
s, err := NewService(params)
if err != nil {
return nil, err
}
sessionCache.Store(key, s)
return s, nil
}
return svc, nil
}

s, err := NewService(params)
Expand Down
4 changes: 2 additions & 2 deletions rest/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func NewRESTClient(baseUrl string, opts ...ClientOption) (*RESTClient, error) {
if client.token == "" && client.session == nil && client.credentials != nil {
ctx, cancel := context.WithTimeout(context.TODO(), 1*time.Minute)
defer cancel()
if err := client.makeNewSession(ctx); err != nil {
if err := client.MakeNewSession(ctx); err != nil {
return nil, err
}
}
Expand Down Expand Up @@ -209,7 +209,7 @@ func (c *RESTClient) makeAuthHeaders() http.Header {
return header
}

func (c *RESTClient) makeNewSession(ctx context.Context) error {
func (c *RESTClient) MakeNewSession(ctx context.Context) error {
var err error
c.session, err = c.PostTicket(ctx, *c.credentials)
if err != nil {
Expand Down

0 comments on commit 2351eb7

Please sign in to comment.