Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MM-32950: Reliable WebSockets: Basic single server #17406

Merged
merged 15 commits into from
Apr 26, 2021
Merged

MM-32950: Reliable WebSockets: Basic single server #17406

merged 15 commits into from
Apr 26, 2021

Conversation

agnivade
Copy link
Member

This PR adds reliable websocket support for a single server.

Below is a brief overview of the three states of a connection:

Normal:

  • All messages are routed via web hub.
  • Each web conn has a send queue to which it gets pushed.
  • A message gets pulled from the queue, and before it
    gets written to the wire, it is added to the dead queue.

Disconnect:

  • Hub Unregister gets called, where the connection is just
    marked as inactive. And new messages keep getting pushed
    to the send queue.

If it gets full, the channel is closed and the conn gets removed
from conn index.

Reconnect:

  • We query the hub for the connection ID, and get back the
    queues.
  • We construct a WebConn reusing the old queues, or a fresh one
    depending on whether the connection ID was found or not.
  • Now there is a tricky bit here which needs to be carefully processed.
    On register, we would always send the hello message in the send queue.
    But we cannot do that now because the send queue might already have messages.

Therefore, we don't send the hello message from web hub, if we reuse a connection.

Instead, we move that logic to the web conn write pump. We check if
the sequence number is in dead queue, and if it is, then we drain
the dead queue, and start consuming from the active queue.
No hello message is sent here.

But if the message does not exist in the dead queue, and the sequence number
is actually something that should have existed, then we set
a new connction id and clear the dead queue, and send a hello message.
The client, on receiving a new connection id will automatically
set its sequence number to 0, and make the sync API calls to manage
any lost data.

https://mattermost.atlassian.net/browse/MM-32590

NONE

@agnivade agnivade added the 2: Dev Review Requires review by a developer label Apr 15, 2021
@mm-cloud-bot mm-cloud-bot added the release-note-none Denotes a PR that doesn't merit a release note. label Apr 15, 2021
@agnivade
Copy link
Member Author

Webapp changes here: mattermost/mattermost-webapp#7921

@agnivade
Copy link
Member Author

I have tested this manually for all possible scenarios by manually tweaking the code to introduce errors.

Also tested in race mode, and ran a small load test to verify any edge cases.

@agnivade agnivade added the Do Not Merge Should not be merged until this label is removed label Apr 15, 2021
Copy link
Contributor

@streamer45 streamer45 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very good 🎉. I really appreciated the thorough commenting.
Gave this a first pass and left a few comments.

api4/websocket.go Outdated Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
@agnivade
Copy link
Member Author

I really appreciated the thorough commenting.

Definitely, I needed the comments to keep track of things myself. If I didn't comment some thing, the next day, I would do the same thing, and then remember why I did not choose to do something.

I think the end result is more or less manageable. Initially, it looked like it would get way more complicated. :P

@agnivade agnivade removed the Do Not Merge Should not be merged until this label is removed label Apr 16, 2021
@agnivade
Copy link
Member Author

@streamer45 - Take a look now. The API layer is significantly cleaned up.

agnivade and others added 7 commits April 19, 2021 11:21
This PR adds reliable websocket support for a single server.

Below is a brief overview of the three states of a connection:

Normal:
- All messages are routed via web hub.
- Each web conn has a send queue to which it gets pushed.
- A message gets pulled from the queue, and before it
gets written to the wire, it is added to the dead queue.

Disconnect:
- Hub Unregister gets called, where the connection is just
marked as inactive. And new messages keep getting pushed
to the send queue.

If it gets full, the channel is closed and the conn gets removed
from conn index.

Reconnect:
- We query the hub for the connection ID, and get back the
queues.
- We construct a WebConn reusing the old queues, or a fresh one
depending on whether the connection ID was found or not.
- Now there is a tricky bit here which needs to be carefully processed.
On register, we would always send the hello message in the send queue.
But we cannot do that now because the send queue might already have messages.

Therefore, we don't send the hello message from web hub, if we reuse a connection.

Instead, we move that logic to the web conn write pump. We check if
the sequence number is in dead queue, and if it is, then we drain
the dead queue, and start consuming from the active queue.
No hello message is sent here.

