From 7214a8e265544c1e507351789409f75abe485acc Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 28 Jul 2018 18:40:31 -0700 Subject: [PATCH] fix init error --- weed/wdclient/masterclient.go | 3 ++- weed/wdclient/vid_map.go | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go index d2d5954e4..e3ffd4834 100644 --- a/weed/wdclient/masterclient.go +++ b/weed/wdclient/masterclient.go @@ -16,7 +16,7 @@ type MasterClient struct { currentMaster string masters []string - VidMap + vidMap } func NewMasterClient(ctx context.Context, clientName string, masters []string) *MasterClient { @@ -24,6 +24,7 @@ func NewMasterClient(ctx context.Context, clientName string, masters []string) * ctx: ctx, name: clientName, masters: masters, + vidMap: newVidMap(), } } diff --git a/weed/wdclient/vid_map.go b/weed/wdclient/vid_map.go index 7299606af..0b0cba178 100644 --- a/weed/wdclient/vid_map.go +++ b/weed/wdclient/vid_map.go @@ -15,12 +15,18 @@ type Location struct { PublicUrl string `json:"publicUrl,omitempty"` } -type VidMap struct { +type vidMap struct { sync.RWMutex vid2Locations map[uint32][]Location } -func (vc *VidMap) LookupVolumeServerUrl(vid string) (serverUrl string, err error) { +func newVidMap() vidMap { + return vidMap{ + vid2Locations: make(map[uint32][]Location), + } +} + +func (vc *vidMap) LookupVolumeServerUrl(vid string) (serverUrl string, err error) { id, err := strconv.Atoi(vid) if err != nil { glog.V(1).Infof("Unknown volume id %s", vid) @@ -35,7 +41,7 @@ func (vc *VidMap) LookupVolumeServerUrl(vid string) (serverUrl string, err error return locations[rand.Intn(len(locations))].Url, nil } -func (vc *VidMap) LookupFileId(fileId string) (fullUrl string, err error) { +func (vc *vidMap) LookupFileId(fileId string) (fullUrl string, err error) { parts := strings.Split(fileId, ",") if len(parts) != 2 { return "", errors.New("Invalid fileId " + fileId) @@ -47,14 +53,14 @@ func (vc *VidMap) LookupFileId(fileId string) (fullUrl string, err error) { return "http://" + serverUrl + "/" + fileId, nil } -func (vc *VidMap) GetLocations(vid uint32) (locations []Location) { +func (vc *vidMap) GetLocations(vid uint32) (locations []Location) { vc.RLock() defer vc.RUnlock() return vc.vid2Locations[vid] } -func (vc *VidMap) addLocation(vid uint32, location Location) { +func (vc *vidMap) addLocation(vid uint32, location Location) { vc.Lock() defer vc.Unlock() @@ -74,7 +80,7 @@ func (vc *VidMap) addLocation(vid uint32, location Location) { } -func (vc *VidMap) deleteLocation(vid uint32, location Location) { +func (vc *vidMap) deleteLocation(vid uint32, location Location) { vc.Lock() defer vc.Unlock()