Migrating file info store cache to the cache layer (#13045)
* Migrating file info store cache to the cache layer * Remove unrelated changes * Updating timer layer store * Fixing usage of invalidate cache * Removed repeated tests and unnecesiary require * Using doInvalidateCacheCluster instead of removing the cache directly * Addressing PR comments * Fixing imports * Fixing tests * Fixing license header
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b70d5df5c2
Коммит
cd382412fd
@@ -12,8 +12,6 @@ import (
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/cache"
|
||||
"github.com/mattermost/mattermost-server/v5/services/cache/lru"
|
||||
"github.com/mattermost/mattermost-server/v5/store"
|
||||
)
|
||||
|
||||
@@ -22,18 +20,7 @@ type SqlFileInfoStore struct {
|
||||
metrics einterfaces.MetricsInterface
|
||||
}
|
||||
|
||||
const (
|
||||
FILE_INFO_CACHE_SIZE = 25000
|
||||
FILE_INFO_CACHE_SEC = 1800 // 30 minutes
|
||||
)
|
||||
|
||||
var fileInfoCache cache.Cache = lru.New(FILE_INFO_CACHE_SIZE)
|
||||
|
||||
func (fs SqlFileInfoStore) ClearCaches() {
|
||||
fileInfoCache.Purge()
|
||||
if fs.metrics != nil {
|
||||
fs.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Purge")
|
||||
}
|
||||
}
|
||||
|
||||
func newSqlFileInfoStore(sqlStore SqlStore, metrics einterfaces.MetricsInterface) store.FileInfoStore {
|
||||
@@ -182,35 +169,10 @@ func (fs SqlFileInfoStore) GetByPath(path string) (*model.FileInfo, *model.AppEr
|
||||
return info, nil
|
||||
}
|
||||
|
||||
func (fs SqlFileInfoStore) InvalidateFileInfosForPostCache(postId string) {
|
||||
fileInfoCache.Remove(postId)
|
||||
if fs.metrics != nil {
|
||||
fs.metrics.IncrementMemCacheInvalidationCounter("File Info Cache - Remove by PostId")
|
||||
}
|
||||
func (fs SqlFileInfoStore) InvalidateFileInfosForPostCache(postId string, deleted bool) {
|
||||
}
|
||||
|
||||
func (fs SqlFileInfoStore) GetForPost(postId string, readFromMaster, includeDeleted, allowFromCache bool) ([]*model.FileInfo, *model.AppError) {
|
||||
cacheKey := postId
|
||||
if includeDeleted {
|
||||
cacheKey += "_deleted"
|
||||
}
|
||||
if allowFromCache {
|
||||
if cacheItem, ok := fileInfoCache.Get(cacheKey); ok {
|
||||
if fs.metrics != nil {
|
||||
fs.metrics.IncrementMemCacheHitCounter("File Info Cache")
|
||||
}
|
||||
|
||||
return cacheItem.([]*model.FileInfo), nil
|
||||
}
|
||||
if fs.metrics != nil {
|
||||
fs.metrics.IncrementMemCacheMissCounter("File Info Cache")
|
||||
}
|
||||
} else {
|
||||
if fs.metrics != nil {
|
||||
fs.metrics.IncrementMemCacheMissCounter("File Info Cache")
|
||||
}
|
||||
}
|
||||
|
||||
var infos []*model.FileInfo
|
||||
|
||||
dbmap := fs.GetReplica()
|
||||
@@ -238,10 +200,6 @@ func (fs SqlFileInfoStore) GetForPost(postId string, readFromMaster, includeDele
|
||||
return nil, model.NewAppError("SqlFileInfoStore.GetForPost",
|
||||
"store.sql_file_info.get_for_post.app_error", nil, "post_id="+postId+", "+err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
if len(infos) > 0 {
|
||||
fileInfoCache.AddWithExpiresInSecs(cacheKey, infos, FILE_INFO_CACHE_SEC)
|
||||
}
|
||||
|
||||
return infos, nil
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user