github.com/vnforks/kid/v5@v5.22.1-0.20200408055009-b89d99c65676/store/localcachelayer/file_info_layer.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package localcachelayer 5 6 import ( 7 "github.com/vnforks/kid/v5/model" 8 "github.com/vnforks/kid/v5/store" 9 ) 10 11 type LocalCacheFileInfoStore struct { 12 store.FileInfoStore 13 rootStore *LocalCacheStore 14 } 15 16 func (s *LocalCacheFileInfoStore) handleClusterInvalidateFileInfo(msg *model.ClusterMessage) { 17 if msg.Data == CLEAR_CACHE_MESSAGE_DATA { 18 s.rootStore.fileInfoCache.Purge() 19 return 20 } 21 s.rootStore.fileInfoCache.Remove(msg.Data) 22 } 23 24 func (s LocalCacheFileInfoStore) GetForPost(postId string, readFromMaster, includeDeleted, allowFromCache bool) ([]*model.FileInfo, *model.AppError) { 25 if !allowFromCache { 26 return s.FileInfoStore.GetForPost(postId, readFromMaster, includeDeleted, allowFromCache) 27 } 28 29 cacheKey := postId 30 if includeDeleted { 31 cacheKey += "_deleted" 32 } 33 34 if fileInfo := s.rootStore.doStandardReadCache(s.rootStore.fileInfoCache, cacheKey); fileInfo != nil { 35 return fileInfo.([]*model.FileInfo), nil 36 } 37 38 fileInfos, err := s.FileInfoStore.GetForPost(postId, readFromMaster, includeDeleted, allowFromCache) 39 if err != nil { 40 return nil, err 41 } 42 43 if len(fileInfos) > 0 { 44 s.rootStore.doStandardAddToCache(s.rootStore.fileInfoCache, cacheKey, fileInfos) 45 } 46 47 return fileInfos, nil 48 } 49 50 func (s LocalCacheFileInfoStore) ClearCaches() { 51 s.rootStore.fileInfoCache.Purge() 52 if s.rootStore.metrics != nil { 53 s.rootStore.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Purge") 54 } 55 } 56 57 func (s LocalCacheFileInfoStore) InvalidateFileInfosForPostCache(postId string, deleted bool) { 58 cacheKey := postId 59 if deleted { 60 cacheKey += "_deleted" 61 } 62 s.rootStore.doInvalidateCacheCluster(s.rootStore.fileInfoCache, cacheKey) 63 if s.rootStore.metrics != nil { 64 s.rootStore.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Remove by PostId") 65 } 66 }