* MM-30863: Fix race in LRU
After shortening the critical section, we missed out the fact
that the byte slice is still accessible after the element is returned.
So the lock needs to be active until the byte slice is fully read and
unmarshaled
https://mattermost.atlassian.net/browse/MM-30863
```release-note
NONE
```
* incorporate suggestions
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Add a new handler to allow authentication via CWS API Key
* Make error better
* Add tests and cases for new handler functions
* Move some code around
* Add test for GetCloudSession function
* unset the env after test completion
* Remove white space
* Add CWS Webhook endpoint and email code
* handle returned errors from email sending function
* Change FailureCode to FailureMessage
* Remove unnecessary translations
* Fix translations
* Forgot to add template
* Update api4/cloud.go
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Update api4/cloud.go
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Update api4/cloud.go
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* PR changes
* Update app/email.go
Co-authored-by: Mario de Frutos Dieguez <mario@defrutos.org>
* Close body in proper spot
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
Co-authored-by: Mario de Frutos Dieguez <mario@defrutos.org>
* Add support for boolean feature flags.
* Tests
* Use strconv.ParseBool to accept additional values as true.
* Update config/feature_flags.go
Co-authored-by: Christopher Poile <cpoile@gmail.com>
Co-authored-by: Christopher Poile <cpoile@gmail.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Syncronize access when updating config on search layer
* Simplify validity of race condition on tests
* Add License header on new file
* Use atomic.Value for config access on search layer
* Apply PR suggestions
* Add a new handler to allow authentication via CWS API Key
* Make error better
* Add tests and cases for new handler functions
* Move some code around
* Add test for GetCloudSession function
* unset the env after test completion
* Remove white space
* Change Info to Warn
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
A cluster changed listener always runs in a separate goroutine.
This causes a race condition when a new member gets added in the cluster.
We fix it by accessing the value atomically.
I tried to write a test for this, but it wasn't triggering at all.
The best way is to just start the server with cluster enabled in race mode,
and verify that the race doesn't happen.
https://mattermost.atlassian.net/browse/MM-30319
```release-notes
NONE
```
* MM-29107: Fix race in LDAP login
We remove the goroutine to make things synchronous.
This removes the race and makes things more reliable.
It is already tested by TestLogin in ldap_test.go in -race mode.
https://mattermost.atlassian.net/browse/MM-29107
```release-note
NONE
```
* Address review comments
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Add logic to skip duplicate table errors when initializing db
* Update store/sqlstore/supplier.go
Co-authored-by: Gabe Jackson <gabe@coffeepowered.co>
* Handle mysql and pg table already exist errors
* Apply PR suggestions
* Fix typo on IsDuplicate
* Update mysql error link to point to the official one
Co-authored-by: Gabe Jackson <gabe@coffeepowered.co>
* Don't allow slack imports in cloud installations
* Update api4/team.go
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Add a test case for when the import is restricted in cloud
* Update api4/team_test.go
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Check for cloud license instead of restrictsystemadmin
* fix tests
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
The code was doing `go fakeApp.UpdateProductNotices()`
due to which the Store object was accessed in a racy manner
when it was reset if the localcachelayer flag was set.
We fix this by using the StoreOverride functionality
to pre-define what store to use while initializing the server
itself so that there isn't a need to reset the store _after_
the server is set.
We also apply the same fix in the app and api4 layers too
to prevent similar things from happening there.
https://mattermost.atlassian.net/browse/MM-29487
```release-note
NONE
```
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Make UpdateSidebarCategories return the original categories
* MM-20897 Add category muting
* Prevent muting the DMs category
* Fix muted state not being stored in the database
* Address feedback
* Address some feedback
* Fix unit tests
* MM-20897 Mute/unmute channels in the database in bulk
* Satisfy golangci-lint