summary refs log tree commit diff
path: root/snap (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-03-16Handle cancellation in `DatabasePool.runInteraction()` (#12199)Sean Quah3-24/+96
To handle cancellation, we ensure that `after_callback`s and `exception_callback`s are always run, since the transaction will complete on another thread regardless of cancellation. We also wait until everything is done before releasing the `CancelledError`, so that logging contexts won't get used after they have been finished. Signed-off-by: Sean Quah <seanq@element.io>
2022-03-16Add a relations handler to avoid duplication. (#12227)Patrick Cloke5-69/+134
Adds a handler layer between the REST and datastore layers for relations.
2022-03-16Add some missing type hints to cache datastore. (#12216)Patrick Cloke2-21/+37
2022-03-16Fix dead link in spam checker warning (#12231)David Robertson2-2/+3
2022-03-16Refactor relations tests (#12232)Patrick Cloke2-406/+364
* Moves the relation pagination tests to a separate class. * Move the assertion of the response code into the `_send_relation` helper. * Moves some helpers into the base-class.
2022-03-16Clean-up logic for rebasing URLs during URL preview. (#12219)Patrick Cloke4-91/+26
By using urljoin from the standard library and reducing the number of places URLs are rebased.
2022-03-15Use the ignored_users table to test event visibility & sync. (#12225)Patrick Cloke6-47/+62
Instead of fetching the raw account data and re-parsing it. The ignored_users table is a denormalised version of the account data for quick searching.
2022-03-15Add tests for database transaction callbacks (#12198)Sean Quah2-1/+104
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-15Add type hints to some tests/handlers files. (#12224)Dirk Klimpel7-131/+156
2022-03-14Add cancellation support to `@cached` and `@cachedList` decorators (#12183)Sean Quah3-2/+157
These decorators mostly support cancellation already. Add cancellation tests and fix use of finished logging contexts by delaying cancellation, as suggested by @erikjohnston. Signed-off-by: Sean Quah <seanq@element.io>
2022-03-14Add cancellation support to `ReadWriteLock` (#12120)Sean Quah4-93/+382
Also convert `ReadWriteLock` to use async context managers. Signed-off-by: Sean Quah <seanq@element.io>
2022-03-14Fix broken background updates when using sqlite with `enable_search` off ↵Sean Quah2-6/+8
(#12215) Signed-off-by: Sean Quah <seanq@element.io>
2022-03-14Add `delay_cancellation` utility function (#12180)Sean Quah3-12/+161
`delay_cancellation` behaves like `stop_cancellation`, except it delays `CancelledError`s until the original `Deferred` resolves. This is handy for unifying cleanup paths and ensuring that uncancelled coroutines don't use finished logcontexts. Signed-off-by: Sean Quah <seanq@element.io>
2022-03-12Deprecate the groups/communities endpoints and add an experimental ↵Patrick Cloke7-7/+35
configuration flag. (#12200)
2022-03-11Add config settings for background update parameters (#11980)Shay9-34/+430
2022-03-11Implement a Jinja2 filter to extract localparts from email addresses (#12212)Brendan Abolivier6-2/+23
2022-03-11Improve code documentation for the typing stream over replication. (#12211)reivilibre5-6/+20
2022-03-11Add an additional HTTP pusher + push rule tests. (#12188)Nick Mills-Barrett5-28/+95
And rename the field used for caching from _id to _cache_key.
2022-03-11Update the SSO username picker template to comply with SIWA guidelines (#12210)Brendan Abolivier8-13/+47
Fixes https://github.com/matrix-org/synapse/issues/12205
2022-03-11Add type hints to `tests/rest`. (#12208)Dirk Klimpel5-85/+129
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-03-11Add some type hints to the tests.handlers module. (#12207)Patrick Cloke7-61/+74
2022-03-11Remove unnecessary pass statements. (#12206)Patrick Cloke11-15/+1
2022-03-11Note that contributors can sign off privately (#12204)Andrew Morgan2-0/+12
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-03-11Retention test: avoid relying on state at purged events (#12202)Richard van der Hoff2-12/+18
This test was relying on poking events which weren't in the database into filter_events_for_client.
2022-03-10Document that most streams can only have a single writer. (#12196)~creme2-14/+18
This includes the `typing`, `to_device`, `account_data`, `receipts`, and `presence` streams (really anything except the `events` stream).
2022-03-10fix misleading comment in `check_events_for_spam` (#12203)Shay2-2/+3
2022-03-10Remove workaround introduced in Synapse v1.50.0rc1 for Mjolnir ↵reivilibre3-7/+9
compatibility. Breaks compatibility with Mjolnir v1.3.1 and earlier. (#11700)
2022-03-10Support stable identifiers for MSC3440: Threading (#12151)Patrick Cloke13-81/+109
The unstable identifiers are still supported if the experimental configuration flag is enabled. The unstable identifiers will be removed in a future release.
2022-03-10Updates to the Room DAG concepts development document (#12179)Richard van der Hoff2-18/+54
Some stuff that came up while we were talking about #12173.
2022-03-10Allow retrieving the relations of a redacted event. (#12130)Patrick Cloke8-83/+122
This is allowed per MSC2675, although the original implementation did not allow for it and would return an empty chunk / not bundle aggregations. The main thing to improve is that the various caches get cleared properly when an event is redacted, and that edits must not leak if the original event is redacted (as that would presumably leak something similar to the original event content).
2022-03-10Rename get_tcp_replication to get_replication_command_handler. (#12192)Patrick Cloke15-19/+20
Since the object it returns is a ReplicationCommandHandler. This is clean-up from adding support to Redis where the command handler was added as an additional layer of abstraction from the TCP protocol.
2022-03-09Remove dead code in `tests/storage/test_database.py` (#12197)Sean Quah2-16/+1
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-09Add third_party module callbacks to check if a user can delete a room and ↵Will Hunt8-1/+254
deactivate a user (#12028) * Add check_can_deactivate_user * Add check_can_shutdown_rooms * Documentation * callbacks, not functions * Various suggested tweaks * Add tests for test_check_can_shutdown_room and test_check_can_deactivate_user * Update check_can_deactivate_user to not take a Requester * Fix check_can_shutdown_room docs * Renegade and use `by_admin` instead of `admin_user_id` * fix lint * Update docs/modules/third_party_rules_callbacks.md Co-authored-by: Brendan Abolivier <babolivier@matrix.org> * Update docs/modules/third_party_rules_callbacks.md Co-authored-by: Brendan Abolivier <babolivier@matrix.org> * Update docs/modules/third_party_rules_callbacks.md Co-authored-by: Brendan Abolivier <babolivier@matrix.org> * Update docs/modules/third_party_rules_callbacks.md Co-authored-by: Brendan Abolivier <babolivier@matrix.org> Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2022-03-09Allow for ignoring some arguments when caching. (#12189)Patrick Cloke4-21/+142
* `@cached` can now take an `uncached_args` which is an iterable of names to not use in the cache key. * Requires `@cached`, @cachedList` and `@lru_cache` to use keyword arguments for clarity. * Asserts that keyword-only arguments in cached functions are not accepted. (I tested this briefly and I don't believe this works properly.)
2022-03-09Remove some unused variables/parameters. (#12187)Patrick Cloke2-9/+6
2022-03-09Retry some http replication failures (#12182)Nick Mills-Barrett2-11/+37
This allows for the target process to be down for around a minute which provides time for restarts during synapse upgrades/config updates. Closes: #12178 Signed off by Nick Mills-Barrett nick@beeper.com
2022-03-09Skip attempt to get state at backwards-extremities (#12173)Richard van der Hoff2-57/+4
We don't *have* the state at a backwards-extremity, so this is never going to do anything useful.
2022-03-08Clean-up demo scripts & documentation (#12143)Patrick Cloke9-71/+89
* Rewrites the demo documentation to be clearer, accurate, and moves it to our documentation tree. * Improvements to the demo scripts: * `clean.sh` now runs `stop.sh` first to avoid zombie processes. * Uses more modern Synapse configuration (and removes some obsolete configuration). * Consistently use the HTTP ports for server name, etc. * Remove the `demo/etc` directory and place everything into the `demo/808x` directories.
2022-03-08Use `ParamSpec` in type hints for `synapse.logging.context` (#12150)Sean Quah5-25/+37
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-08Fix CI not attaching source distributions and wheels to the GitHub releases. ↵reivilibre2-1/+3
(#12131)
2022-03-08Fix silly markdown typo v1.54.0Olivier Wilkinson (reivilibre)1-1/+1
2022-03-08Tweak changelog formattingOlivier Wilkinson (reivilibre)1-3/+2
2022-03-08Add experimental environment variable to enable asyncio reactor (#12135)Erik Johnston3-0/+25
2022-03-08Do not return allowed_room_ids from /hierarchy response. (#12175)Patrick Cloke3-2/+17
This field is only to be used in the Server-Server API, and not the Client-Server API, but was being leaked when a federation response was used in the /hierarchy API.
2022-03-08Fix incorrect type hints for txredis. (#12042)Patrick Cloke5-10/+14
Some properties were marked as RedisProtocol instead of ConnectionHandler, which wraps RedisProtocol instance(s).
2022-03-08Shift up warning about MjolnirOlivier Wilkinson (reivilibre)1-3/+4
2022-03-081.54.0Olivier Wilkinson (reivilibre)8-6/+25
2022-03-08Fix a bug introduced in 1.54.0rc1 which meant that Synapse would refuse to ↵reivilibre3-1/+22
start if pre-release versions of dependencies were installed. (#12177) * Add failing test to characterise the regression #12176 * Permit pre-release versions of specified packages * Newsfile (bugfix) Signed-off-by: Olivier Wilkinson (reivilibre) <oliverw@matrix.org>
2022-03-07Fix a bug in background updates wherein background updates are never run ↵Shay4-15/+16
using the default batch size (#12157)
2022-03-07Invalidate caches when an event with a relation is redacted. (#12121)Patrick Cloke6-48/+202
The caches for the target of the relation must be cleared so that the bundled aggregations are re-calculated after the redaction is processed.
2022-03-07Switch the `tests-done` job to an Action (#12161)Richard van der Hoff2-21/+10
I've factored it out for easier use in other workflows.
2022-03-04Relax version guard for packaging (#12166)David Robertson2-2/+3
It’s just occurred to me that #12088 pulled in the “packaging” package (~=21.3). I pulled in the newest version I had at the time. I only use it for packaging.requirements.Requirements. Which was added in packaging 16.1: https://github.com/pypa/packaging/releases/tag/16.1 https://pkgs.org/download/python3-packaging suggests that the oldest version we care about is 17.1 in Ubuntu Bionic. So I think with this bound we're hunky dory.
2022-03-04Reduce to-device queries for /sync. (#12163)Erik Johnston2-0/+4
2022-03-04Add type hints for `ObservableDeferred` attributes (#12159)Sean Quah2-3/+12
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-04Add test for `ObservableDeferred`'s cancellation behaviour (#12149)Sean Quah2-0/+29
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-04Remove backwards compatibility with RelationPaginationToken. (#12138)Patrick Cloke4-144/+16
2022-03-04Changelog (#12153)David Robertson3-1/+2
2022-03-04Move synctl into `synapse._scripts` and expose as an entrypoint (#12140)David Robertson11-13/+33
2022-03-04Spread out sending device lists to remote hosts (#12132)Erik Johnston7-16/+79
2022-03-04Update client-visibility filtering for outlier events (#12155)Richard van der Hoff3-4/+90
Avoid trying to get the state for outliers, which isn't a sensible thing to do.
2022-03-04Fix type of `events` in `StateGroupStorage` and `StateHandler` (#12156)Richard van der Hoff3-7/+8
We make multiple passes over this, so a regular iterable won't do.
2022-03-03Avoid generating state groups for local out-of-band leaves (#12154)Richard van der Hoff2-1/+2
If we locally generate a rejection for an invite received over federation, it is stored as an outlier (because we probably don't have the state for the room). However, currently we still generate a state group for it (even though the state in that state group will be nonsense). By setting the `outlier` param on `create_event`, we avoid the nonsensical state.
2022-03-03Rename various ApplicationServices interested methods (#11915)Andrew Morgan8-76/+175
2022-03-03Detox, part 2 of N (#12152)David Robertson2-26/+1
I've argued in #11537 that poetry and tox don't cooperate well at the moment. (See also #12119.) Therefore I'm pruning away bits of tox to make the transition to poetry easier. This change removes the commands for coverage. We don't use coverage in anger at the moment. It shouldn't be too hard to add coverage as a dev-dependency and reintroduce this if we really want it.
2022-03-03Add type hints to `tests/rest` (#12146)Dirk Klimpel9-92/+104
* Add type hints to `tests/rest` * newsfile * change import from `SigningKey`
2022-03-03Use the proper serialization format when bundling aggregations. (#12090)Patrick Cloke10-143/+130
This ensures that the `latest_event` field of the bundled aggregation for threads uses the same format as the other events in the response.
2022-03-03Don't impose version checks on dev extras at runtime (#12129)David Robertson3-9/+74
* Fix incorrect argument in test case * Add copyright header * Docstring and __all__ * Exclude dev depenencies * Use changelog from #12088 * Include version in error messages This will hopefully distinguish between the version of the source code and the version of the distribution package that is installed. * Linter script is your friend
2022-03-03Enable MSC2716 Complement tests in Synapse (#12145)Eric Eastwood3-2/+3
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2022-03-03Limit the size of the aggregation_key (#12101)Erik Johnston2-0/+4
There's no reason to let people use long keys.
2022-03-03Enable MSC3030 Complement tests in Synapse (#12144)Eric Eastwood3-2/+3
The Complement tests for MSC3030 are now merged, https://github.com/matrix-org/complement/pull/178 Synapse implmentation: https://github.com/matrix-org/synapse/pull/9445
2022-03-03Correctly register deactivation and profile update module callbacks (#12141)Brendan Abolivier3-3/+16
2022-03-02Move the `snapcraft` configuration to `contrib`. (#12142)David Robertson3-1/+1
* Move the `snapcraft` configuration to `contrib`. We're happy for people to package this as a snap image if it's useful, but we don't support or maintain it. I'd like to move the config to `contrib` to reflect this state of affairs. * Changelog
2022-03-02Add suffices to scripts in scripts-dev (#12137)David Robertson11-12/+19
* Rename scripts-dev to have suffices * Update references to `scripts-dev` * Changelog * These scripts don't pass mypy
2022-03-02Remove unused mocks from `test_typing` (#12136)David Robertson2-31/+2
* Remove unused mocks from `test_typing` It's not clear what these do. `get_user_by_access_token` has the wrong signature, including the return type. Tests all pass without these. I think we should nuke them. * Changelog * Fixup imports
2022-03-02Add type hints to `tests/rest/client` (#12108)Dirk Klimpel9-352/+423
* Add type hints to `tests/rest/client` * newsfile * fix imports * add `test_account.py` * Remove one type hint in `test_report_event.py` * change `on_create_room` to `async` * update new functions in `test_third_party_rules.py` * Add `test_filter.py` * add `test_rooms.py` * change to `assertEquals` to `assertEqual` * lint
2022-03-02Enable complexity checking in complexity checking docs example (#11998)Andrew Morgan2-9/+11
2022-03-02Make release script write correct no-op changelog (#12127)Erik Johnston2-2/+29
As we want to include the previous version in the "No new changes..." string.
2022-03-02Check if instances are lists, not sequences. (#12128)Patrick Cloke3-5/+6
As a str is a sequence, the checks were not granular enough and would allow lists or strings, when only lists were valid.
2022-03-02Move scripts directory inside synapse, exposing as setuptools entry_points ↵David Robertson27-135/+77
(#12118) * Two scripts are basically entry_points already * Move and rename scripts/* to synapse/_scripts/*.py * Delete sync_room_to_group.pl * Expose entry points in setup.py * Update linter script and config * Fixup scripts & docs mentioning scripts that moved Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
2022-03-02Reword changelog line about URL previews v1.54.0rc1Olivier Wilkinson (reivilibre)1-1/+1
2022-03-02Tweak changelogOlivier Wilkinson (reivilibre)1-1/+1
2022-03-02Improve and refactor the tests for relations. (#12113)Patrick Cloke2-208/+179
* Modernizes code (f-strings, etc.) * Fixes incorrect comments. * Splits the test case into two. * Factors out some duplicated code.
2022-03-02Apply suggestions to changelogOlivier Wilkinson (reivilibre)1-10/+9
2022-03-02Reword changelogOlivier Wilkinson (reivilibre)1-12/+16
2022-03-021.54.0rc1Olivier Wilkinson (reivilibre)74-72/+103
2022-03-02Remove misleading newsfile from #12126 which backs out an unreleased change.Olivier Wilkinson (reivilibre)1-1/+0
2022-03-02Back out in-flight state caching changes. (#12126)reivilibre7-676/+26
2022-03-02Make get_room_version use cached get_room_version_id. (#11808)lukasdenk3-15/+18
2022-03-01Detox, part 1 of N (#12119)David Robertson4-14/+12
* Don't use `tox` for `check-sampleconfig` * Don't use `tox` for check-newsfragment
2022-03-01Use importlib.metadata to read requirements (#12088)David Robertson13-115/+237
* Pull runtime dep checks into their own module * Reimplement `check_requirements` using `importlib` I've tried to make this clearer. We start by working out which of Synapse's requirements we need to be installed here and now. I was surprised that there wasn't an easier way to see which packages were installed by a given extra. I've pulled out the error messages into functions that deal with "is this for an extra or not". And I've rearranged the loop over two different sets of requirements into one loop with a "must be instaled" flag. I hope you agree that this is clearer. * Test cases
2022-03-01Fix rare error in `ReadWriteLock` when writers complete immediately (#12105)Sean Quah3-1/+35
Signed-off-by: Sean Quah <seanq@element.io>
2022-03-01Add module callbacks called for reacting to deactivation status change and ↵Brendan Abolivier7-7/+360
profile update (#12062)
2022-03-01Use Python 3.9 in Synapse dockerfiles by default (#12112)Andrew Morgan2-2/+3
2022-03-01Add `stop_cancellation` utility function (#12106)Sean Quah3-0/+65
2022-03-01Order in-flight state group queries in biggest-first order (#11610)reivilibre3-4/+131
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-03-01Faster joins: persist to database (#12012)Richard van der Hoff12-32/+297
When we get a partial_state response from send_join, store information in the database about it: * store a record about the room as a whole having partial state, and stash the list of member servers too. * flag the join event itself as having partial state * also, for any new events whose prev-events are partial-stated, note that they will *also* be partial-stated. We don't yet make any attempt to interpret this data, so API calls (and a bunch of other things) are just going to get incorrect data.
2022-03-01Advertise Python 3.10 support in setup.py (#12111)Andrew Morgan2-0/+2
2022-03-01Fix 'Unhandled error in Deferred' (#12089)Richard van der Hoff3-37/+38
* Fix 'Unhandled error in Deferred' Fixes a CRITICAL "Unhandled error in Deferred" log message which happened when a function wrapped with `@cachedList` failed * Minor optimisation to cachedListDescriptor we can avoid re-using `missing`, which saves looking up entries in `deferreds_map`, and means we don't need to copy it. * Improve type annotation on CachedListDescriptor
2022-03-01Improve exception handling for concurrent execution (#12109)Richard van der Hoff5-27/+151
* fix incorrect unwrapFirstError import this was being imported from the wrong place * Refactor `concurrently_execute` to use `yieldable_gather_results` * Improve exception handling in `yieldable_gather_results` Try to avoid swallowing so many stack traces. * mark unwrapFirstError deprecated * changelog
2022-02-28Add type hints to `tests/rest/client` (#12094)Dirk Klimpel5-64/+72
* Add type hints to `tests/rest/client` * update `mypy.ini` * newsfile * add `test_register.py`
2022-02-28Remove the unstable `/spaces` endpoint. (#12073)Patrick Cloke8-802/+46
...and various code supporting it. The /spaces endpoint was from an old version of MSC2946 and included both a Client-Server and Server-Server API. Note that the unstable /hierarchy endpoint (from the final version of MSC2946) is not yet removed.
2022-02-28Move experimental support for MSC3440 to /versions. (#12099)Patrick Cloke3-3/+3
Instead of being part of /capabilities, this matches a change to MSC3440 to properly use these endpoints.
2022-02-28Add type hints to `tests/rest/client` (#12084)Dirk Klimpel12-138/+198
2022-02-28Fix `PushRuleEvaluator` and `Filter` to work on frozendicts (#12100)Richard van der Hoff5-6/+27
* Fix `PushRuleEvaluator` to work on frozendicts frozendicts do not (necessarily) inherit from dict, so this needs to handle them correctly. * Fix event filtering for frozen events Looks like this one was introduced by #11194.
2022-02-28Actually fix bad debug logging rejecting device list & signing key ↵David Robertson3-2/+21
transactions (#12098)
2022-02-28Properly failover for unknown endpoints from Conduit/Dendrite. (#12077)Patrick Cloke2-9/+14
Before this fix, a legitimate 404 from a federation endpoint (e.g. due to an unknown room) would be treated as an unknown endpoint. This could cause unnecessary federation traffic.
2022-02-28Replace assertEquals and friends with non-deprecated versions. (#12092)Patrick Cloke62-889/+888
2022-02-28synctl: print warning if synctl_cache_factor is set in config (#11865)lukasdenk2-0/+9
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
2022-02-25Ensure that `get_datastores().main` is typed (#12070)Sean Quah2-1/+3
Signed-off-by: Sean Quah <seanq@element.io>
2022-02-25Minor typing fixes for `synapse/storage/persist_events.py` (#12069)Sean Quah3-23/+26
Signed-off-by: Sean Quah <seanq@element.io>
2022-02-24Add type hints to `tests/rest/client` (#12072)Dirk Klimpel11-102/+160
2022-02-24Add support for MSC3202: sending one-time key counts and fallback key usage ↵reivilibre11-38/+528
states to Application Services. (#11617) Co-authored-by: Erik Johnston <erik@matrix.org>
2022-02-24Fix non-strings in the `event_search` table (#12037)Sean Quah5-11/+173
Don't attempt to add non-string `value`s to `event_search` and add a background update to clear out bad rows from `event_search` when using sqlite. Signed-off-by: Sean Quah <seanq@element.io>
2022-02-23Add documentation for missing worker types. (#11599)Patrick Cloke2-14/+77
And clean-up the endpoints which should be routed to workers.
2022-02-23Add logging to `/sync` for debugging #11916 (#12068)Erik Johnston2-0/+10
2022-02-23Add type hints to `tests/rest/client` (#12066)Dirk Klimpel5-119/+149
2022-02-23Remove more references to `get_datastore` (#12067)Richard van der Hoff4-6/+6
These have snuck in since #12031 was started. Also a couple of other cleanups while we're in the area.
2022-02-23Remove `HomeServer.get_datastore()` (#12031)Richard van der Hoff230-500/+526
The presence of this method was confusing, and mostly present for backwards compatibility. Let's get rid of it. Part of #11733
2022-02-23Rename default branch of complement.sh to main (#12063)Nicolas Werner2-2/+3
The complement.sh script relies on the name of the ref matching the name of the unpacked folder. The branch redirect from renaming the default branch breaks that assumption. Signed-off-by: Nicolas Werner <n.werner@famedly.com>
2022-02-22Remove excess condition on `knock->leave` check (#11900)Travis Ralston2-3/+4
2022-02-22Better error message when failing to request from another process (#12060)Erik Johnston2-1/+4
2022-02-22Implement account status endpoints (MSC3720) (#12001)Brendan Abolivier11-6/+511
See matrix-org/matrix-doc#3720 Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
2022-02-22Prune setup.cfg some more (#12059)David Robertson5-13/+14
* Remove `trial` section from setup.cfg This was added in the initial commit from 2014. I can't see that it does anything. Maybe it's there so that you can run `trial` without any extra args, but if I do that then I just get the `--help` message. * Move flake8's config to its own file
2022-02-22Cap the number of in-flight requests for state from a single group (#11608)reivilibre3-0/+86
2022-02-22Use room version 9 as the default room version (per MSC3589). (#12058)Patrick Cloke3-2/+3
2022-02-22Run `_handle_queued_pdus` as a background process (#12041)Richard van der Hoff2-2/+5
... to ensure it gets a proper log context, mostly.
2022-02-22Fix slow performance of `/logout` in some cases where refresh tokens are in ↵reivilibre4-4/+136
use. The slowness existed since the initial implementation of refresh tokens. (#12056)
2022-02-22Faster joins: Support for calling `/federation/v1/state` (#12013)Richard van der Hoff7-17/+377
This is an endpoint that we have server-side support for, but no client-side support. It's going to be useful for resyncing partial-stated rooms, so let's introduce it.
2022-02-22Fetch images when previewing Twitter URLs. (#11985)AndrewRyanChama3-4/+11
By including "bot" in the User-Agent, which some sites use to decide whether to include additional Open Graph information.
2022-02-22Update changelogErik Johnston1-1/+1
2022-02-22Update changelogErik Johnston1-2/+2
2022-02-22Add more tests for in-flight state query duplication. (#12033)reivilibre2-21/+172
2022-02-22Tidy the building of sdists and wheels (#12051)David Robertson3-28/+4
* Don't build distribution pkgs in tests.yml * Run `release-artifacts` on release branches * Use backend-meta workflow for packaging
2022-02-221.53.0 v1.53.0Erik Johnston3-1/+13
2022-02-22Move isort config to `pyproject.toml` (#12052)David Robertson4-12/+14
2022-02-22Use v3 endpoints for fallback auth (Matrix 1.1) (#12019)Travis Ralston2-4/+5
2022-02-21remote join processing: get create event from state, not auth_chain (#12039)Richard van der Hoff4-5/+8
A follow-up to #12005, in which I apparently missed that there are a bunch of other places that assume the create event is in the auth chain.
2022-02-21Minor typing fixes (#12034)Richard van der Hoff4-16/+19
These started failing in https://github.com/matrix-org/synapse/pull/12031... I'm a bit mystified by how they ever worked.
2022-02-21Add type hints to `synapse/storage/databases/main` (#11984)Dirk Klimpel7-53/+79
2022-02-21Advertise Matrix 1.2 in `/_matrix/client/versions` (#12022)Travis Ralston2-0/+2
Co-authored-by: Patrick Cloke <patrickc@matrix.org>
2022-02-18Document why auth providers aren't validated in the admin API. (#12004)Patrick Cloke4-2/+29
Since it is reasonable to give a future or past auth provider, which might not be in the current configuration.
2022-02-18Track and deduplicate in-flight requests to `_get_state_for_groups`. (#10870)reivilibre3-25/+312
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-18Upgrade mypy to version 0.931 (#12030)Sean Quah9-19/+33
Upgrade mypy to 0.931, mypy-zope to 0.3.5 and fix new complaints.
2022-02-18Fix bug in `StateFilter.return_expanded()` and add some tests. (#12016)reivilibre3-1/+117
2022-02-18Advertise Matrix 1.1 in `/_matrix/client/versions` (#12020)Travis Ralston2-0/+2
2022-02-18Use stable MSC3069 `is_guest` flag on `/whoami`. (#12021)Travis Ralston3-3/+9
Keeping backwards compatibility with the unstable flag for now.
2022-02-18Fix 500 error with Postgres when looking backwards with the MSC3030 ↵Eric Eastwood2-1/+2
`/timestamp_to_event` endpoint (#12024)
2022-02-18Update the olddeps CI check to use an old version of markupsafe (#12025)Brendan Abolivier2-0/+4
2022-02-17Remove unstable MSC3283 flags (#12018)Erik Johnston3-17/+1
Fixes #11962
2022-02-17Allow modules to set a display name on registration (#12009)Brendan Abolivier6-34/+195
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-17Faster joins: parse msc3706 fields in send_join response (#12011)Richard van der Hoff6-33/+140
Part of my work on #11249: add code to handle the new fields added in MSC3706.
2022-02-17Configure `tox` to use `venv` (#12015)Richard van der Hoff3-1/+9
As the comment says, virtualenv is a pile of fail.
2022-02-17Remove support for the legacy structured logging configuration. (#12008)Patrick Cloke5-175/+24
2022-02-17`send_join` response: get create event from `state`, not `auth_chain` (#12005)Richard van der Hoff2-1/+2
msc3706 proposes changing the `/send_join` response: > Any events returned within `state` can be omitted from `auth_chain`. Currently, we rely on `m.room.create` being returned in `auth_chain`, but since the `m.room.create` event must necessarily be part of the state, the above change will break this. In short, let's look for `m.room.create` in `state` rather than `auth_chain`.
2022-02-17Prevent duplicate push notifications for room reads (#11835)lukasdenk3-66/+71
2022-02-16Explain the meaning of spam checker callbacks' return values (#12003)David Robertson2-13/+28
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-16Fix a typo in a comment.Patrick Cloke1-1/+1
2022-02-16Limit concurrent AS joins (#11996)Brendan Abolivier2-19/+28
Initially introduced in matrix-org-hotfixes by e5537cf (and tweaked by later commits). Fixes #11995 See also #4826
2022-02-15Optimise calculating device_list changes in `/sync`. (#11974)Erik Johnston4-15/+126
For users with large accounts it is inefficient to calculate the set of users they share a room with (and takes a lot of space in the cache). Instead we can look at users whose devices have changed since the last sync and check if they share a room with the syncing user.
2022-02-15`_auth_and_persist_outliers`: drop events we have already seen (#11994)Richard van der Hoff2-24/+21
We already have two copies of this code, in 2/3 of the callers of `_auth_and_persist_outliers`. Before I add a third, let's push it down.
2022-02-15Track cache invalidations (#12000)Erik Johnston4-1/+10
Currently we only track evictions due to size or time constraints.
2022-02-15Fix incorrect `get_rooms_for_user` for remote user (#11999)Erik Johnston3-11/+124
When the server leaves a room the `get_rooms_for_user` cache is not correctly invalidated for the remote users in the room. This means that subsequent calls to `get_rooms_for_user` for the remote users would incorrectly include the room (it shouldn't be included because the server no longer knows anything about the room).
2022-02-15Docker: remove `VOLUME` directive (#11997)Richard van der Hoff2-2/+1
The driver for this is to stop Complement complaining about it, but as far as I can tell it was pointless and needed to go away anyway. I'm a bit unclear about what exactly VOLUME does, but I think what it means is that, if you don't override it with an explicit -v argument, then docker run will create a temporary volume, and copy things into it. The temporary volume is then deleted when the container finishes. That only sounds useful if your image has something to copy into it (otherwise you may as well just use the default root filesystem), and our image notably doesn't copy anything into /data. So... this wasn't doing anything, except annoying Complement?
2022-02-15Refactor search code to reduce function size. (#11991)Patrick Cloke3-226/+435
Splits the search code into a few logical functions instead of a single unreadable function. There are also a few additional changes for readability. After refactoring it was clear to see there were some unused and unnecessary variables, which were simplified.
2022-02-15Fix incorrect thread summaries when the latest event is edited. (#11992)Patrick Cloke5-31/+107
If the latest event in a thread was edited than the original event content was included in bundled aggregation for threads instead of the edited event content.
2022-02-15Add some tests for propagation of device list changes between local users ↵Andrew Morgan4-3/+163
(#11972)
2022-02-15Update CHANGES.md v1.53.0rc1Sean Quah1-7/+7
2022-02-151.53.0rc1Sean Quah60-58/+86
2022-02-14Revert "Pin to frozendict<2.1.2 (#11625)" and allow frozendict>2.1.2 (#11969)Pascal Bach2-1/+2
This reverts commit 2bf31f7807c7a0c229170803c97090d612dc16f9. Signed-off-by: Pascal Bach <pascal.bach@nextrem.ch>
2022-02-14Fix M_WRONG_ROOM_KEYS_VERSION error not including `current_version` field ↵Michael Telatynski2-0/+4
(#11988) Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2022-02-14Note when unstable MSC3283 prefixes will be removed (#11989)Andrew Morgan2-1/+2
2022-02-14remove empty file, reword/rename newsfragment, and add line to upgrade docH. Shay4-1/+2
2022-02-14 Require that modules register their callbacks using keyword arguments. (#11975)Patrick Cloke2-0/+7
To allow for easier backwards/forwards compatibility by making it easier to add/remove callbacks.
2022-02-14Use version string helper from matrix-common (#11979)David Robertson13-112/+42
* Require latest matrix-common * Use the common function
2022-02-12Notify users, rather than rooms, of device list updates (#11905)Andrew Morgan2-5/+4
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-12Implement MSC3706: partial state in `/send_join` response (#11967)Richard van der Hoff7-21/+262
* Make `get_auth_chain_ids` return a Set It has a set internally, and a set is often useful where it gets used, so let's avoid converting to an intermediate list. * Minor refactors in `on_send_join_request` A little bit of non-functional groundwork * Implement MSC3706: partial state in /send_join response
2022-02-11Enable cache time-based expiry by default (#11849)Shay5-11/+50
2022-02-11Support the MSC3715 for `/relations`. (#11941)Patrick Cloke3-6/+36
This adds an unstable org.matrix.msc3715.dir parameter which acts like dir on /mesages.
2022-02-11Fetch thread summaries for multiple events in a single query (#11752)Patrick Cloke3-74/+151
This should reduce database usage when fetching bundled aggregations as the number of individual queries (and round trips to the database) are reduced.
2022-02-11Prepare for rename of default complement branch (#11971)Richard van der Hoff2-3/+4
use `HEAD` rather than hardcoding `master`
2022-02-11Remove deprecated user_may_create_room_with_invites callback (#11950)Brendan Abolivier6-179/