Skip to content

Release 2024-12-11 - (expected chart version 5.8.0)#4371

Merged
fisx merged 35 commits intomasterfrom
release_2024-12-11_16_35
Dec 13, 2024
Merged

Release 2024-12-11 - (expected chart version 5.8.0)#4371
fisx merged 35 commits intomasterfrom
release_2024-12-11_16_35

Conversation

@zebot
Copy link
Contributor

@zebot zebot commented Dec 11, 2024

https://wearezeta.atlassian.net/browse/WPB-14609

[2024-12-11] (Chart Release 5.8.0)

Release notes

API changes

Features

Bug fixes and other updates

Documentation

Internal changes

fisx and others added 30 commits November 4, 2024 15:08
* Move user email updating functions to wire-subsystems

* DELETE /self/email: ZLocalUser instead of ZUser

* Wrap a function signature

* Move 'deleteEmail' to UserStore

* Migrate 'removeEmail' to UserSubsystem

* Add a change log

* Rename an activation code action

* Rename UserSubsystem helpers

* Remove redundant error interpretation

* Elaborate a recusive interpretation cycle

* Drop an unused no-password error

* Implement removeEmail via RemoveEmailEither

This also changes the error type in RemoveEmailEither to the general
UserSubsystemError type. Handler-specific reinterpretations are done in
the handler instead.

* "Fix" timing issue in (old) galley integration tests.

* Move reading from the environment to a helper

---------

Co-authored-by: Matthias Fischmann <mf@zerobuzz.net>
Master->Develop after release
* Add a unit test for DeleteEmail

* Add a unit test for UpdateEmailUnvalidated

Co-authored-by: Sven Tennie <sven.tennie@wire.com>

* Pull out a mock interpreter function

* Add a unit test for LookupActivationCode

* Add a unit test for NewActivationCode

* Add unit tests for RemoveEmailEither

* Add unit tests for requestEmailChange

* Update a change log

---------

Co-authored-by: Sven Tennie <sven.tennie@wire.com>
* Add allowExisting field to invitation request

* Honor allowExisting flag in InvitationRequest

* Test legacy invitation behaviour

* Add CHANGELOG entry

* Update golden tests
* create rabbitmq exchange

* set up DLX

* wip

* create user queues on client add/update

* make it internal server error

* make galley compile

* make rabbitmq mandatory

* fix integration tests

* set correct DLX headers

* wip

* Add a WIP test to consume notifs via `GET /events`

* cannon: Roughly implement subscribing notifs from RabbitMQ

* gundeck: Start implementing push to rabbitmq

* integration: Fix assertion to assert on a real event

* integration: Use correct vHost in cannon

* cannon: Ensure exchange exists and publish event correctly on WS

* NotificationSubsystem: Align names for queues and extract them as top level bindings

* gundeck: Push events to RabbitMQ for compatible clients

* integration: Assert that acked events don't come back

* cannon: Forward client acks to rabbitmq

* WIP: Get rid of channel as an explicit param for NotificationSubsystem actions

* Get galley to compile.

* Fix some easy TODOs.

* Use these library better.

* resolve rebase conflict better.

* fix ghc errors.

* Extract rabbitmq channel lookup into helper.

* Move setupConsumableNotificationsClient from subsystems to gundeck.

* Revert "Get galley to compile."

This reverts commit 8a1840d6092982e7c527ead11f276e3c22fa7030.

* wire-subsystems: Fix compile errors in tests

* gundeck: doesn't depend on wire-subsystems (yet?)

* brig: Remove unnecessary import

* cannon: Don't create the queue for clients, expect it to already be there

* cannon: close ws connection when something goes wrong

* Funky!

* Undo funkiness: Create Wire.API.WebSocket with types for comms on the new websocket

* WIP: cannon: try to use the new types from wire-api

The case split is not the nicest, perhaps we can solve it with one these things:

- Bring back the funkiness for couple of commits ago
- Use separate types for server to client and client to server messages

* wire-api: Cabal file

* gen nix stuff

* ormolu

* Is this a good way of representing websocket messages?

* Resolve TODO.

amqp doesn't offer a bulk push operation.  instead it makes individual
pushes performant enough.  https://www.rabbitmq.com/docs/publishers

* Refactor test, extend coverage.

* Suggestions for better module name; removed "websocket" reference from some names.