But if the message does not exist in the dead queue, and the sequence number
is actually something that should have existed, then we set
a new connction id and clear the dead queue, and send a hello message.
The client, on receiving a new connection id will automatically
set its sequence number to 0, and make the sync API calls to manage
any lost data.

https://mattermost.atlassian.net/browse/MM-32590

```release-note
NONE
```
app/web_conn.go Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
app/web_conn.go Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
app/web_conn.go Show resolved Hide resolved
app/web_conn.go Outdated Show resolved Hide resolved
@agnivade agnivade added the Do Not Merge/Awaiting PR Awaiting another pull request before merging (e.g. server changes) label Apr 19, 2021
Copy link
Member

@isacikgoz isacikgoz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, awesome work @agnivade 🎉 I have minor things but none of the are blocking.

app/web_conn.go Outdated Show resolved Hide resolved
app/web_conn.go Show resolved Hide resolved
app/web_conn_test.go Outdated Show resolved Hide resolved
Copy link
Contributor

@streamer45 streamer45 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome 👍 , just one question remaining :)

app/web_hub.go Show resolved Hide resolved
Copy link
Contributor

@streamer45 streamer45 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great. Brilliant work 👍

@streamer45 streamer45 removed the 2: Dev Review Requires review by a developer label Apr 20, 2021
@agnivade agnivade added the 3: QA Review Requires review by a QA tester. May occur at the same time as Dev Review label Apr 20, 2021
@agnivade
Copy link
Member Author

@saturninoabril - This needs to be tested along with mattermost/mattermost-webapp#7921 and https://github.com/mattermost/enterprise/pull/973.

Please set "EnableReliableWebSockets": true in service settings, and test websocket related functionalities for any regression.

Thanks!

@saturninoabril
Copy link
Member

Thanks @agnivade! I'll wait for mattermost/mattermost-webapp#7921 to be ready for testing. Once ready, please update all the repos and I'll get the build image for testing.

@agnivade
Copy link
Member Author

/update-branch

@agnivade
Copy link
Member Author

@saturninoabril - You should be good to go now. Thanks!

Copy link
Member

@saturninoabril saturninoabril left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested and passed. Thanks @agnivade!

