Merge branch 'release-4.7' into XYZ-110
Этот коммит содержится в:
@@ -110,8 +110,7 @@ func (s SqlChannelMemberHistoryStore) getFromChannelMemberHistoryTable(startTime
|
||||
query := `
|
||||
SELECT
|
||||
cmh.*,
|
||||
u.Email,
|
||||
u.Username
|
||||
u.Email
|
||||
FROM ChannelMemberHistory cmh
|
||||
INNER JOIN Users u ON cmh.UserId = u.Id
|
||||
WHERE cmh.ChannelId = :ChannelId
|
||||
@@ -131,10 +130,9 @@ func (s SqlChannelMemberHistoryStore) getFromChannelMemberHistoryTable(startTime
|
||||
func (s SqlChannelMemberHistoryStore) getFromChannelMembersTable(startTime int64, endTime int64, channelId string) ([]*model.ChannelMemberHistoryResult, error) {
|
||||
query := `
|
||||
SELECT DISTINCT
|
||||
ch.ChannelId,
|
||||
ch.UserId,
|
||||
u.Email,
|
||||
u.Username
|
||||
ch.ChannelId,
|
||||
ch.UserId,
|
||||
u.email
|
||||
FROM ChannelMembers AS ch
|
||||
INNER JOIN Users AS u ON ch.UserId = u.id
|
||||
WHERE ch.ChannelId = :ChannelId`
|
||||
@@ -160,7 +158,7 @@ func (s SqlChannelMemberHistoryStore) PermanentDeleteBatch(endTime int64, limit
|
||||
query =
|
||||
`DELETE FROM ChannelMemberHistory
|
||||
WHERE ctid IN (
|
||||
SELECT ctid FROM ChannelMemberHistory
|
||||
SELECT ctid FROM ChannelMemberHistory
|
||||
WHERE LeaveTime IS NOT NULL
|
||||
AND LeaveTime <= :EndTime
|
||||
LIMIT :Limit
|
||||
|
||||
@@ -225,8 +225,7 @@ func (s SqlComplianceStore) MessageExport(after int64, limit int) store.StoreCha
|
||||
Channels.Id AS ChannelId,
|
||||
Channels.DisplayName AS ChannelDisplayName,
|
||||
Users.Id AS UserId,
|
||||
Users.Email AS UserEmail,
|
||||
Users.Username
|
||||
Users.Email AS UserEmail
|
||||
FROM
|
||||
Posts
|
||||
LEFT OUTER JOIN Channels ON Posts.ChannelId = Channels.Id
|
||||
|
||||
@@ -322,10 +322,7 @@ type etagPosts struct {
|
||||
|
||||
func (s SqlPostStore) InvalidateLastPostTimeCache(channelId string) {
|
||||
lastPostTimeCache.Remove(channelId)
|
||||
|
||||
// Keys are "{channelid}{limit}" and caching only occurs on limits of 30 and 60
|
||||
lastPostsCache.Remove(channelId + "30")
|
||||
lastPostsCache.Remove(channelId + "60")
|
||||
lastPostsCache.Remove(channelId)
|
||||
}
|
||||
|
||||
func (s SqlPostStore) GetEtag(channelId string, allowFromCache bool) store.StoreChannel {
|
||||
@@ -442,9 +439,8 @@ func (s SqlPostStore) GetPosts(channelId string, offset int, limit int, allowFro
|
||||
return
|
||||
}
|
||||
|
||||
// Caching only occurs on limits of 30 and 60, the common limits requested by MM clients
|
||||
if allowFromCache && offset == 0 && (limit == 60 || limit == 30) {
|
||||
if cacheItem, ok := lastPostsCache.Get(fmt.Sprintf("%s%v", channelId, limit)); ok {
|
||||
if allowFromCache && offset == 0 && limit == 60 {
|
||||
if cacheItem, ok := lastPostsCache.Get(channelId); ok {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheHitCounter("Last Posts Cache")
|
||||
}
|
||||
@@ -486,9 +482,8 @@ func (s SqlPostStore) GetPosts(channelId string, offset int, limit int, allowFro
|
||||
|
||||
list.MakeNonNil()
|
||||
|
||||
// Caching only occurs on limits of 30 and 60, the common limits requested by MM clients
|
||||
if offset == 0 && (limit == 60 || limit == 30) {
|
||||
lastPostsCache.AddWithExpiresInSecs(fmt.Sprintf("%s%v", channelId, limit), list, LAST_POSTS_CACHE_SEC)
|
||||
if offset == 0 && limit == 60 {
|
||||
lastPostsCache.AddWithExpiresInSecs(channelId, list, LAST_POSTS_CACHE_SEC)
|
||||
}
|
||||
|
||||
result.Data = list
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
VERSION_4_8_0 = "4.8.0"
|
||||
VERSION_4_7_0 = "4.7.0"
|
||||
VERSION_4_6_0 = "4.6.0"
|
||||
VERSION_4_5_0 = "4.5.0"
|
||||
@@ -65,7 +64,6 @@ func UpgradeDatabase(sqlStore SqlStore) {
|
||||
UpgradeDatabaseToVersion45(sqlStore)
|
||||
UpgradeDatabaseToVersion46(sqlStore)
|
||||
UpgradeDatabaseToVersion47(sqlStore)
|
||||
UpgradeDatabaseToVersion48(sqlStore)
|
||||
|
||||
// If the SchemaVersion is empty this this is the first time it has ran
|
||||
// so lets set it to the current version.
|
||||
@@ -351,10 +349,3 @@ func UpgradeDatabaseToVersion47(sqlStore SqlStore) {
|
||||
saveSchemaVersion(sqlStore, VERSION_4_7_0)
|
||||
}
|
||||
}
|
||||
|
||||
func UpgradeDatabaseToVersion48(sqlStore SqlStore) {
|
||||
//TODO: Uncomment the following condition when version 4.8.0 is released
|
||||
//if shouldPerformUpgrade(sqlStore, VERSION_4_7_0, VERSION_4_8_0) {
|
||||
// saveSchemaVersion(sqlStore, VERSION_4_8_0)
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ func testLogJoinEvent(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -58,7 +57,6 @@ func testLogLeaveEvent(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -84,7 +82,6 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -111,7 +108,6 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Nil(t, channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -121,7 +117,6 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Nil(t, channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -134,7 +129,6 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -144,7 +138,6 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -167,7 +160,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
@@ -200,7 +192,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-500, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime-100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -210,7 +201,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime+500, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -220,7 +210,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, joinTime+500, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -230,7 +219,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime-100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -240,7 +228,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, joinTime-100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime+100, *channelMembers[0].LeaveTime)
|
||||
|
||||
@@ -250,7 +237,6 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.Id, channelMembers[0].ChannelId)
|
||||
assert.Equal(t, user.Id, channelMembers[0].UserId)
|
||||
assert.Equal(t, user.Email, channelMembers[0].UserEmail)
|
||||
assert.Equal(t, user.Username, channelMembers[0].Username)
|
||||
assert.Equal(t, leaveTime+100, channelMembers[0].JoinTime)
|
||||
assert.Equal(t, leaveTime+200, *channelMembers[0].LeaveTime)
|
||||
}
|
||||
@@ -269,14 +255,12 @@ func testPermanentDeleteBatch(t *testing.T, ss store.Store) {
|
||||
user := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user = *store.Must(ss.User().Save(&user)).(*model.User)
|
||||
|
||||
user2 := model.User{
|
||||
Email: model.NewId() + "@mattermost.com",
|
||||
Nickname: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user2 = *store.Must(ss.User().Save(&user2)).(*model.User)
|
||||
|
||||
|
||||
@@ -341,8 +341,7 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
|
||||
// and two users that are a part of that team
|
||||
user1 := &model.User{
|
||||
Email: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
Email: model.NewId(),
|
||||
}
|
||||
user1 = store.Must(ss.User().Save(user1)).(*model.User)
|
||||
store.Must(ss.Team().SaveMember(&model.TeamMember{
|
||||
@@ -351,8 +350,7 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
}, -1))
|
||||
|
||||
user2 := &model.User{
|
||||
Email: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
Email: model.NewId(),
|
||||
}
|
||||
user2 = store.Must(ss.User().Save(user2)).(*model.User)
|
||||
store.Must(ss.Team().SaveMember(&model.TeamMember{
|
||||
@@ -417,7 +415,6 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.DisplayName, *messageExportMap[post1.Id].ChannelDisplayName)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post1.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post1.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post1.Id].Username)
|
||||
|
||||
// post2 was made by user1 in channel1 and team1
|
||||
assert.Equal(t, post2.Id, *messageExportMap[post2.Id].PostId)
|
||||
@@ -427,7 +424,6 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, channel.DisplayName, *messageExportMap[post2.Id].ChannelDisplayName)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post2.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post2.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post2.Id].Username)
|
||||
|
||||
// post3 is a DM between user1 and user2
|
||||
assert.Equal(t, post3.Id, *messageExportMap[post3.Id].PostId)
|
||||
@@ -436,5 +432,4 @@ func testComplianceMessageExport(t *testing.T, ss store.Store) {
|
||||
assert.Equal(t, directMessageChannel.Id, *messageExportMap[post3.Id].ChannelId)
|
||||
assert.Equal(t, user1.Id, *messageExportMap[post3.Id].UserId)
|
||||
assert.Equal(t, user1.Email, *messageExportMap[post3.Id].UserEmail)
|
||||
assert.Equal(t, user1.Username, *messageExportMap[post3.Id].Username)
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ func TestPostStore(t *testing.T, ss store.Store) {
|
||||
t.Run("PermDelete1Level", func(t *testing.T) { testPostStorePermDelete1Level(t, ss) })
|
||||
t.Run("PermDelete1Level2", func(t *testing.T) { testPostStorePermDelete1Level2(t, ss) })
|
||||
t.Run("GetWithChildren", func(t *testing.T) { testPostStoreGetWithChildren(t, ss) })
|
||||
t.Run("GetPostsWithDetails", func(t *testing.T) { testPostStoreGetPostsWithDetails(t, ss) })
|
||||
t.Run("GetPostsWtihDetails", func(t *testing.T) { testPostStoreGetPostsWtihDetails(t, ss) })
|
||||
t.Run("GetPostsBeforeAfter", func(t *testing.T) { testPostStoreGetPostsBeforeAfter(t, ss) })
|
||||
t.Run("GetPostsSince", func(t *testing.T) { testPostStoreGetPostsSince(t, ss) })
|
||||
t.Run("Search", func(t *testing.T) { testPostStoreSearch(t, ss) })
|
||||
@@ -490,7 +490,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
|
||||
}
|
||||
}
|
||||
|
||||
func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
func testPostStoreGetPostsWtihDetails(t *testing.T, ss store.Store) {
|
||||
o1 := &model.Post{}
|
||||
o1.ChannelId = model.NewId()
|
||||
o1.UserId = model.NewId()
|
||||
@@ -591,25 +591,6 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
if r2.Posts[o1.Id].Message != o1.Message {
|
||||
t.Fatal("Missing parent")
|
||||
}
|
||||
|
||||
// Run once to fill cache
|
||||
<-ss.Post().GetPosts(o1.ChannelId, 0, 30, true)
|
||||
|
||||
o6 := &model.Post{}
|
||||
o6.ChannelId = o1.ChannelId
|
||||
o6.UserId = model.NewId()
|
||||
o6.Message = "zz" + model.NewId() + "b"
|
||||
o6 = (<-ss.Post().Save(o6)).Data.(*model.Post)
|
||||
|
||||
// Should only be 6 since we hit the cache
|
||||
r3 := (<-ss.Post().GetPosts(o1.ChannelId, 0, 30, true)).Data.(*model.PostList)
|
||||
assert.Equal(t, 6, len(r3.Order))
|
||||
|
||||
ss.Post().InvalidateLastPostTimeCache(o1.ChannelId)
|
||||
|
||||
// Cache was invalidated, we should get all the posts
|
||||
r4 := (<-ss.Post().GetPosts(o1.ChannelId, 0, 30, true)).Data.(*model.PostList)
|
||||
assert.Equal(t, 7, len(r4.Order))
|
||||
}
|
||||
|
||||
func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
|
||||
|
||||
Ссылка в новой задаче
Block a user