We were setting the user status to offline without
checking for connections on other nodes in a cluster.
Now we implement a request-response mechanism for the whole
cluster and we check that before setting a user to offline.
https://mattermost.atlassian.net/browse/MM-57153
```release-note
Fix a bug where the user status would incorrectly be set to offline
without checking for connections in other nodes in an HA cluster.
```
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
* Avoids returning an error if sharing a direct channel fails after its creation
* Update logline to use snake-case
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Changes the default content disposition for WebP attachments
from *download* to *inline*.
Add WebP codec support side-effect to decode.go. To prevent future
issues caused by possible changes in emoji.go.
* Explicitly have the client tell the server when it should expect an ACK
* Don't count missing profile errors for your own posts, added comment
* Fix test
* Make postedAck a parameter in WebSocketClient
* Snapshot fixes
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Ensure your own posts are never ACKed
* Don't ACK mobile websocket notifications
* Add counter for the unsupported Desktop Apps
* Count only push messages when checking for acks
* Fix generated
* Add tests, fix comment
* Fix help string
* Check for nil session
* Deprecate Self Serve: First Pass
* Fix ci
* Fix more ci
* Remmove outdated server tests
* Fix a missed spot opening purchase modal in Self Hosted
* Fix i18n
* Clean up some more server code, fix webapp test
* Fix alignment of button
* Fix linter
* Fix i18n server side
* Add back translation
* Remove client functions
* Put back client functions
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
The error reporte when moving channels and failing has been improved to show
that the problem was the repeated name on the team.
The error message has been unified with MM-53756
Co-authored-by: Mattermost Build <build@mattermost.com>
* Bulk import: stream file attachments uploads
* Add comment with context on buffer size
* Add file name to logs
* Use sha256 to do checksum
* Fix bad merge
* Fix import file
* Update test
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* don't use old hardcoded rule for validating imported posts
* fix http verb in doc
* Use client config
* Handle local mode
* E2E tests
* Enforce default if unable to use real limit
* Unit tests
* Fix tests
* Use model.PostMessageMaxRunesV2 as lower default
* Update direct post message length validation
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: streamer45 <cstcld91@gmail.com>
* [MM-57066] Add metric counters for notification events
* Some small changes
* Account for Metrics() sometimes being nil
* Fix test (again)
* Fix more tests
* A few changes from testing - added success counter
* Missed a mock
* Lint
* Add feature flag for notification monitoring
* Renamed user limit API to app limit API
* Added post warning limit
* Added tests
* Fixed types
* Renamed AppLimits to ServerLimits
* Fixed tests and review fixes
* Updated generated code
* Updated server i18n
* Fixed TestCreateUserOrGuest test
* Exclude deleted posts from post count for liims
* Reduced limits for ease of testing
* Restored original limts
Previously, we relied on the plugin to close the DB connections
on shutdown. While this keeps the code simple, there is no guarantee
that the plugin author will remember to close the DB.
In that case, it's better to track the connections from the server side
and close them in case they weren't closed already. This complicates
the API slightly, but it's a price we need to pay.
https://mattermost.atlassian.net/browse/MM-56402
```release-note
We close any remaining unclosed DB RPC connections
after a plugin shuts down.
```
Co-authored-by: Jesse Hallam <jesse.hallam@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* always ping on plugin registration; SharedChannel.IsValid allow no team for GM
* wait for services to start before ping
* ping plugin remotes synchronously on startup
* remove the waitForInterClusterServices stuff
* don't set remoteid when inviting remote to channel
* Update server/public/model/remote_cluster_test.go
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
* address review comments
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
* Revert "Revert "MM-57759: Bump mockery to version 2.42.2 to support go 1.22^" (#26772)"
This reverts commit cd3b5b46e1.
* Added the hooks.go file changes as well
```release-note
NONE
```
* Allow end users to fetch the group members list of groups which allow @-mentions
* Update server/channels/api4/group_test.go
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
* Fix test name
* Move into subtest
---------
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
* ProfileImageBytes for EnsureBotOptions
* leverage plugintest.NewAPI
* fix linting
* add UpdateUserRoles to plugin api
* MM-57018: support reattaching plugins
Expose a local-only API for reattaching plugins: instead of the server starting and managing the process itself, allow the plugin to be launched externally (eg within a unit test) and reattach to an existing server instance to provide the unit test with a fully functional RPC API, sidestepping the need for mocking the plugin API in most cases.
In the future, this may become the basis for running plugins in a sidecar container.
Fixes: https://mattermost.atlassian.net/browse/MM-57018
* drop unused supervisor.pid
* factor out checkMinServerVersion
* factor out startPluginServer
* restore missing setPluginState on successful reattach
* avoid passing around a stale registeredPlugin
* inline initializePluginImplementation
* have IsValid return an error
* explicitly close rpcClient
In the case of reattached plugins, the Unix socket won't necessarily disappear leaving the muxBrokers blocked indefinitely. And `Kill()` doesn't do anything if there's no process being managed.
* explicitly detachPlugin
* emphasize gRPC not being supported
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
- Bump timeouts for some cases
- Improve sleep with require/assert.EventuallyT
for better performance and reliability.
https://mattermost.atlassian.net/browse/MM-57532
```release-note
NONE
```