- Feb 07, 2022
-
-
Eric Eastwood authored
Fix https://github.com/matrix-org/synapse/issues/11091 Fix https://github.com/matrix-org/synapse/issues/10764 (side-stepping the issue because we no longer have to deal with `fake_prev_event_id`) 1. Made the `/backfill` response return messages in `(depth, stream_ordering)` order (previously only sorted by `depth`) - Technically, it shouldn't really matter how `/backfill` returns things but I'm just trying to make the `stream_ordering` a little more consistent from the origin to the remote homeservers in order to get the order of messages from `/messages` consistent ([sorted by `(topological_ordering, stream_ordering)`](https://github.com/matrix-org/synapse/blob/develop/docs/development/room-dag-concepts.md#depth-and-stream-ordering)). - Even now that we return backfilled messages in order, it still doesn't guarantee the same `stream_ordering` (and more importantly the [`/messages` order](https://github.com/matrix-org/synapse/blob/develop/docs/development/room-dag-concepts.md#depth-and-stream-ordering)) on the other server. For example, if a room has a bunch of history imported and someone visits a permalink to a historical message back in time, their homeserver will skip over the historical messages in between and insert the permalink as the next message in the `stream_order` and totally throw off the sort. - This will be even more the case when we add the [MSC3030 jump to date API endpoint](https://github.com/matrix-org/matrix-doc/pull/3030) so the static archives can navigate and jump to a certain date. - We're solving this in the future by switching to [online topological ordering](https://github.com/matrix-org/gomatrixserverlib/issues/187) and [chunking](https://github.com/matrix-org/synapse/issues/3785) which by its nature will apply retroactively to fix any inconsistencies introduced by people permalinking 2. As we're navigating `prev_events` to return in `/backfill`, we order by `depth` first (newest -> oldest) and now also tie-break based on the `stream_ordering` (newest -> oldest). This is technically important because MSC2716 inserts a bunch of historical messages at the same `depth` so it's best to be prescriptive about which ones we should process first. In reality, I think the code already looped over the historical messages as expected because the database is already in order. 3. Making the historical state chain and historical event chain float on their own by having no `prev_events` instead of a fake `prev_event` which caused backfill to get clogged with an unresolvable event. Fixes https://github.com/matrix-org/synapse/issues/11091 and https://github.com/matrix-org/synapse/issues/10764 4. We no longer find connected insertion events by finding a potential `prev_event` connection to the current event we're iterating over. We now solely rely on marker events which when processed, add the insertion event as an extremity and the federating homeserver can ask about it when time calls. - Related discussion, https://github.com/matrix-org/synapse/pull/11114#discussion_r741514793 Before | After --- | ---  |  #### Why aren't we sorting topologically when receiving backfill events? > The main reason we're going to opt to not sort topologically when receiving backfill events is because it's probably best to do whatever is easiest to make it just work. People will probably have opinions once they look at [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) which could change whatever implementation anyway. > > As mentioned, ideally we would do this but code necessary to make the fake edges but it gets confusing and gives an impression of “just whyyyy” (feels icky). This problem also dissolves with online topological ordering. > > -- https://github.com/matrix-org/synapse/pull/11114#discussion_r741517138 See https://github.com/matrix-org/synapse/pull/11114#discussion_r739610091 for the technical difficulties
-
Andrew Morgan authored
-
Patrick Cloke authored
The Content-Length header should be treated as an int, not a string. This shouldn't have any user-facing change.
-
Andrew Morgan authored
-
Andrew Morgan authored
-
- Feb 04, 2022
-
-
Dirk Klimpel authored
-
kegsay authored
Since #11811 there has been general Complement flakiness around networking. It seems like tests are hitting the wrong containers. In an effort to diagnose the cause of this, as well as reduce its impact on this project, set the parallelsim to 1 (no parallelism) when running tests. If this fixes the flakiness then this indicates the cause and I can diagnose this further. If this doesn't fix the flakiness then that implies some kind of test pollution which also helps to diagnose this further.
-
Jonathan de Jong authored
-
Richard van der Hoff authored
This document isn't really relevant any more, and its existence is more confusing than helpful.
-
Richard van der Hoff authored
-
- Feb 03, 2022
-
-
Patrick Cloke authored
Also remove support for non-HTTP(S) web_client_location.
-
Christian Paul authored
Co-authored-by:
reivilibre <olivier@librepush.net>
-
Brendan Abolivier authored
-
reivilibre authored
Allow specifying the application service-specific `user_id` parameter in the `join` test helper. (#11616)
-
Richard van der Hoff authored
The idea here is to set the parent span for incoming federation requests to the *outgoing* span on the other end. That means that you can see (most of) the full end-to-end flow when you have a process that includes federation requests. However, in order not to lose information, we still want a link to the `incoming-federation-request` span from the servlet, so we have to create another span to do exactly that.
-
- Feb 02, 2022
-
-
Richard van der Hoff authored
`start_active_span` was inconsistent as to whether it would activate the span immediately, or wait for `scope.__enter__` to happen (it depended on whether the current logcontext already had an associated scope). The inconsistency was rather confusing if you were hoping to set up a couple of separate spans before activating either. Looking at the other implementations of opentracing `ScopeManager`s, the intention is that it *should* be activated immediately, as the name implies. Indeed, the idea is that you don't have to use the scope as a contextmanager at all - you can just call `.close` on the result. Hence, our cleanup has to happen in `.close` rather than `.__exit__`. So, the main change here is to ensure that `start_active_span` does activate the span, and that `scope.close()` does close the scope. We also add some tests, which requires a `tracer` param so that we don't have to rely on the global variable in unit tests.
-
Patrick Cloke authored
The get_users_in_room and get_users_in_room_with_profiles are now only invalidated when the membership of a room changes, instead of during any state change in the room.
-
reivilibre authored
Co-authored-by:
David Robertson <davidr@element.io>
-
David Robertson authored
* Fix losing incoming EDUs if debug logging enabled Fixes #11889. Homeservers should only be affected if the `synapse.8631_debug` logger was enabled for DEBUG mode. I am not sure if this merits a bugfix release: I think the logging can be disabled in config if anyone is affected? But it is still pretty bad.
-
Richard van der Hoff authored
We disabled coverage calculation for most of CI in #11017, but the olddeps build uses a separate script and got forgotten.
-
David Robertson authored
Should have been caught in #10826.
-
Patrick Cloke authored
Manually reverts the merge from cdbb8e6d.
-
reivilibre authored
-
reivilibre authored
-
- Feb 01, 2022
-
-
Andrew Morgan authored
-
Brendan Abolivier authored
Fixes #10701
-
Andrew Morgan authored
Co-authored-by:
Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
-
David Robertson authored
It's already under deps & removals
-
David Robertson authored
-
- Jan 31, 2022
-
-
Dirk Klimpel authored
-
Dirk Klimpel authored
Co-authored-by:
reivilibre <olivier@librepush.net>
-
Patrick Cloke authored
MSC1849 was replaced by MSC2675, which was merged. The configuration flag, which defaulted to true, is no longer useful.
-
Dirk Klimpel authored
-
- Jan 28, 2022
-
-
Brendan Abolivier authored
Only allow files which file size and content types match configured limits to be set as avatar. Most of the inspiration from the non-test code comes from matrix-org/synapse-dinsic#19
-
- Jan 27, 2022
-
-
Brendan Abolivier authored
This was missed in https://github.com/matrix-org/synapse/pull/11799
-
Richard van der Hoff authored
No point recreating these for each call, since they are frozen
-
Dirk Klimpel authored
-
Shay authored
-
- Jan 26, 2022
-
-
Vaishnav Nair authored
* Include 'prev_content' field in AS events Signed-off-by:
Vaishnav Nair <nairvaishnav007@icloud.com> Co-authored-by:
Brendan Abolivier <babolivier@matrix.org>
-
Brendan Abolivier authored
This is in the context of mainlining the Tchap fork of Synapse. Currently in Tchap usernames are derived from the user's email address (extracted from the UIA results, more specifically the m.login.email.identity step). This change also exports the check_username method from the registration handler as part of the module API, so that a module can check if the username it's trying to generate is correct and doesn't conflict with an existing one, and fallback gracefully if not. Co-authored-by:
David Robertson <davidr@element.io>
-