aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/wdclient/masterclient.go13
1 files changed, 3 insertions, 10 deletions
diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go
index c883576f1..dd9b8b8c7 100644
--- a/weed/wdclient/masterclient.go
+++ b/weed/wdclient/masterclient.go
@@ -71,9 +71,10 @@ func (mc *MasterClient) GetLookupFileIdFunction() LookupFileIdFunctionType {
}
func (mc *MasterClient) LookupFileIdWithFallback(ctx context.Context, fileId string) (fullUrls []string, err error) {
- // Try cache first using the fast path - need to protect vidMap pointer access
+ // Try cache first using the fast path - grab both vidMap and dataCenter in one lock
mc.vidMapLock.RLock()
vm := mc.vidMap
+ dataCenter := vm.DataCenter
mc.vidMapLock.RUnlock()
fullUrls, err = vm.LookupFileId(ctx, fileId)
@@ -100,10 +101,6 @@ func (mc *MasterClient) LookupFileIdWithFallback(ctx context.Context, fileId str
}
// Build HTTP URLs from locations, preferring same data center
- mc.vidMapLock.RLock()
- dataCenter := mc.vidMap.DataCenter
- mc.vidMapLock.RUnlock()
-
var sameDcUrls, otherDcUrls []string
for _, loc := range locations {
httpUrl := "http://" + loc.Url + "/" + fileId
@@ -368,13 +365,9 @@ func (mc *MasterClient) tryConnectToMaster(ctx context.Context, master pb.Server
return err
}
- mc.vidMapLock.RLock()
- dataCenter := mc.vidMap.DataCenter
- mc.vidMapLock.RUnlock()
-
if err = stream.Send(&master_pb.KeepConnectedRequest{
FilerGroup: mc.FilerGroup,
- DataCenter: dataCenter,
+ DataCenter: mc.GetDataCenter(),
Rack: mc.rack,
ClientType: mc.clientType,
ClientAddress: string(mc.clientHost),