Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Track notification counts per thread (implement MSC3773) (redo) #13776

Merged
merged 26 commits into from
Oct 4, 2022

Conversation

clokep
Copy link
Member

@clokep clokep commented Sep 12, 2022

Track notification counts on a per-thread basis, implementing MSC3773.

The overall design of this is to add a thread_id column to the event_push_actions (+ event_push_actions_staging) and event_push_summary tables. This allows the results to be segmented by the thread (by storing either the root event ID in the thread_id column or the special value "main").

When retrieving counts of notifications we can then segment based on the thread, this is opt-in for the client by providing a sync flag. In the case the client doesn't want separate threads we simply sum across all threads + the main timeline.

The summarization code also needs to be updated to be per thread, instead of just per room.

Please see MSC3773 for a description of the API changes.

Part of #12550

This is essentially a rebase of #13181 on top of #13753 (see #13181 (comment) for the rationale why it was separated).

We want this to land in Synapse v1.69.0 the earliest since it forces an updated schema which is landing in v1.68.0.

Base automatically changed from clokep/threads-notif-1 to develop September 14, 2022 17:11
@clokep clokep requested review from a team and removed request for a team September 15, 2022 19:26
@clokep clokep marked this pull request as ready for review September 16, 2022 16:38
@clokep clokep requested a review from a team as a code owner September 16, 2022 16:38
@clokep clokep requested review from erikjohnston and removed request for a team September 16, 2022 16:38
@clokep
Copy link
Member Author

clokep commented Sep 16, 2022

@erikjohnston I set you as the reviewer since most of this PR is the same as #13181, which you had previously reviewed. You can push it back to the group if you'd like.

Comment on lines +90 to +92
# The threads_id column must exist for event_push_actions, event_push_summary,
# receipts_linearized, and receipts_graph.
73
Copy link
Member Author

Choose a reason for hiding this comment

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

We might be able to defer actually bumping the minimum schema a bit, but results would be inconsistent if you rolled back (you'd end up with nulls in some places which would make the joins not work). Not sure if that's more desirable though.

Copy link
Member Author

Choose a reason for hiding this comment

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

We discussed this a bit and think it is OK.

Note that schema 73 was introduced in v1.68.0rc1.

@clokep
Copy link
Member Author

clokep commented Sep 22, 2022

@erikjohnston I think this is ready for another review!

Copy link
Member

@erikjohnston erikjohnston left a comment

Choose a reason for hiding this comment

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

Woop

@clokep
Copy link
Member Author

clokep commented Sep 22, 2022

Annoyingly I think we want to wait another version before merging? Will ask folks.

@clokep clokep mentioned this pull request Sep 27, 2022
4 tasks
@clokep clokep merged commit b4ec4f5 into develop Oct 4, 2022
@clokep clokep deleted the clokep/threads-notif-2 branch October 4, 2022 13:47
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Oct 29, 2022
Upstream changes:

Synapse 1.70.1 (2022-10-28)
===========================

(bugfixes)


Synapse 1.70.0 (2022-10-26)
===========================

Features
--------

- Support for
  [MSC3856](matrix-org/matrix-spec-proposals#3856):
  threads list
  API. ([\#13394](matrix-org/synapse#13394),
  [\#14171](matrix-org/synapse#14171),
  [\#14175](matrix-org/synapse#14175))

- Support for thread-specific notifications & receipts
  ([MSC3771](matrix-org/matrix-spec-proposals#3771)
  and
  [MSC3773](matrix-org/matrix-spec-proposals#3773)). ([\#13776](matrix-org/synapse#13776),
  [\#13824](matrix-org/synapse#13824),
  [\#13877](matrix-org/synapse#13877),
  [\#13878](matrix-org/synapse#13878),
  [\#14050](matrix-org/synapse#14050),
  [\#14140](matrix-org/synapse#14140),
  [\#14159](matrix-org/synapse#14159),
  [\#14163](matrix-org/synapse#14163),
  [\#14174](matrix-org/synapse#14174),
  [\#14222](matrix-org/synapse#14222))

- Stop fetching missing `prev_events` after we already know their
  signature is
  invalid. ([\#13816](matrix-org/synapse#13816))

- Send application service access tokens as a header (and query
  parameter). Implements
  [MSC2832](matrix-org/matrix-spec-proposals#2832). ([\#13996](matrix-org/synapse#13996))

- Ignore server ACL changes when generating pushes. Implements
  [MSC3786](matrix-org/matrix-spec-proposals#3786). ([\#13997](matrix-org/synapse#13997))

- Experimental support for redirecting to an implementation of a
  [MSC3886](matrix-org/matrix-spec-proposals#3886)
  HTTP rendezvous
  service. ([\#14018](matrix-org/synapse#14018))

- The `/relations` endpoint can now be used on
  workers. ([\#14028](matrix-org/synapse#14028))

- Advertise support for Matrix 1.3 and 1.4 on
  `/_matrix/client/versions`. ([\#14032](matrix-org/synapse#14032),
  [\#14184](matrix-org/synapse#14184))

- Improve validation of request bodies for the [Device
  Management](https://spec.matrix.org/v1.4/client-server-api/#device-management)
  and [MSC2697 Device
  Dehyrdation](matrix-org/matrix-spec-proposals#2697)
  client-server API
  endpoints. ([\#14054](matrix-org/synapse#14054))

- Experimental support for
  [MSC3874](matrix-org/matrix-spec-proposals#3874):
  Filtering threads from the `/messages`
  endpoint. ([\#14148](matrix-org/synapse#14148))

- Improve the validation of the following PUT endpoints:
  [`/directory/room/{roomAlias}`](https://spec.matrix.org/v1.4/client-server-api/#put_matrixclientv3directoryroomroomalias),
  [`/directory/list/room/{roomId}`](https://spec.matrix.org/v1.4/client-server-api/#put_matrixclientv3directorylistroomroomid)
  and
  [`/directory/list/appservice/{networkId}/{roomId}`](https://spec.matrix.org/v1.4/application-service-api/#put_matrixclientv3directorylistappservicenetworkidroomid). ([\#14179](matrix-org/synapse#14179))


Deprecations and Removals
-------------------------

- Remove the experimental implementation of
  [MSC3772](matrix-org/matrix-spec-proposals#3772). ([\#14094](matrix-org/synapse#14094))

- Remove the unstable identifier for
  [MSC3715](matrix-org/matrix-spec-proposals#3715). ([\#14106](matrix-org/synapse#14106),
  [\#14146](matrix-org/synapse#14146))
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants