aboutsummaryrefslogtreecommitdiff
path: root/weed/filer/reader_at.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/filer/reader_at.go')
-rw-r--r--weed/filer/reader_at.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/weed/filer/reader_at.go b/weed/filer/reader_at.go
index f73f72429..04c64d449 100644
--- a/weed/filer/reader_at.go
+++ b/weed/filer/reader_at.go
@@ -38,9 +38,12 @@ type LookupFileIdFunctionType func(fileId string) (targetUrls []string, err erro
func LookupFn(filerClient filer_pb.FilerClient) LookupFileIdFunctionType {
vidCache := make(map[string]*filer_pb.Locations)
+ var vicCacheLock sync.RWMutex
return func(fileId string) (targetUrls []string, err error) {
vid := VolumeId(fileId)
+ vicCacheLock.RLock()
locations, found := vidCache[vid]
+ vicCacheLock.RUnlock()
waitTime := time.Second
for !found && waitTime < ReadWaitTime {
@@ -58,7 +61,9 @@ func LookupFn(filerClient filer_pb.FilerClient) LookupFileIdFunctionType {
glog.V(0).Infof("failed to locate %s", fileId)
return fmt.Errorf("failed to locate %s", fileId)
}
+ vicCacheLock.Lock()
vidCache[vid] = locations
+ vicCacheLock.Unlock()
return nil
})