* Roundtrip tests for Message*To*.

* Source comments.

* debug failing test [WIP]

* refactor tests a bit, fix ack, fix typos

* fix test, handle connection closed, format

* ping pong test

* Maintain stable connection to rabbitmq from cannon.  [WIP]

* Fix typo.

* Tune tests.

* Remove ping-pong stuff.

* Revert "Maintain stable connection to rabbitmq from cannon.  [WIP]"

This reverts commit 861ee102beb5b065e98e58377cf6fc519e69e44b.

problems with this approach:
- there is a maximum number of chans / conn.
- this is all very complicated and should be done separately.

* Test multiple acks and out of order acks

* cannon: Refactor code a little and more logging

* integration: Deal with events websocket more gracefully, ensure all acks are sent

* cannon: Easier to understand cleanup code

* Add TODO for tomorrow

* cannon: Ensure invalid messages don't accumulate

* small re-org of code

* Avoid using unsafeRange

* Reduce top level functions

* integration: Test that old and new clients can co-exist

* gundeck: Optimize number of calls to brig

* gundeck: Try to not kill brig

* Fix typo

* gundeck: Remove pairing comment

* wire-api: Rename Wire.API.WebSocket -> Wire.API.Event.WebSocketProtocol

* gundeck: Don't configure dead-lettering while declaring queues

This should be done via Policies:
https://www.rabbitmq.com/docs/parameters#policies

When done with Policies, we can change our mind about how to deal with
dead-lettering later because queues cannot be redeclared with with different
headers.

* More TODOs

* Use direct exchange for user notifications

Topic exchange is not very useful for our usecase

* integration: Test that users only get notifs meant for them

* integration/Notifications: Allow waiting for notifs without a client

* Deflake newly written tests

* cannon: Don't declare the exchange, its not needed

* integration: Make cannon logLevel Warn again

* integrations: Throw error if websocket responds with invalid JSON

* Add ticket number to FUTUREWORK

* Add notification Id to rabbitmq notifs

This can be used by clients to detect duplicate deliveries.

* Makefile/clean-rabbit: Also cleanup exchanges

* gundeck: Get preexisting unit tests to pass

* Set correct expiration on events pushed to RabbitMQ

* fix a typo in the changelog

* Fix a release note

* Add changelogs for public and internal API changes

* Move around routing key helper functions

* Remove commented out code

