mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
[GH-13099] Migrate lastPostTimeCache cache from store/sqlstore/post_store.go to the new store/localcachelayer (#13134)
Automatic Merge
This commit is contained in:
@@ -23,29 +23,17 @@ import (
|
||||
type SqlPostStore struct {
|
||||
SqlStore
|
||||
metrics einterfaces.MetricsInterface
|
||||
lastPostTimeCache *utils.Cache
|
||||
maxPostSizeOnce sync.Once
|
||||
maxPostSizeCached int
|
||||
}
|
||||
|
||||
const (
|
||||
LAST_POST_TIME_CACHE_SIZE = 25000
|
||||
LAST_POST_TIME_CACHE_SEC = 900 // 15 minutes
|
||||
)
|
||||
|
||||
func (s *SqlPostStore) ClearCaches() {
|
||||
s.lastPostTimeCache.Purge()
|
||||
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheInvalidationCounter("Last Post Time - Purge")
|
||||
}
|
||||
}
|
||||
|
||||
func NewSqlPostStore(sqlStore SqlStore, metrics einterfaces.MetricsInterface) store.PostStore {
|
||||
s := &SqlPostStore{
|
||||
SqlStore: sqlStore,
|
||||
metrics: metrics,
|
||||
lastPostTimeCache: utils.NewLru(LAST_POST_TIME_CACHE_SIZE),
|
||||
maxPostSizeCached: model.POST_MESSAGE_MAX_RUNES_V1,
|
||||
}
|
||||
|
||||
@@ -316,31 +304,9 @@ type etagPosts struct {
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) InvalidateLastPostTimeCache(channelId string) {
|
||||
s.lastPostTimeCache.Remove(channelId)
|
||||
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheInvalidationCounter("Last Post Time - Remove by Channel Id")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) GetEtag(channelId string, allowFromCache bool) string {
|
||||
if allowFromCache {
|
||||
if cacheItem, ok := s.lastPostTimeCache.Get(channelId); ok {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheHitCounter("Last Post Time")
|
||||
}
|
||||
return fmt.Sprintf("%v.%v", model.CurrentVersion, cacheItem.(int64))
|
||||
} else {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheMissCounter("Last Post Time")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheMissCounter("Last Post Time")
|
||||
}
|
||||
}
|
||||
|
||||
var et etagPosts
|
||||
err := s.GetReplica().SelectOne(&et, "SELECT Id, UpdateAt FROM Posts WHERE ChannelId = :ChannelId ORDER BY UpdateAt DESC LIMIT 1", map[string]interface{}{"ChannelId": channelId})
|
||||
var result string
|
||||
@@ -350,7 +316,6 @@ func (s *SqlPostStore) GetEtag(channelId string, allowFromCache bool) string {
|
||||
result = fmt.Sprintf("%v.%v", model.CurrentVersion, et.UpdateAt)
|
||||
}
|
||||
|
||||
s.lastPostTimeCache.AddWithExpiresInSecs(channelId, et.UpdateAt, LAST_POST_TIME_CACHE_SEC)
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -485,22 +450,6 @@ func (s *SqlPostStore) GetPosts(options model.GetPostsOptions, _ bool) (*model.P
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, *model.AppError) {
|
||||
if allowFromCache {
|
||||
// If the last post in the channel's time is less than or equal to the time we are getting posts since,
|
||||
// we can safely return no posts.
|
||||
if cacheItem, ok := s.lastPostTimeCache.Get(options.ChannelId); ok && cacheItem.(int64) <= options.Time {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheHitCounter("Last Post Time")
|
||||
}
|
||||
list := model.NewPostList()
|
||||
return list, nil
|
||||
}
|
||||
}
|
||||
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheMissCounter("Last Post Time")
|
||||
}
|
||||
|
||||
var posts []*model.Post
|
||||
|
||||
replyCountQuery1 := ""
|
||||
@@ -544,20 +493,13 @@ func (s *SqlPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFr
|
||||
|
||||
list := model.NewPostList()
|
||||
|
||||
latestUpdate := options.Time
|
||||
|
||||
for _, p := range posts {
|
||||
list.AddPost(p)
|
||||
if p.UpdateAt > options.Time {
|
||||
list.AddOrder(p.Id)
|
||||
}
|
||||
if latestUpdate < p.UpdateAt {
|
||||
latestUpdate = p.UpdateAt
|
||||
}
|
||||
}
|
||||
|
||||
s.lastPostTimeCache.AddWithExpiresInSecs(options.ChannelId, latestUpdate, LAST_POST_TIME_CACHE_SEC)
|
||||
|
||||
return list, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user