Release 2025-07-11 - (expected chart version 5.18.0) - #4660
Merged
Conversation
This reverts commit dc6bc9c.
Master->Develop after release
The field name is `team`. --------- Co-authored-by: Leif Battermann <leif.battermann@wire.com>
Each consumer can consume up to unacknowledged 500 messages. Beyond this, messages need to be acknowledged. This prevents overloading the consumer with new messages.
These are left-overs from analyzing prior flakiness.
…auto) (#4617) * integration tests: make creation of scim users more flexible. * Update docs. * Add integration test for validateSAMLEmail. * Add integration test for changing externalId and emails fields subsequently. * Cleanup test code. * Simplify internal API; remove zombie code. * ... and the edit war continues... * Fix copy pasta in error message.
…not just the tests. (#4628)
…tions` capability (#4626) * gundeck: Update mock implementation to include RabbitMQ complexities The tests now fail correctly because gundeck is not sending native pushes to clients with consumable-notifications capability * gundeck: Send push notifications to clients with `consumable-notifications` capability * changelog * Use `supportsConsumableNotifications` helper everywhere * Redundant imports * gundeck: Fail unit tests when gundeck doesn't push to cells Also create pushes with no recipients, as that is valid too in case an event is only meant for cells. * gundeck: Send events to cells even if they have no rabbitmq recipients (broken earlier in the same PR)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
…tial sync (#4631) * cannon: Replace message count mechanism with detecting the end of initial sync The message count recieved in the queue info gotten as response of declaring the queue may include some expired messages which have not yet made it to the head of the queue. This makes the message count mechanism useless to the clients for detecting the end of initial sync. This commit detects end of initial sync based on sending a transient notification in the queue. If we recieve this notification back, it would mean that the queue is empty and the initial sync is complete. The timing of sending this notification must be carefully chosen, it is sent in one of these two conditions: 1. If the message count in the queue info is 0, the queue must be empty as the expired messages are already considered expired when they reach the head of the queue. So its a good time to publish our end-of-initial-sync notification. If the queue is indeed empty we'll recieve it and forward it to the client, letting it know that it can consider itself up to date. 2. If number of unacked messages becomes 0 right after recieving an acknowledgement and the initial sync hasn't already completed, this could mean either the queue is empty or there is some delay in receiving the next message from RabbitMQ. Here we publish our end-of-initial-sync notification. If there was a delay in receiving the next message from RabbitMQ, the consumer thread will increase the count for unacked messages and we'll get another opportunity to check this. Otherwise, the consumer thread will recieve this end-of-initial-sync notification and forward it to the client. * changelog * cannon: Slightly optimize end-of-initial-sync detection * cannon: Use atomicModifyIORef' instead of modifyIORef' The IORef is being manipulated from two different threads, so it should use the atomic version of the function. * cannon: Undo small part of optimisation Description in the comment * use latest unacked delivery tag instead of a counter * insert sync message on websocket connection * charts/cannon: Allow configuring rabbitMsMaxConnections and rabbitMqMaxChannels These option were implemented previously but we forgot to add them in the helm chart. * cannon: Queue synchronization message as Persistent Use configurable TTL with default value set to 28 days like for normal notifications. * cannon: Only add sync_marker to API version v9 * integration: Rename testQosLimit to testPrefetchCount * changelog: config opt for cannon * integration: createEventsWebSocketWitSync creates a random marker Instead of expecting it to be passed in --------- Co-authored-by: Leif Battermann <leif.battermann@wire.com>
* Move most API changes to V10 V9 API will only contain changes needed for clients to enable the consumable-notifications capability. * Rename ConversationV8 -> ConversationV9 * Leftover renames * integrations: Use v10 by default * integrations: Use API v8 for federation-v2 * integrations: Fix tests broken due to hardcoding
…out conversation update to users not in the conversation (#4644)
It's payload differs between the versions (incompatibly): We render the backend_url differently for versions up to V9 and from V10. This is a fix to an illegal change of the ratified schema versions. These versions are now in their original state, again.
…ocation (#4646) * integration-setup: Use ECR instead of docker hub for bitnami images Docker hub has very strict rate limits, this causes issues when running flake-news. * integration-setup: Allocate more CPU for rabbitmq, postgresql and federator All are being throttled during test runs
… with RabbitMQ is broken (#4652) * background-worker/dead-user-notifs-watcher: Reconnect when connection with RabbitMQ is broken * integration: Add test to check if dead user notifications watcher reconnects with RabbitMQ * background-worker: Rename BackendDeadUserNotificationWatcher -> DeadUserNotificationWatcher * background-worker: Move cleanup code for BackendNotificationPusher in its module * background-worker: Use named loggers for different workers * Give names to all RabbitMQ connections * background-worker: Expose worker running status in metrics * changelog * background-worker: Report workers not running until they actually start
* add section on self-deleting messages into docs * change documentation to use internal galley endpoints * add changelog section for documentation on selfDeletingMessages * Update docs/src/understand/team-feature-settings.md change how we refer to team settings. --------- Co-authored-by: Julia Longtin <julia.longtin@wire.com>
* Inline receiveDataMessage from websockets library * Track activity of websocket connection * Handle inactivity * Add timeouts to cannon options * Test web socket timeout * Properly close web socket on timeout * Fix asyncs in rabbitmq websocket app * Add CHANGELOG entry * Add docs for websocket inactivity options * Regenerate nix packages * Lint * Change status code Co-authored-by: Akshay Mankar <akshay@wire.com> --------- Co-authored-by: Akshay Mankar <akshay@wire.com>
akshaymankar
approved these changes
Jul 14, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[2025-07-11] (Chart Release 5.18.0)
Release notes
config.notificationTTL, this defaults to the same value as gundeck. If it isoverriden in gundeck, it must also be overriden in cannon. (cannon: Replace message count mechanism with detecting the end of initial sync #4631)
API changes
Finalize API version V9 (WPB-18580 Finalize API version v9 #4645)
Add the
TeamIdto the payload ofconversation.deleteevents. The field'spath is
team. (Add TeamId to conversation.delete event #4618)Features
Allow team admin to query channel data (WPB-16886 Preparation (get channel data by team admin) #4633, WPB-16886 Get channel data (team admin) #4635)
Brig setting to en-/disable ephemeral user creation (WPB-17885 EphemeralUserCreation feature flag #4630)
Allow team admin to remove members from a channel (WPB-18179 Allow team admin to remove members from channel #4620)
background-worker: New gauge metric
wire_background_worker_running_workers,contains label
workerfor each worker. Set to1when the worker is running,set to
0when the worker is not running. (background-worker/dead-user-notifs-watcher: Reconnect when connection with RabbitMQ is broken #4652)cannon: Replace message count mechanism with detecting the end of initial sync (cannon: Replace message count mechanism with detecting the end of initial sync #4631)
The /events websocket will close a connection when it detects client inactivity. The inactivity behaviour can be controlled by setting the cannon options
wsOpts.activityTimeoutandwsOpts.pongTimeout. AfterwsOpts.activityTimeoutmicroseconds of client inactivity (including no pings), the server sends a ping, and waits for a corresponding pong forwsOpts.pongTimeoutmicroseconds. If no pong is received within this time window, the connection is terminated. (Timeout for stuck websocket connections #4636)Bug fixes and other updates
Team name removed from team invitation email template (WPB-18675 remove team name from email template #4654)
gundeck: Send push notifications to clients with
consumable-notificationscapability (gundeck: Send push notifications to clients withconsumable-notificationscapability #4626)Avoid returning duplicate user search results when handle matches exactly (UserSubsystem: Deduplicate user search results on exact handle match #4656)
background-worker/dead-user-notifs-watcher: Reconnect when connection with RabbitMQ is broken (background-worker/dead-user-notifs-watcher: Reconnect when connection with RabbitMQ is broken #4652)
Generated Swagger docs differed from the ratified ones for versions up to V9
regarding the
get-all-registered-domains(
/teams/{teamId}/registered-domains) endpoint: Thebackend_urlbecame partof the
backendobject which should be introduced with V10. As teams do notset backend redirects this should not be seen in practice. (Version get-all-registered-domains endpoint #4647)
Documentation
Internal changes
Upgrade RabbitMQ to version 4.x locally and on CI (WPB-17993 RabbitMQ 4.x compatibility #4639)
No ack for
message_countevent (WPB-18095 No ack for message_count event #4625)More test on validation of scim-provisioned emails. Cleanup of code and internal APIs. ([WPB-18206] More tests for SCIM email update (validated vs. not, vs. auto) #4617)
Fix false positive warning of members not being present in remote conversations. (WPB-18478 Fix false positive warning: attempt to send notification about conversation update to users not in the conversation #4644)
Updated email templates to v1.0.130 (WPB-18204 Update email templates to v1.0.130. #4648)
Updated email templates to v1.0.133 (WPB-18204 Update email templates to v1.0.133. #4655)
Limit the amount of unacknowledged messages the RabbitMQ notifications consumer
receives to
100. Beyond this limit, received messages have to be acknowledgedto receive new ones. This prevents overloading the consumer with new messages. (notifications: limit RabbitMQ prefetch_count #4615)
Timestamps for failing integration tests. (Timestamps for failing integration tests. #4638)