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

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

Merged
merged 35 commits into from
Dec 13, 2024

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 <[email protected]>
Master->Develop after release
* Add a unit test for DeleteEmail

* Add a unit test for UpdateEmailUnvalidated

Co-authored-by: Sven Tennie <[email protected]>

* 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 <[email protected]>
* 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 8a1840d.

* 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 861ee10.

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 <[email protected]>
Co-authored-by: Matthias Fischmann <[email protected]>
Co-authored-by: Marko Dimjašević <[email protected]>
Co-authored-by: Igor Ranieri <[email protected]>
* 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 <[email protected]>
…#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 <[email protected]>
-------

Co-authored-by: Stefan Berthold <[email protected]>
Co-authored-by: Leif Battermann <[email protected]>
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 <[email protected]>
…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 <[email protected]>

---------

Co-authored-by: Leif Battermann <[email protected]>
Co-authored-by: Akshay Mankar <[email protected]>
* 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ć <[email protected]>
Co-authored-by: Matthias Fischmann <[email protected]>
@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
11 checks passed
@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.

9 participants