@saturninoabril saturninoabril added 4: Reviews Complete All reviewers have approved the pull request and removed 3: QA Review Requires review by a QA tester. May occur at the same time as Dev Review labels Apr 26, 2021
@agnivade agnivade removed the Do Not Merge/Awaiting PR Awaiting another pull request before merging (e.g. server changes) label Apr 26, 2021
@agnivade agnivade merged commit cd4d322 into master Apr 26, 2021
@agnivade agnivade deleted the wsfinal branch April 26, 2021 14:21
@amyblais amyblais added Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation labels Apr 28, 2021
isacikgoz added a commit that referenced this pull request Sep 24, 2021
* Revert "MM-24530-Add support for search terms with underscore using postgresql engine (#16618)" (#16950) (#16956)

This reverts commit ba3b788e46f98e2c2d7976d8d264a364676c9b2b.

(cherry picked from commit 9992a27a907ba5472ff738b54131013689605c6c)

Co-authored-by: Agniva De Sarker <[email protected]>

* update incident-collaboration to 1.4.0 (#16920) (#16955)

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 58b3e8d92d2387b12a0c05c5476aab20d9bd9fd3)

Co-authored-by: Christopher Poile <[email protected]>

* Custom status feature (#16835) (#16976)

* Create the system console setting and send to webapp

* MI-1145: Add custom status APIs

* MI-1145 Add slash commands to set and clear status

* Add validation for custom status API

* Trim custom status message

* Code refactoring

- Run gofmt

- Rename constants

* Remove sendUserUpdated webhook event

* Fix recent custom status length

* Update error conditions

* Disable /status slash command when config setting is off

* MI-1155: Create the feature flag for custom status APIs and slash commands

* Move recent custom statuses to user preferences (#7)

* Move recent custom statuses to user preferences

* Code refactoring and feedback changes

* Update slash command text and emoji regex

* Make the custom status feature flag off by default

* Update SetCustomStatus, handle recents not set better

* Update status codes

* Update slash command handling

* Add telementry settings

* Fix i18n order

* Revert "Fix i18n order"

This reverts commit 499f7eaca8180336f5bcca360cc0133365899e08.

* Update i18n strings

(cherry picked from commit 7585e16d844d197f12079ff46bcbd0f78d7a698a)

Co-authored-by: Chetanya Kandhari <[email protected]>

* Translations update from Weblate (#16996)

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2138 of 2138 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2138 of 2138 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2132 of 2132 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (German)

Currently translated at 82.5% (1770 of 2144 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/de/

Translated using Weblate (Romanian)

Currently translated at 100.0% (2132 of 2132 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2144 of 2144 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2138 of 2138 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2138 of 2138 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2144 of 2144 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.9% (2142 of 2144 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.4% (2133 of 2144 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.8% (2101 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/pt_BR/

Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: majo <[email protected]>
Co-authored-by: rodrigocorsi <[email protected]>

* Translations update from Weblate (#17033)

* Translated using Weblate (Japanese)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ja/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2163 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2149 of 2149 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2148 of 2148 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Turkish)

Currently translated at 99.4% (2152 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/zh_Hans/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2163 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.2% (2147 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.0% (2143 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (2149 of 2149 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2149 of 2149 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2147 of 2147 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (2149 of 2149 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2163 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (German)

Currently translated at 81.5% (1764 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/de/

Co-authored-by: kaakaa <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: aeomin <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Friederike J <[email protected]>

* Solve conflicts

Signed-off-by: Mario de Frutos <[email protected]>

* Solve conflicts

Signed-off-by: Mario de Frutos <[email protected]>

* Fix blank invite email (#17065) (#17094)

* Fix blank invite email

* Some small improvements

* Another small fix

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 31f3edf1d9e19c77915ff6d3431964c1cef549cf)

Co-authored-by: Jesús Espino <[email protected]>

* Translations update from Weblate (#17081)

* Translated using Weblate (Romanian)

Currently translated at 100.0% (2163 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2163 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/pt_BR/

* Translated using Weblate (Bulgarian)

Currently translated at 99.3% (2148 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Translated using Weblate (Bulgarian)

Currently translated at 99.2% (2147 of 2163 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2164 of 2164 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (2164 of 2164 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ja/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2164 of 2164 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2164 of 2164 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: rodrigocorsi <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>
Co-authored-by: kaakaa <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>

* Fix migrations code

Signed-off-by: Mario de Frutos <[email protected]>

* Add missiong db migration for version 5.29.1

Signed-off-by: Mario de Frutos <[email protected]>

* [GH-15906][MM-22844] Redesign reset password and invite emails (#17029) (#17132)

Automatic Merge

(cherry picked from commit 41ab05ca6637a2eb799ec13ef177b6954098fece)

Co-authored-by: Jyoti Patel <[email protected]>

* Fix db upgrade conflict

Signed-off-by: Mario de Frutos <[email protected]>

* Fix app email conflict

Signed-off-by: Mario de Frutos <[email protected]>

* Revert DB migration removal applied to installations

Signed-off-by: Mario de Frutos <[email protected]>

* Translations update from Weblate (#17133)

* Translated using Weblate (Swedish)

Currently translated at 98.9% (2162 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (2165 of 2165 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2165 of 2165 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2167 of 2167 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2167 of 2167 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Romanian)

Currently translated at 98.5% (2154 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Korean)

Currently translated at 83.8% (1832 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ko/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 97.7% (2137 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Ji-Hyeon Gim <[email protected]>
Co-authored-by: aeomin <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>

* Fix bug with DB upgrade

Signed-off-by: Mario de Frutos <[email protected]>

* Fix bug with DB upgrade

Signed-off-by: Mario de Frutos <[email protected]>

* Translations update from Weblate (#17133) (#17135)

* Translated using Weblate (Swedish)

Currently translated at 98.9% (2162 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (2165 of 2165 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2165 of 2165 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2167 of 2167 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2167 of 2167 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Romanian)

Currently translated at 98.5% (2154 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Korean)

Currently translated at 83.8% (1832 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ko/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 97.7% (2137 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Ji-Hyeon Gim <[email protected]>
Co-authored-by: aeomin <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
(cherry picked from commit 027413aebdbdf8b3e4e1d827107a4d4282955b69)

Co-authored-by: Weblate (bot) <[email protected]>

* MM-33789: Revert fallback to master for GetAllProfilesInChannel (#17119) (#17139)

Automatic Merge

* MM-33836: Detect and upgrade incorrect HTTP version for websocket handshakes (#17142) (#17146)

Automatic Merge

* MM-34000: Use non-epoll mode for TLS connections (#17172) (#17180)

Automatic Merge

* Automated cherry pick of #17198 (#17200)

Co-authored-by: Mattermod <[email protected]>
Co-authored-by: Allan Guwatudde <[email protected]>

* Translations update from Weblate (#17191)

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Japanese)

Currently translated at 98.5% (2155 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ja/

* Translated using Weblate (French)

Currently translated at 83.8% (1833 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/fr/

* Translated using Weblate (French)

Currently translated at 83.9% (1836 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/fr/

* Translated using Weblate (Spanish)

Currently translated at 93.5% (2044 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/es/

* Translated using Weblate (Russian)

Currently translated at 95.1% (2080 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2186 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (French)

Currently translated at 84.0% (1837 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/fr/

* Translated using Weblate (Russian)

Currently translated at 95.1% (2080 of 2186 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: kaakaa <[email protected]>
Co-authored-by: Pierre JENICOT <[email protected]>
Co-authored-by: Cyril LD <[email protected]>
Co-authored-by: jesus.espino <[email protected]>
Co-authored-by: Edward Smirnov <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Elisabeth Kulzer <[email protected]>
Co-authored-by: Mattermod <[email protected]>

* Translations update from Weblate (#17298)

* Added translation using Weblate (English (Australia))

* Translated using Weblate (English (Australia))

Currently translated at 100.0% (2189 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/en_AU/

* Translated using Weblate (Russian)

Currently translated at 99.8% (2187 of 2190 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (2189 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 98.4% (2156 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2190 of 2190 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2189 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.3% (2175 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/zh_Hans/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (English (Australia))

Currently translated at 100.0% (2190 of 2190 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/en_AU/

Translated using Weblate (English (Australia))

Currently translated at 100.0% (2189 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/en_AU/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2190 of 2190 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (2189 of 2189 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Korean)

Currently translated at 84.6% (1854 of 2190 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ko/

* Deleted translation using Weblate (English (Australia))

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2191 of 2191 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Co-authored-by: Matthew Williams <[email protected]>
Co-authored-by: Edward Smirnov <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: aeomin <[email protected]>
Co-authored-by: Matthew Williams <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: teamzamong <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>

* Fix lint issue

* Fix typo

* Automated cherry pick of #17113 (#17314)

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 489eaa4605d19929dfe46600e1be1465eb872b46)

Co-authored-by: Allan Guwatudde <[email protected]>

* Translations update from Weblate (#17334)

* Translated using Weblate (Russian)

Currently translated at 100.0% (2299 of 2299 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 97.8% (2249 of 2299 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (2194 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (2192 of 2192 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2194 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.7% (2188 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/zh_Hans/

* Translated using Weblate (French)

Currently translated at 85.1% (1869 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/fr/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2194 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

* Translated using Weblate (Dutch)

Currently translated at 95.6% (2198 of 2299 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2194 of 2194 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2299 of 2299 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Co-authored-by: Edward Smirnov <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: aeomin <[email protected]>
Co-authored-by: Pierre JENICOT <[email protected]>
Co-authored-by: jesus.espino <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Elisabeth Kulzer <[email protected]>

* Automated cherry pick of #17338 (#17344)

(cherry picked from commit ec5f099313624dc346f3f16a9791feca04ebf3fa)

Co-authored-by: Allan Guwatudde <[email protected]>

* Automated cherry pick of #17306 (#17324)

* [MM-34179] app: move cluster registeration to server creation (#17306)

* app: move cluster registeration to server creation

* initserver via fakeapp

* reflect review comments

(cherry picked from commit e13d85d8c7fa98e1f25052e6d3de8d94c16853b7)

* Update config.yml

* Update config.yml

Co-authored-by: Ibrahim Serdar Acikgoz <[email protected]>
Co-authored-by: Elisabeth Kulzer <[email protected]>

* Automated cherry pick of #17321 (#17326)

* [MM-34557] commands/server_test: add skip (#17321)

* commands/server_test: disable plugins for test (was causing a data race)

* add skip app init

* skip tests

* add skip linter

(cherry picked from commit 9897d4651af329a1d0268b767570256bc78b8dfd)

* Update config.yml

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Ibrahim Serdar Acikgoz <[email protected]>
Co-authored-by: Elisabeth Kulzer <[email protected]>

* Upgrade for cloud branch

Signed-off-by: Mario de Frutos <[email protected]>

* Upgrade for cloud branch

Signed-off-by: Mario de Frutos <[email protected]>

* Start using 5.35.0 database schema

Signed-off-by: Mario de Frutos <[email protected]>

* Fix upgrade tests

Signed-off-by: Mario de Frutos <[email protected]>

* Comment skipped test logic to avoid golint failure

Signed-off-by: Mario de Frutos <[email protected]>

* Improve msgroot query

Signed-off-by: Mario de Frutos <[email protected]>

* MM-32133 shared channel username collisions (#17347) (#17399)

Support for handling username collisions between remote clusters. Users belonging to remote clusters have their username changed to include the remote name e.g. wiggin becomes wiggin:mattermost.

@mentions are also modified so the munged username is replaced with the original username when the post is sync'd with the remote the user belongs to.

When adding remote users:
- append the remote name to the username with colon separator
- append the remote name to the email address with colon separator
- store the original username and email address in user props
- when resolving @mentions replace with the stored original username

(cherry picked from commit f69cb38249afab1dda66e5ec79a0c32001b57b0a)

Co-authored-by: Doug Lauder <[email protected]>

* Translations update from Weblate (#17381) (#17383)

* Translated using Weblate (Dutch)

Currently translated at 99.2% (2284 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 99.3% (2285 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Update translation files

Updated by "Remove blank strings" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.3% (2287 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 96.0% (2211 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/pt_BR/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2303 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.9% (2301 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 98.0% (2255 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 96.7% (2226 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (2301 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

Translated using Weblate (Romanian)

Currently translated at 94.7% (2181 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Translated using Weblate (Spanish)

Currently translated at 88.8% (2045 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/es/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2303 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2301 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 99.3% (2287 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2303 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (2301 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

* Translated using Weblate (Turkish)

Currently translated at 95.6% (2201 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (2303 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ja/

Translated using Weblate (Japanese)

Currently translated at 100.0% (2301 of 2301 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ja/

* Translated using Weblate (French)

Currently translated at 82.1% (1892 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/fr/

* Translated using Weblate (Turkish)

Currently translated at 97.9% (2255 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Bulgarian)

Currently translated at 94.9% (2186 of 2303 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/bg/

Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: rodrigocorsi <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Elias  Nahum <[email protected]>
Co-authored-by: Edward Smirnov <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: kaakaa <[email protected]>
Co-authored-by: William Farelly <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>

Co-authored-by: Weblate (bot) <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: rodrigocorsi <[email protected]>
Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Elias  Nahum <[email protected]>
Co-authored-by: Edward Smirnov <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: kaakaa <[email protected]>
Co-authored-by: William Farelly <[email protected]>
Co-authored-by: Nikolai Zahariev <[email protected]>

* [MM-31899] Use a custom user-agent when previewing links (#17186) (#17394)

* Use a custom user-agent when previewing links

Many websites block requests made with Go's default user-agent. We had
previous special-cased Twitter links to use a nonstandard user-agent.
This makes that behavior apply everywhere and also customizes the
user-agent to belong specifically to Mattermost.

* Correctly use custom transport for link previews

This allows us to use the custom user-agent defined in
services/httpservice/client.go.

* Stop leaking server version in custom user-agent

Since the custom user-agent is now used when previewing links, exposing
the server version could provide a vector for a malicious actor to
gather information about private deployments. To avoid this, we switch
to a generic string.

* Remove extraneous Transport creation

MakeClient already creates a transport for us, so this is unnecessary.

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 17a7d5ce296cd4c63fa3e51630f13277573fbd7a)

Co-authored-by: Eli Young <[email protected]>

* Automated cherry pick of #17397 (#17402)

Co-authored-by: Mattermod <[email protected]>
Co-authored-by: Nick Misasi <[email protected]>
Co-authored-by: Allan Guwatudde <[email protected]>
Co-authored-by: Maria A Nunez <[email protected]>

* [MM-34240] - Cloud: "Congratulations" welcome email missing images (#17350) (#17411)

Automatic Merge

* Fix problem with nulls in file infos content field (#17404) (#17423)

* Hotfix add multistatements param on mysql url (#17429)

Co-authored-by: John Tzikas <[email protected]>

* Fix 5.32 migration (#17414)

* [MM-34919] Use Mattermost-Plugin-ID header to pass ID in inter-plugin requests (#17418) (#17443)

(cherry picked from commit 730dc6b98569c072aaee9324e58e790973690d2d)

Co-authored-by: Ben Schumacher <[email protected]>

* MM-34983: Remove check for number of data sources (#17431) (#17446)

Automatic Merge

* Add doc extraction dependencies (#17403) (#17449)

Automatic Merge

(cherry picked from commit d2ed053b6b2162cb8721df970d24ac2578a9bc65)

Co-authored-by: Jesús Espino <[email protected]>

* Remove the Remove System Permissions (#17401) (#17451)

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 93c8c6e9d85cd87e0113294ae2272a518c5fc2e5)

Co-authored-by: Hossein <[email protected]>

* #MM-34893 Completely disabled Admin Advisor (#17422) (#17454)

Automatic Merge

* [MM-13799] Avoid queries timing out during upgrade (#17444) (#17453)

* Avoid timing out during upgrade

* Update gorp dep

Co-authored-by: Mattermod <[email protected]>
(cherry picked from commit 39843810117d8a5fb3c93a0bce50076995ecade5)

* Fixing problem with read-replica on indexing files (#17460) (#17461)

(cherry picked from commit 368b6421050b3973a6c3eaf90fd300b1748690eb)

Co-authored-by: Jesús Espino <[email protected]>

* Mm 30807 granular data retention scaffold (#17464)

* MM-31717: Remove HTTP clustering (#17409)

* MM-31717: Remove HTTP clustering

https://mattermost.atlassian.net/browse/MM-31717

```release-note
Gossip clustering mode is now GA and is no longer
available as a choice now. All cluster traffic will always
use the gossip protocol.

The config setting UseExperimentalGossip has no effect
and has only been kept for compatibility purposes.

The setting to use gossip has been removed from admin console.

Upgrade note:
If an existing system is not using gossip, then one cannot
upgrade one node in a cluster and keep the other one to the older
version, if an HA upgrade is intended. All nodes
in the cluster must use a single protocol.

Either the customer must use gossip if they want to do an HA
upgrade. Or, shut down all nodes and bring up all of them
after doing an upgrade.
```

* Trigger CI

* update translations

* MM-34871 CRT: Participants of thread include non-replying followers (and past followers) (#17447)

Co-authored-by: Mattermod <[email protected]>

* MM-34872 CRT: thread last_viewed_at updated when channel is viewed (#17448)

* Fix performance problem on document extraction (#17470)

* Custom status fixes (#17122)

* Changed the request type to POST for the remove recent custom status API

Fixed the custom status clear slash command

* Added Delete method in the remove recent custom status endpoint

* Added one new endpoint to remove recent custom status with POST method

* Added comments for the recent custom status API

Co-authored-by: Manoj <[email protected]>
Co-authored-by: Chetanya Kandhari <[email protected]>
Co-authored-by: Manoj <[email protected]>

* Fix performance problem on document extraction (#17470) (#17473)

(cherry picked from commit bf542ec12f1c7ca2f275f90d0b8d0a120a07a461)

Co-authored-by: Jesús Espino <[email protected]>

* [MM-32281] SqlRoleStore/GetByName: add context to allow read from master (#17176)

* role_store/GetByName: add context

* propagate context in the app layer

* propagate context in the app layer

* add missing import

Co-authored-by: Mattermod <[email protected]>

* [MM-34838] Remove Ancillary Permissions That Are Purposefully Being Removed (#17466)

* remove ancillary permissions

* Start writing tests

* Move Ancillary Permissions to FrontEnd

* remove function

* remove test

* clean up

* fix comment

* Update api4/permission.go

Co-authored-by: Martin Kraft <[email protected]>

* Update api4/permission.go

* Update api4/permission.go

* license info

* Add Tests

Co-authored-by: Mattermod <[email protected]>
Co-authored-by: Martin Kraft <[email protected]>

* [MM-34798] Respect MM_SERVER_PATH when looking for templates (#17410)

* MM-31339: Send only one direct message reply within one calendar day. (#17181)

* don't send auto response if already responded today

* update query to get posts from channel for given user and Updatetime requires value in milli seconds

* regenerate mocks and layers

* update function to return true/false on existence of auto responded post in channel and add tests

* add store tests

* bubble up error and propagate upstream

* fix error handling logic

* use require instead of assert

Co-authored-by: Ibrahim Serdar Acikgoz <[email protected]>

* rename variable for better redability and logging fixes

* update comment explaining function

* use new function to generate test ids

* add comments to clarify NewTestId copies

* add translations for error id

* fix translation

Co-authored-by: Ibrahim Serdar Acikgoz <[email protected]>
Co-authored-by: Mattermod <[email protected]>
Co-authored-by: Saturnino Abril <[email protected]>

* [MM-34216] app/import: do not break import process if a dm channel is invalid (#17391)

* app/import: do not break import process if a dm channel is invalid

* update test headers

Co-authored-by: Mattermod <[email protected]>

* [MM-33662] - Mock out CWS in enterprise code (#17305)

* [MM-33662] - Mock out CWS in enterprise code

* Feedback impl

Co-authored-by: Mattermod <[email protected]>

* MM-34895 CRT: Replying to a root post with an at-mention triggers an unread mention (#17474)

* don't count your own replies as unread

* corrected totalUnreadThreads query

* Improving doc extraction command (#17482)

Automatic Merge

* sync profile images  (#17375)

support for synchronizing user's profile image for shared channels.

* [MM-33853] remove CSV row limit in compliance monitoring (#17185)

* upgrade DB for 5.35 (#17488)

* [MM-35039] - Send trial ended email (#17478)

* [MM-35039] - Send trial ended email

* Generations

* Use First name with fallback to username

* Use First name with fallback to username for trial ending email

* Translations update from Weblate (#17509)

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2310 of 2310 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Dutch)

Currently translated at 99.4% (2296 of 2309 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Dutch)

Currently translated at 99.4% (2296 of 2309 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2313 of 2313 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2308 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (2307 of 2307 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

Translated using Weblate (Dutch)

Currently translated at 99.5% (2299 of 2309 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/nl/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (2309 of 2309 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ro/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (2308 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (2308 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/tr/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (2313 of 2313 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (2308 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.9% (2307 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/sv/

* Translated using Weblate (Russian)

Currently translated at 99.8% (2305 of 2308 strings)

Translation: mattermost-languages-shipped/mattermost-server
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-server_master/ru/

Co-authored-by: MArtin Johnson <[email protected]>
Co-authored-by: Tom De Moor <[email protected]>
Co-authored-by: Viorel-Cosmin Miron <[email protected]>
Co-authored-by: Kaya Zeren <[email protected]>
Co-authored-by: Edward Smirnov <[email protected]>

* [MM-35039] - Send trial ended email (#17478) (#17510)

* [MM-35039] - Send trial ended email

* Generations

* Use First name with fallback to username

* Use First name with fallback to username for trial ending email

(cherry picked from commit fd546cdff250315e14c3170e1fdbf2ba828b90c9)

Co-authored-by: Allan Guwatudde <[email protected]>

* Fix conflict in remote_cluster_store test

Signed-off-by: Mario de Frutos <[email protected]>

* Fix upgrade conflicts

Signed-off-by: Mario de Frutos <[email protected]>

* Fix upgrade conflicts

Signed-off-by: Mario de Frutos <[email protected]>

* Upgrade for cloud branch

Signed-off-by: Mario de Frutos <[email protected]>

* MM-34549 shared channels; add users to channel that were already sync'd (#17361)

Fixes a bug and adds a feature for shared channels:
- The Bug: when creating new shared channels, users that had already been sync'd via another channel were not added to the new channel's member list, since the users were not sync'd again. This PR sync's users per channel.
- The Feature: support custom statuses

* sync profile images  (#17375) (#17512)

support for synchronizing user's profile image for shared channels.

(cherry picked from commit ff657bfdef2467ab38641c39c5df171000c77eb6)

Co-authored-by: Doug Lauder <[email protected]>

* Improving doc extraction command (#17482) (#17513)

Automatic Merge

(cherry picked from commit 7c7c4716e6cc73878734f4b52a34800096bd39e7)

Co-authored-by: Jesús Espino <[email protected]>

* Fix sv.json conflict

Signed-off-by: Mario de Frutos <[email protected]>

* Updates on CI (#17484)

* moving mattermost-ver and golangci out from the build step

* adjusting resource class and update image for check-mocks job

* MM-32950: Reliable WebSockets: Basic single server (#17406)

* MM-32950: Reliable WebSockets: Basic single server

This PR adds reliable websocket support for a single server.

Below is a brief overview of the three states of a connection:

Normal:
- All messages are routed via web hub.
- Each web conn has a send queue to which it gets pushed.
- A message gets pulled from the queue, and before it
gets written to the wire, it is added to the dead queue.

Disconnect:
- Hub Unregister gets called, where the connection is just
marked as inactive. And new messages keep getting pushed
to the send queue.

If it gets full, the channel is closed and the conn gets removed
from conn index.

Reconnect:
- We query the hub for the connection ID, and get back the
queues.
- We construct a WebConn reusing the old queues, or a fresh one
depending on whether the connection ID was found or not.
- Now there is a tricky bit here which needs to be carefully processed.
On register, we would always send the hello message in the send queue.
But we cannot do that now because the send queue might already have messages.

Therefore, we don't send the hello message from web hub, if we reuse a connection.

Instead, we move that logic to the web conn write pump. We check if
the sequence number is in dead queue, and if it is, then we drain
the dead queue, and start consuming from the active queue.
No hello message is sent here.

But if the message does not exist in the dead queue, and the sequence number
is actually something that should have existed, then we set
a new connction id and clear the dead queue, and send a hello message.
The client, on receiving a new connection id will automatically
set its sequence number to 0, and make the sync API calls to manage
any lost data.

https://mattermost.atlassian.net/browse/MM-32590

```release-note
NONE
```

* gofmt

* Add EnableReliableWebSockets to the client config

* Refactoring isInDeadQueue

* Passing index to drainDeadQueue

* refactoring webconn

* fix pointer

* review comments

* simplify hasMsgLoss

* safety comment

* fix test

* Trigger CI

* Trigger CI

Co-authored-by: Devin Binnie <[email protected]>
Co-authored-by: Mattermod <[email protected]>

* MM-35125 CRT: Mention badge on threads doesn't appear until refresh (#17504)

* update pr template (#17480)

* MM-35127 CRT: Marking thread as unread doesn't set the timestamp correctly (#17507)

Co-authored-by: Mattermod <[email protected]>

* MM-35128 CRT: Global Threads item should not be affected by 'mark as unread' in channel (#17505)

Co-authored-by: Mattermod <[email protected]>

* Fix file info index batch (#17525)

* MM-35239: Skip TestHubSessionRevokeRace (#17524)

https://mattermost.atlassian.net/browse/MM-35239

```release-note
NONE
```

* MM-35103 Replies in a thread with an initial mention triggers notification each time (#17503)

* only process parent post mentions for threads in order to autofollow

* don't use merge since it modifies the original

Co-authored-by: Mattermod <[email protected]>

* MM-34674 Adding config telemetry for feature flags. (#17456)

* Adding config telemetry for feature flags.

* Review fixes.

* MM-24455: Fix role responses. (#17385)

Automatic Merge

* [MM-34918] Update prepackaged version of autolink and GitHub (#17465)

* MM-18818 Prompt admins to set the Support Email (#17296)

* MM-18818 Set default support to empty and handled the same in email templates

* #MM-18818 Admin advisor now warns for inconfigured support email address

* Updated text

* #MM-18818 gofmt'ed files

* #MM-18818 updated text and removed unused i18n strings:

* #MM-18818 updated i18n string ordering

* #MM-18818 Added test for support email advisory

* MM-18818 gofmt'd the file

* MM-18818 separated contextual notifications from configuration notifications in Admin Advisor

* #MM-18818 prevented support email with whitepsaces from being detected as filled

Co-authored-by: Mattermod <[email protected]>

* Automated cherry pick of #17503 (#17529)

Co-authored-by: Mattermod <[email protected]>
Co-authored-by: Eli Yukelzon <[email protected]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4: Reviews Complete All reviewers have approved the pull request Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation release-note-none Denotes a PR that doesn't merit a release note.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants