diff options
| author | LHHDZ <changlin.shi@ly.com> | 2022-09-06 11:00:16 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-05 20:00:16 -0700 |
| commit | bc629665de418ce71c85f83ae618b8f7e5ac42bc (patch) | |
| tree | ead15a555e3656db5ed0a2fc5de7ec8545c37e01 /weed/wdclient/masterclient.go | |
| parent | 7c277f36ec0cbe8fe0bfa41c8971ef0d5d49245b (diff) | |
| download | seaweedfs-bc629665de418ce71c85f83ae618b8f7e5ac42bc.tar.xz seaweedfs-bc629665de418ce71c85f83ae618b8f7e5ac42bc.zip | |
fix bug due to data racing on VidMap (#3606)
Diffstat (limited to 'weed/wdclient/masterclient.go')
| -rw-r--r-- | weed/wdclient/masterclient.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go index 6d88e56e9..b4888f448 100644 --- a/weed/wdclient/masterclient.go +++ b/weed/wdclient/masterclient.go @@ -27,7 +27,7 @@ type MasterClient struct { masters map[string]pb.ServerAddress grpcDialOption grpc.DialOption - vidMap + *vidMap vidMapCacheSize int OnPeerUpdate func(update *master_pb.ClusterNodeUpdate, startFrom time.Time) OnPeerUpdateLock sync.RWMutex @@ -303,9 +303,12 @@ func (mc *MasterClient) resetVidMap() { DataCenter: mc.DataCenter, cache: mc.cache, } - mc.vidMap = newVidMap(mc.DataCenter) - mc.vidMap.cache = tail + nvm := newVidMap(mc.DataCenter) + nvm.cache = tail + mc.vidMap = nvm + + //trim for i := 0; i < mc.vidMapCacheSize && tail.cache != nil; i++ { if i == mc.vidMapCacheSize-1 { tail.cache = nil |
