mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
ensure cached client with updated storage conf
This commit is contained in:
parent
8e125339d5
commit
3faaa6e360
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
||||
"github.com/chrislusf/seaweedfs/weed/pb/remote_pb"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"io"
|
||||
"strings"
|
||||
"sync"
|
||||
|
@ -76,9 +77,14 @@ type RemoteStorageClientMaker interface {
|
|||
HasBucket() bool
|
||||
}
|
||||
|
||||
type CachedRemoteStorageClient struct {
|
||||
*remote_pb.RemoteConf
|
||||
RemoteStorageClient
|
||||
}
|
||||
|
||||
var (
|
||||
RemoteStorageClientMakers = make(map[string]RemoteStorageClientMaker)
|
||||
remoteStorageClients = make(map[string]RemoteStorageClient)
|
||||
remoteStorageClients = make(map[string]CachedRemoteStorageClient)
|
||||
remoteStorageClientsLock sync.Mutex
|
||||
)
|
||||
|
||||
|
@ -107,8 +113,8 @@ func GetRemoteStorage(remoteConf *remote_pb.RemoteConf) (RemoteStorageClient, er
|
|||
defer remoteStorageClientsLock.Unlock()
|
||||
|
||||
existingRemoteStorageClient, found := remoteStorageClients[remoteConf.Name]
|
||||
if found {
|
||||
return existingRemoteStorageClient, nil
|
||||
if found && proto.Equal(existingRemoteStorageClient.RemoteConf, remoteConf) {
|
||||
return existingRemoteStorageClient.RemoteStorageClient, nil
|
||||
}
|
||||
|
||||
newRemoteStorageClient, err := makeRemoteStorageClient(remoteConf)
|
||||
|
@ -116,7 +122,10 @@ func GetRemoteStorage(remoteConf *remote_pb.RemoteConf) (RemoteStorageClient, er
|
|||
return nil, fmt.Errorf("make remote storage client %s: %v", remoteConf.Name, err)
|
||||
}
|
||||
|
||||
remoteStorageClients[remoteConf.Name] = newRemoteStorageClient
|
||||
remoteStorageClients[remoteConf.Name] = CachedRemoteStorageClient{
|
||||
RemoteConf: remoteConf,
|
||||
RemoteStorageClient: newRemoteStorageClient,
|
||||
}
|
||||
|
||||
return newRemoteStorageClient, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue