We throttle the concurrency limit in maintaining thread membership
for a given thread using a counting semaphore. The limit is currently
8 which is a decent number to start with.
On some more thinking, it would be even better if the sql query
could be modified to support batch updates.
https://mattermost.atlassian.net/browse/MM-41085
```release-note
NONE
```
* Pin GolangCI to a specific version
Go 1.16+ allows installing a tool directly from a specific version.
Therefore, we don't need to rely on the tool being pre-installed
and can directly install it using standard method.
This keeps the same version of the tool for a repo and limits the
binary placement to the GOBIN of the repo.
```release-note
NONE
```
This corrects a bug where exports that contained deleted teams
could fail to import. Channels must be skipped that belong to these
deleted teams in order to produce a valid import bundle.
This was introduced to let the functionality happen
via mmctl, but it does not differentiate between
sysadmins vs people having physical access to machines.
Therefore, we remove it and only keep the local endpoint
accessible from mmctl --local.
https://mattermost.atlassian.net/browse/MM-41184
```release-note
The api/v4/config/migrate API endpoint has been removed
in favor of the mmctl --local endpoint. API clients
won't be able to access this endpoint without having
physical access to the server.
```
- feat: On user_updated event, send unsanitized user to event source and send sanitized event to other users
- tests: Add tests for user_updated event changes
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Before gorp, to use sqlx we had to resort to using
internal structs without the `db:"-"` tag so that
it doesn't interfere with the gorp table generation.
Now that it's gone, we can use the original model structs.
```release-note
NONE
```
* MM-40664: fixes CRT notifications
Reply notification settings that take effect when CRT is off where
considered when CRT is on as well. Resulting, in some cases, in not
respecting the CRT setting for notifications.
This commit fixes that by guarding against IsCRTEnabledForUser when
checking for reply notification settings.
* Adds test cases
* Satisfies the vet
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* config: bugfix on path resolution; fail if given config does not exist
* reflect review comments
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
We don't do instrumentation of Sentry transactions
anywhere in the code. Only opentracing code is present.
One has to explicitly add custom instrumentation for it
to work: https://docs.sentry.io/platforms/go/performance/instrumentation/custom-instrumentation/
It's likely someone is running custom code and sending
transaction data to Sentry. It's not super hard to pick
off the sentry DSN string from the binary.
The PR is more of a best effort to stop any future
transaction events to be sent.
```release-note
NONE
```
The AND condition would mean that it would try to dereference
token.Valid if there was an error. And there's no guarantee
to always have a non-nil token in case of an error. We need
to track those conditions separately.
https://mattermost.atlassian.net/browse/MM-41236
```release-note
NONE
```
We want to test with both text and binary mode. Using our CI
to test both in parallel.
```release-note
NONE
```
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
We were noting down the time of execution of a function and
expected that to match with the exact interval that we set.
However, sometimes in very busy CI environments, the goroutine
does not get a chance to be scheduled at the right time for
the interval to match exactly. Sometimes, we see a delay of
1 second.
To account for this, we increase the interval to 3 seconds,
and consider a 1 second buffer for this. If we see lags of
more than a second, then this test becomes useless and we
would need to remove it entirely.
https://mattermost.atlassian.net/browse/MM-41209
```release-note
NONE
```