Commit Graph

885 Commits

Author SHA1 Message Date
Brian Ledbetter
bda24c8fe0 Match Users Even When SAML (+other) Contains Mixed Case (#14587) 2020-08-14 14:03:15 +02:00
Rodrigo Villablanca
20e44399c7 SystemStore migration to return plain errors (#14835)
* SystemStore migration to return plain errors

* Fix nilness

* Fix translations

* Fix merge

* Fix layers

* Fix merge errors

* Lint: remove unnecessary use of sprint

* Fix merge errors

* Fix i18n

Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
2020-08-13 20:32:57 +05:30
Ashish Bhate
e8d431ee7c [MM-26837] attempt at fixing flaky test on mysql-5.6 (#15110)
Summary

- Attempt at fixing the AutocompleteInTeam/empty_string test which is flaky on MySQL-5.6. This is likely an index_merge_intersection optimization issue. See https://community.mattermost.com/core/pl/uzgygwa9e3d4pns14ayfs7mobw
    for more discussion. The fix here simply modifies the where clause to change the query plan so index_merge_intersection is not used, while also not introducing a temporary table or a filesort.

Ticket Link

- https://mattermost.atlassian.net/browse/MM-26837
2020-08-13 20:03:26 +05:30
Rodrigo Villablanca
32b7d2b5f1 StatusStore migration (#14978)
* Finished!

* Typos

* Fix error

* Fix layers

* Lint: remove unnecessary use of sprint

* Fix shadowing err
2020-08-13 11:12:08 +05:30
Rodrigo Villablanca
909cda6d49 Pluginstore migration (#14971)
Automatic Merge
2020-08-13 01:35:57 -04:00
Jesús Espino
19173ea6ff Migrating Team.SaveMember/SaveMultipleMembers into errors (#14924)
* Migrating Team.SaveMember/SaveMultipleMembers into errors

* Removing copy/paste comments

* Fixing another small thing

* Fixing tests

* Addressing PR review comments

* Fixing some tests

* Fixing golangci-lint

* Fixing linter

* Regenerating store layers

* Fix lint error after merge

* Other lint error fixed

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-08-12 21:02:41 +02:00
Jesús Espino
1b141678fe Adding initial retry layer version (#14954)
* Adding initial retry layer version

* Some simplification around the generated code

* Generating retry layer again

* Improving naming generation in store generated layers

* Address PR review comments

* Updating store layers

* Addressing PR review comments

* fixing lint errors

* Updating store layers

* Adding license header

* Applying the retry layer to the reaction_store

* Regenerating retry layer
2020-08-12 20:05:16 +02:00
Rodrigo Villablanca
5566395032 First part of PostStore migration (#15123)
Automatic Merge
2020-08-12 13:35:57 -04:00
Agniva De Sarker
3124b81229 MM-27040: Fix flaky tests due to same UpdateAt timestamp (#15216)
* MM-27040: Fix flaky tests due to same UpdateAt timestamp

Update queries are not guaranteed to always update the row.
Since we are only bumping the UpdateAt timestamps, if 2 update
requests hit concurrently within the same millisecond, then one
is bound to fail.

We fix all cases in the codebase where we were updating the UpdateAt
field to not check for count != 1, but rather count > 1.

A similar fix was already done in 3f46cf6f60.

* Remove incorrect test
2020-08-11 21:03:23 +05:30
Christopher Poile
a540dcdf9c move MM-26057 to 5.28; set previous PluginIds to '' (#15218)
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-08-11 09:48:08 -04:00
Agniva De Sarker
8138600dd1 MM-27575: Use index hints to prevent index_merge_intersection (#15207)
Even after specifying all the 3 columns to coerce MySQL into choosing
the right multi-column index, it sometimes uses 2 separate indices
and does an index_merge of them.

This creates problems because the DeleteAt=0 search is essentially
the entire Posts table, and causes a disastrously bad performance
than even choosing the wrong index (idx_create_at).

The problem with this approach is that we hardcode the decision
to a specific index when MySQL was free to choose the right index
depending on table statistics. However, there does not appear to be
a case where this index can cause regressions than using some other index.

Another option here was to set optimizer_switch="index_merge_intersection=off"
at a session level for a transaction and then switch it back on after the
query is done.

However, this can cause some unintentional consequences because this setting
is only available at a session level and not at a query level.
There is no need to set something at the session level when an index hint suffices.

https://mattermost.atlassian.net/browse/MM-27575
2020-08-10 22:40:19 +05:30
Hossein Ahmadian-Yazdi
4f46fefd7d include user delete at (#15191) 2020-08-07 12:59:34 -04:00
Amarjeet Anand
fb453d578f [MM-24526] Filter * characters from the search terms in DB (#14884) 2020-08-05 13:43:31 +02:00
Rodrigo Villablanca
86290685ae RoleStore migration (#15017)
Automatic Merge
2020-08-04 16:37:21 +02:00
dantepippi
d22dd262ee [MM-24665] refactor team store to use squirrel (#14549)
* Refactor team store to use squirrel

* Fixing or expression

* Refactor team store to use squirrel

* Refactor team store to use squirrel

* Refactor team store to use squirrel

* Refactor team store to use squirrel

* Removing shadow declaration

* Fix error messages

* Improving Update() and Delete() calls

* Update store/sqlstore/team_store.go

Using squirrel to build 'in' clause

Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>

* Add missing translation

Co-authored-by: Dante Pippi <dantepippi@gmai.com>
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
Co-authored-by: mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Claudio Costa <cstcld91@gmail.com>
2020-08-03 14:24:26 +02:00
Christopher Poile
c5c6a5ce53 MM-26057 - Add CreateCommand plugin API (#14916)
Automatic Merge
2020-07-31 17:40:15 +02:00
Rodrigo Villablanca
1c5b6522e3 WebhookStore migration (#15042)
* Migration completed

* Fix tests

Co-authored-by: Jesús Espino <jespinog@gmail.com>
2020-07-31 15:53:10 +02:00
Harrison Healey
b15aba63f1 MM-27204 Remove channels from old category when creating new one (#15108)
* MM-27204 Remove channels from old category when creating new one

* Actually run unit tests
2020-07-28 08:59:47 -04:00
Agniva De Sarker
83974d8a8d preferencestore (#15018)
* Starting migration

* Migration finished

* Fix i18n

* Fix some tests

* Fix typos

* Remove overwite of http status

* Add i18n string

* Fix i18n

* fix breakages

* fix tests

Co-authored-by: Rodrigo Villablanca <villa061004@gmail.com>
2020-07-28 10:27:24 +05:30
Farhan Munshi
c511042c0f [MM-26969] Add team filters to search teams (#15065)
* Add team filters to search teams

Remove unneeded logs

Add team filters to search teams

* Use bool pointers for filters

Re-add include group constrained

Fix lint

Return the union of filters
2020-07-27 15:11:39 -04:00
Agniva De Sarker
77f7a97bee MM-25563: Add endpoint to fetch only archived channels (#15031)
Automatic Merge
2020-07-27 13:31:39 +02:00
Agniva De Sarker
29c8b58fc7 MM-25478: Migrate compliancestore to plain error (#15074)
* ComplianceStore migration

* Fix imports

* Added one string

* fix go.tools.mod

Co-authored-by: Rodrigo Villablanca <villa061004@gmail.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-27 15:23:02 +05:30
Claudio Costa
e5edf2683d [MM-25652] Add /integrity endpoint to local mode API (#15033)
* Fix direct/group channel false positives

* Move public structures to model package

* Expose CheckIntegrity as a local API method

* Remove extra file

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-27 10:20:22 +02:00
Harrison Healey
504f45b6ec MM-27007 Remove automatic sidebar migration (#15087)
* MM-27007 Add migration of favorited channels to CreateInitialSidebarCategories

* MM-27007 Rewrite migrateFavortitesToSidebarT to use ROW_NUMBER() when available

* MM-27007 Remove automatic sidebar migration

* Remove old i18n strings

* Fix typo

* Address feedback

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-23 20:54:29 -03:00
Farhan Munshi
ed34468996 [MM-25990] Add filters to search all channels (#15009)
* MM-25990 Add filters to search all channels endpoint and clean up tests

* Add deleted filter

* Remove redundant private public query
2020-07-23 10:46:33 -04:00
Rodrigo Villablanca
d9529183b2 UserAccessTokenStore migration (#15029)
* Migration completed

* Suggestions

* Fix no new var

* Fix another no new var in the left side
2020-07-23 14:28:49 +05:30
Harrison Healey
14aba9bccb MM-26410/MM-26825 Improve syncing between favorites category and preferences (#15048)
* MM-26410 Allow moving channels into Favorites when they're favorited in prefs

* MM-26410 Fix management of Favorites category when updating preferences

* MM-26410 Add management of Favorites category when deleting preferences

* Address feedback 1

* Remove WHERE (1=1) from query

* Remove unnecessary sq.Expr

* Rewrite query to use left join

* Remove redundant where statement and add some more tests

* Fix linting issues

* Rename addChannelToFavoritesCategory to addChannelToFavoritesCategory
2020-07-22 09:04:40 -04:00
Carlos Tadeu Panato Junior
38557c4023 db: prepare db upgrade to 5.27 (#15069)
Automatic Merge
2020-07-22 12:43:35 +02:00
Carlos Tadeu Panato Junior
06b8b2ae4a db: upgrade DB to 5.26 (#15068) 2020-07-22 11:46:22 +02:00
Agniva De Sarker
bf03f391e6 MM-27041: Do not run tests against both DBs in CI (#15060)
* MM-27041: Do not run tests against both DBs in CI

We already run the entire test suite for both mysql and postgres in parallel in CI.
So we just run the tests for the current database set.

* Fix incorrect env var
2020-07-20 22:50:00 +05:30
Claudio Costa
484e813dca Return 400 error if limit_after is zero (#15049) 2020-07-20 10:08:52 +02:00
dantepippi
aae3b9650f [MM-25477] - Migrate command webhook store AppError to error (#14703)
* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Migrate command webhook store AppError to error

* Changes requested in the review.

* Changing http status

* fix i18n

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
2020-07-19 08:42:03 +05:30
Siyuan Liu
c7f7bef9ec move cache2 package to cache (#14921)
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-18 13:31:06 +05:30
Agniva De Sarker
3f46cf6f60 MM-18006: Fix flaky test CreateOrRestoreGroupMember (#14955)
Updating a Group or a GroupMember only changed the UpdateAt or CreateAt times
respectively. And it threw an error if number of rows changed was not 1.

However, it can happen that 2 calls happen so fast that 1 milisecond does not pass,
or even 2 concurrent calls at the same time might happen so that model.GetMillis
return the same timestamp. In those cases, the number of rows updated can be 0.

The error should just check if the number is greater than 1, instead of not equal to 1.
This makes it more robust and correct.

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-18 09:57:58 +05:30
Rodrigo Villablanca
93a537a636 OAuthStore migration (#15013)
Automatic Merge
2020-07-17 12:56:08 +02:00
Harrison Healey
cb89c53dcc MM-26826 Populate orphaned channels in a transaction (#15016) 2020-07-16 12:52:09 -04:00
Farhan Munshi
c0bfa58ec1 [MM-26574] Add role filters to get users, users search and add getFilteredUserStats endpoint (#14998)
* MM-26574 Add role filters to user search and get

* Add ability to get filtered user stats

Add support for include bots

* Add tests for user count with filters

Add tests

* Apply changes from code review

* Fix guest filtering

* Fix up tests related to guests

* Clean role names

* Trigger CI

* Trigger CI
2020-07-16 12:37:26 -04:00
Joshua Bezaleel Abednego
48f0b7fd76 MM-25476: Migrate AppError from command_store.go (#14643)
Automatic Merge
2020-07-16 15:26:07 +02:00
Joshua Bezaleel Abednego
4ba6c35813 [MM-24664] Plugin_store queries squirrel refactor (#14523)
* Use squirrel to build query for plugin store

* Typo of PluginkeyValueStore to PluginKeyValueStore

* wrong parameter of queryBuilder in Get method

* Use casting to int for comparison on ExpireAt

* Revert query for CompareAndSet and CompareAndDelete temporarily

* Delete query of expired value

* Update query when oldValue is not nil

* Check count query when there is no row affected

* Delete query on CompareAndDelete

* Put squirrel in separate import group

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
2020-07-15 22:22:35 +05:30
Rodrigo Villablanca
87dfbc13c0 SessionStore migration (#15002)
* Finished

* Fiximports

* Fix i18n
2020-07-15 18:56:28 +05:30
Mario de Frutos Dieguez
6107660483 [MM-24088] Use Raw SQL query for PluginStore.Get instead of GORP (#14650)
* Use Raw SQL query instead of GORP

As part of performance improvements we're moving the top
used queries to avoid using gorp and get rid of the overhead
caused by the reflection usage
2020-07-15 09:19:51 +02:00
dantepippi
6ad5ef2b43 [MM-24944] Refactor command store to use squirrel (#14552)
Automatic Merge
2020-07-13 21:26:07 +02:00
Farhan Munshi
da95d40e33 Always clear channel cache when scheme is deleted (#14989) 2020-07-10 00:09:00 -04:00
Harrison Healey
b0b9c707a6 MM-26793 Fix accidentally removing other users' favorites again (#14995) 2020-07-09 11:08:08 -04:00
Rodrigo Villablanca
1302492874 ClusterDiscoveryStore migration (#14970)
Automatic Merge
2020-07-09 15:24:11 +02:00
Rodrigo Villablanca
8b6a5fc5d7 TokenStore migration to return plain errors (#14875)
* TokenStore migration to return plain errors

* Fix translations

* Fix: returned error is ignored and http.StatusBadRequest is always returned

* Fix

* Fix translations

* Suggestions

* Changed from BadRequest to NotFound

* Setting the correct http status

* Changed test to expect 404 status

* Fix error
2020-07-09 12:46:27 +05:30
Mario de Frutos Dieguez
4df6019f61 [MM-24089] Remove use of Gorp in ChannelStore.GetAllChannelMembersForUser (#14663)
* Remove use of Gorp in ChannelStore.GetAllChannelMembersForUser

In order to improve performance, we're removing gorp calls in the
most used queries in the platform and this is one of them
2020-07-09 09:13:17 +02:00
Harrison Healey
7910e237b9 MM-26793 Fix accidentally removing other users' favorites (#14988) 2020-07-08 15:30:20 -04:00
Harrison Healey
302e59a0fe MM-26753 Create initial sidebar categories on demand if migration hasn't ran (#14981)
* MM-26753 Change CreateInitialSidebarCategories to only take a user ID

* MM-26753 Create initial sidebar categories on demand if migration hasn't ran

* Wait for sidebar categories to be loaded in case of replication lag
2020-07-08 12:07:42 -04:00
Farhan Munshi
31200fc657 [MM-26541] Parse channel member counts using LIKE instead of using JSON (#14941)
* MM-26541 parse channel member counts using like instead of using JSON as mysql versions do not support json extract

* Use a constant for default timezone

* Update wording and comments

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2020-07-08 10:56:47 -04:00