github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/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/mattermost/mattermost-server/v5/model" 8 "github.com/mattermost/mattermost-server/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 == ClearCacheMessageData { 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, error) { 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 var fileInfo []*model.FileInfo 35 if err := s.rootStore.doStandardReadCache(s.rootStore.fileInfoCache, cacheKey, &fileInfo); err == nil { 36 return fileInfo, nil 37 } 38 39 fileInfos, err := s.FileInfoStore.GetForPost(postId, readFromMaster, includeDeleted, allowFromCache) 40 if err != nil { 41 return nil, err 42 } 43 44 if len(fileInfos) > 0 { 45 s.rootStore.doStandardAddToCache(s.rootStore.fileInfoCache, cacheKey, fileInfos) 46 } 47 48 return fileInfos, nil 49 } 50 51 func (s LocalCacheFileInfoStore) ClearCaches() { 52 s.rootStore.fileInfoCache.Purge() 53 if s.rootStore.metrics != nil { 54 s.rootStore.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Purge") 55 } 56 } 57 58 func (s LocalCacheFileInfoStore) InvalidateFileInfosForPostCache(postId string, deleted bool) { 59 cacheKey := postId 60 if deleted { 61 cacheKey += "_deleted" 62 } 63 s.rootStore.doInvalidateCacheCluster(s.rootStore.fileInfoCache, cacheKey) 64 if s.rootStore.metrics != nil { 65 s.rootStore.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Remove by PostId") 66 } 67 }