MM-27187: Use the correct page offset for cache clear methods (#15094)
* MM-27187: Use the correct page offset for cache clear methods We were just using page and incrementing by 1. This would fetch pages one by one like (1-100, 2-102, 3-103) rather than (1-100,100-200,200-300). We fix that to update the correct page offset. * Trigger CI
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
46207a35f5
Коммит
aad940e104
@@ -2589,7 +2589,7 @@ func (a *App) ClearChannelMembersCache(channelID string) {
|
||||
page := 0
|
||||
|
||||
for {
|
||||
channelMembers, err := a.Srv().Store.Channel().GetMembers(channelID, page, perPage)
|
||||
channelMembers, err := a.Srv().Store.Channel().GetMembers(channelID, page*perPage, perPage)
|
||||
if err != nil {
|
||||
a.Log().Warn("error clearing cache for channel members", mlog.String("channel_id", channelID))
|
||||
break
|
||||
|
||||
@@ -1877,6 +1877,28 @@ func TestMarkChannelsAsViewedPanic(t *testing.T) {
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestClearChannelMembersCache(t *testing.T) {
|
||||
th := SetupWithStoreMock(t)
|
||||
defer th.TearDown()
|
||||
|
||||
mockStore := th.App.Srv().Store.(*mocks.Store)
|
||||
mockChannelStore := mocks.ChannelStore{}
|
||||
cms := model.ChannelMembers{}
|
||||
for i := 0; i < 200; i++ {
|
||||
cms = append(cms, model.ChannelMember{
|
||||
ChannelId: "1",
|
||||
})
|
||||
}
|
||||
mockChannelStore.On("GetMembers", "channelID", 0, 100).Return(&cms, nil)
|
||||
mockChannelStore.On("GetMembers", "channelID", 100, 100).Return(&model.ChannelMembers{
|
||||
model.ChannelMember{
|
||||
ChannelId: "1",
|
||||
}}, nil)
|
||||
mockStore.On("Channel").Return(&mockChannelStore)
|
||||
|
||||
th.App.ClearChannelMembersCache("channelID")
|
||||
}
|
||||
|
||||
func TestSidebarCategory(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
@@ -1643,7 +1643,7 @@ func (a *App) ClearTeamMembersCache(teamID string) {
|
||||
page := 0
|
||||
|
||||
for {
|
||||
teamMembers, err := a.Srv().Store.Team().GetMembers(teamID, page, perPage, nil)
|
||||
teamMembers, err := a.Srv().Store.Team().GetMembers(teamID, page*perPage, perPage, nil)
|
||||
if err != nil {
|
||||
a.Log().Warn("error clearing cache for team members", mlog.String("team_id", teamID), mlog.String("err", err.Error()))
|
||||
break
|
||||
|
||||
@@ -11,7 +11,9 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/store/storetest/mocks"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -1136,3 +1138,24 @@ func TestInvalidateAllEmailInvites(t *testing.T) {
|
||||
_, err = th.App.Srv().Store.Token().GetByToken(t3.Token)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestClearTeamMembersCache(t *testing.T) {
|
||||
th := SetupWithStoreMock(t)
|
||||
defer th.TearDown()
|
||||
|
||||
mockStore := th.App.Srv().Store.(*mocks.Store)
|
||||
mockTeamStore := mocks.TeamStore{}
|
||||
tms := []*model.TeamMember{}
|
||||
for i := 0; i < 200; i++ {
|
||||
tms = append(tms, &model.TeamMember{
|
||||
TeamId: "1",
|
||||
})
|
||||
}
|
||||
mockTeamStore.On("GetMembers", "teamID", 0, 100, mock.Anything).Return(tms, nil)
|
||||
mockTeamStore.On("GetMembers", "teamID", 100, 100, mock.Anything).Return([]*model.TeamMember{{
|
||||
TeamId: "1",
|
||||
}}, nil)
|
||||
mockStore.On("Team").Return(&mockTeamStore)
|
||||
|
||||
th.App.ClearTeamMembersCache("teamID")
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user