* Detect and flag missed notifications from RabbitMQ (#4317)

* Update a change log to reflect changes from PR #4317

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
Co-authored-by: Matthias Fischmann <mf@zerobuzz.net>
Co-authored-by: Marko Dimjašević <marko.dimjasevic@wire.com>
Co-authored-by: Igor Ranieri <54423+elland@users.noreply.github.com>
* charts: Brig rabbitmq config was inside federation block.

* charts: Added cassandra config to bg-worker deployment.

* changelog: Updated info to explain this is a breaking change on charts.
* brig: make rabbitmq field optional again

* Make rabbitmq configuration in brig conditional on federation being
enabled

* Add CHANGELOG entry

* Fix brig no-federation test
* nit: Fixed grammar.

* Cannon: Add draining for RabbitMQ consumers.

* lint: removed dead code.

* Changelog.

* Deleted outdated todo.

* hi ci
Call migration code instead of faking it. These were previously untested.
* Initial implementation of rabbitmq pool

* Set and unset inner channel

* Integrate rabbitmq pool into cannon

* Add rabbitmq channel finaliser

* Create connections when necessary

* Add rabbitmq options to cannon

* Use Codensity in event tests

* Refactor web socket test code

* Fix connection pool deadlock

* Replace TChan with MVar

* introduce EventWebSocket

* Fix channel limit test

* Fix potential channel leak

* Minor cleanups

* Remove websocket read thread

* Catch AsyncCancelled when RabbitMQ channel is closed

* Remove more spurious logs

* Keep track of channels in ConnectionPool

* Implement connection pool draining

* Validate rabbitmq pool options

* Add CHANGELOG entry

* Regenerate nix packages

* Rename connectionLimit → numDictSlices

* Fix connection creation bracket

* Remove unnecessary type annotation

* Replace explicit `async` with `concurrently`

* Add rabbitmq username and password to cannon env

* Fix rabbitmq CA secret in cannon

* fixup! Fix rabbitmq CA secret in cannon

* Remove unnecessary uses of withModifiedBackend

* Add rabbit-mq mount for cannon in integration

---------

Co-authored-by: Stefan Berthold <stefan.berthold@wire.com>
…#4351)

With consumable-notifications we expect a lot of queues to exist in RabbitMQ.
Using regex to filter here would ensure this loop doesn't keep going over all of
those queues over and over again.
* Update hscim README.

* Extend hscim version bounds.

* Recover accidentally removed weed.

* hscim changelog.
* Log uncaught IO exceptions in cargohold

* Add CHANGELOG entry
* A scim token can now be associated with an IDP explicitly on creation

* STM-based integration test

* bump token limit to 8 for integration tests

* Fix: use Versioned for public end-points in integration tests.

* Add docs.

---------

Co-authored-by: Matthias Fischmann <mf@zerobuzz.net>
-------

Co-authored-by: Stefan Berthold <stefan.berthold@wire.com>
Co-authored-by: Leif Battermann <leif.battermann@wire.com>
The generated file already exists in our repo and won't change.
* move ClientCapability ClientSupportsConsumableNotifications to APIv8

* repair overlapping version bound

* Freeze API version 7, create dev API version 8.

* Avoid catch-all pattern if it doesn't have any benefit. (This way we get an error if we forget that spot during the next version freeze.)

---------

Co-authored-by: Stefan Berthold <stefan.berthold@wire.com>
…notifs are not part of the enum (#4366)

* ClientAPI: Ensure unnecessary nesting of capabilities is removed in API v7

* ClientAPI: Ensure consumable-notifications capability doesn't leak to API <= V7

* wire-api: Avoid adding double version suffix

* wire-api: Name versioned Client consistently in swagger

* Regenerate swagger-v7.json

* wire-api: Add golden test for ClientCapabilityListV7
pcapriotti and others added 3 commits December 11, 2024 15:34
* Keep track of unacked messages

* Clear inner channel mvar on channel reset

* Add channel reset test

* Revert "Keep track of unacked messages"

This reverts commit ad0b2d5.

* Disable channel reset in connection pool

* move retryEnabled to pool opts

* use correct rabbitMQ credentials

* reset log cannon's log level to warn

* Add CHANGELOG entry

* Restore rabbitmq admin port

* Add rabbitmq port to integration configuration

* Use servant client to delete connections

* Use connection ID for the connection name

* Linter

* Remove comments

Co-authored-by: Akshay Mankar <akshay@wire.com>

---------

Co-authored-by: Leif Battermann <leif.battermann@wire.com>
Co-authored-by: Akshay Mankar <akshay@wire.com>
* spar: Move changes for named scim auth-tokens to V8

* Regen swagger-v7.json

Also includes changes from #4368

* Remove redundant wrapper function in spar.

* Clarify internal comment.

* Bring back the old constraints on number of idps in create-idp V7.

---------

Co-authored-by: Marko Dimjašević <marko.dimjasevic@wire.com>
Co-authored-by: Matthias Fischmann <mf@zerobuzz.net>
@echoes-hq echoes-hq bot added echoes: technical-roadmap/throughput More specific category, to highlight task aiming at improving the development velocity and effici... echoes: product-roadmap/feature Work contributing to adding a new feature as part of the product roadmap. echoes: unplanned/support Work items completed to meet a customer or user support request. echoes: technical-roadmap/technical-debt More specific category, to highlight Technical Debt being tackled. echoes/initiative: scale Enterprise Readiness Initiatives echoes/initiative: personal-users-to-team-users... labels Dec 11, 2024
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Dec 11, 2024
@fisx fisx force-pushed the release_2024-12-11_16_35 branch from bf15031 to 071f34e Compare December 12, 2024 08:43
@fisx fisx merged commit 2a8ac99 into master Dec 13, 2024
@fisx fisx deleted the release_2024-12-11_16_35 branch December 13, 2024 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

echoes/initiative: personal-users-to-team-users... echoes/initiative: scale Enterprise Readiness Initiatives echoes: product-roadmap/feature Work contributing to adding a new feature as part of the product roadmap. echoes: technical-roadmap/technical-debt More specific category, to highlight Technical Debt being tackled. echoes: technical-roadmap/throughput More specific category, to highlight task aiming at improving the development velocity and effici... echoes: unplanned/support Work items completed to meet a customer or user support request. ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants