summary refs log tree commit diff
path: root/CHANGES.md (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-06-23Re-introduce "Leave out optional keys from /sync" change (#10214)Andrew Morgan4-55/+53
Required some fixes due to merge conflicts with #6739, but nothing too hairy. The first commit is the same as the original (after merge conflict resolution) then two more for compatibility with the latest sync code.
2021-06-23Improve the reliability of auto-joining remote rooms (#10237)Brendan Abolivier3-17/+96
If a room is remote and we don't have a user in it, always try to join it. It might fail if the room is invite-only, but we don't have a user to invite with, so at this point it's the best we can do. Fixes #10233 (at least to some extent)
2021-06-23Send out invite rejections and knocks over federation (#10223)Richard van der Hoff3-1/+16
ensure that events sent via `send_leave` and `send_knock` are sent on to the rest of the federation.
2021-06-23Drop Origin & Accept from Access-Control-Allow-Headers value (#10114)Michael[tm] Smith2-1/+2
* Drop Origin & Accept from Access-Control-Allow-Headers value This change drops the Origin and Accept header names from the value of the Access-Control-Allow-Headers response header sent by Synapse. Per the CORS protocol, it’s not necessary or useful to include those header names. Details: Per-spec at https://fetch.spec.whatwg.org/#forbidden-header-name, Origin is a “forbidden header name” set by the browser and that frontend JavaScript code is never allowed to set. So the value of Access-Control-Allow-Headers isn’t relevant to Origin or in general to other headers set by the browser itself — the browser never ever consults the Access-Control-Allow-Headers value to confirm that it’s OK for the request to include an Origin header. And per-spec at https://fetch.spec.whatwg.org/#cors-safelisted-request-header, Accept is a “CORS-safelisted request-header”, which means that browsers allow requests to contain the Accept header regardless of whether the Access-Control-Allow-Headers value contains "Accept". So it’s unnecessary for the Access-Control-Allow-Headers to explicitly include Accept. Browsers will not perform a CORS preflight for requests containing an Accept request header. Related: https://github.com/matrix-org/matrix-doc/pull/3225 Signed-off-by: Michael[tm] Smith <mike@w3.org>
2021-06-22Fix schema delta to not take as long on large servers (#10227)Erik Johnston2-2/+6
Introduced in #6739
2021-06-22Warn users trying to use the deprecated spam checker interface (#10210)Brendan Abolivier2-0/+16
So admins aren't surprised if things break when we remove this code in a couple of months.
2021-06-22Add endpoints for backfilling history (MSC2716) (#9247)Eric Eastwood14-23/+584
Work on https://github.com/matrix-org/matrix-doc/pull/2716
2021-06-21Implement config option `sso.update_profile_information` (#10108)jkanefendt4-1/+51
Implemented config option sso.update_profile_information to keep user's display name in sync with the SSO displayname. Signed-off-by: Johannes Kanefendt <johannes.kanefendt@krzn.de>
2021-06-21Fix performance of responding to user key requests over federation (#10221)Erik Johnston3-1/+11
We were repeatedly looking up a config option in a loop (using the unclassed config style), which is expensive enough that it can cause large CPU usage.
2021-06-21Check third party rules before persisting knocks over federation (#10212)Andrew Morgan2-2/+3
An accidental mis-ordering of operations during #6739 technically allowed an incoming knock event over federation in before checking it against any configured Third Party Access Rules modules. This PR corrects that by performing the TPAR check *before* persisting the event.
2021-06-21Ensure that errors during startup are written to the logs and the console. ↵Richard van der Hoff5-16/+55
(#10191) * Defer stdio redirection until we are about to start the reactor * Catch and handle exceptions during startup
2021-06-18Deploy a documentation version for each new Synapse release (#10198)Andrew Morgan2-0/+34
This PR will run a new "Deploy release-specific documentation" job whenever a push to a branch name matching `release-v*` occurs. Doing so will create/add to a folder named `vX.Y` on the `gh-pages` branch. Doing so will allow us to build up `major.minor` releases of the docs as we release Synapse. This is especially useful for having a mechanism for keeping around documentation of old/removed features (for those running older versions of Synapse), without needing to clutter the latest copy of the docs. After a [discussion](https://matrix.to/#/!XaqDhxuTIlvldquJaV:matrix.org/$rKmkBmQle8OwTlGcoyu0BkcWXdnHW3_oap8BMgclwIY?via=matrix.org&via=vector.modular.im&via=envs.net) in #synapse-dev, we wanted to use tags to trigger the documentation deployments, which I agreed with. However, I soon realised that the bash-foo required to turn a tag of `v1.2.3rc1` into `1.2` was a lot more complex than the branch's `release-v1.2`. So, I've gone with the latter for simplicity. In the future we'll have some UI on the website to switch between versions, but for now you can simply just change 'develop' to 'v1.2' in the URL.
2021-06-18Fix a missing await when in the spaces summary. (#10208)Patrick Cloke3-3/+100
This could cause a minor data leak if someone defined a non-restricted join rule with an allow key or used a restricted join rule in an older room version, but this is unlikely. Additionally this starts adding unit tests to the spaces summary handler.
2021-06-18Describe callbacks signatures as async in new modules doc (#10206)Brendan Abolivier2-8/+9
2021-06-18Standardise the module interface (#10062)Brendan Abolivier23-188/+769
This PR adds a common configuration section for all modules (see docs). These modules are then loaded at startup by the homeserver. Modules register their hooks and web resources using the new `register_[...]_callbacks` and `register_web_resource` methods of the module API.
2021-06-18Expose opentracing trace id in response headers (#10199)Richard van der Hoff3-0/+25
Fixes: #9480
2021-06-17Remove support for ACME v1 (#10194)Brendan Abolivier18-836/+18
Fixes #9778 ACME v1 has been fully decommissioned for existing installs on June 1st 2021(see https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/27), so we can now safely remove it from Synapse.
2021-06-17Update MSC3083 support per changes in the MSC. (#10189)Patrick Cloke4-31/+47
Adds a "type" field and generalize "space" to "room_id".
2021-06-17Ensure that we do not cache empty sync responses after a timeout (#10158)Richard van der Hoff8-21/+84
Fixes #8518 by telling the ResponseCache not to cache the /sync response if the next_batch param is the same as the since token.
2021-06-17Rip out the DNS lookup limiter (#10190)Richard van der Hoff2-104/+1
As I've written in various places in the past (#7113, #9865) I'm pretty sure this is doing nothing useful at all.
2021-06-17update black to 21.6b0 (#10197)Marcus17-27/+28
Reformat all files with the new version. Signed-off-by: Marcus Hoffmann <bubu@bubu1.eu>
2021-06-17Fix incorrect time magnitude on delayed call (#10195)Andrew Morgan2-1/+2
Fixes https://github.com/matrix-org/synapse/issues/10030. We were expecting milliseconds where we should have provided a value in seconds. The impact of this bug isn't too bad. The code is intended to count the number of remote servers that the homeserver can see and report that as a metric. This metric is supposed to run initially 1 second after server startup, and every 60s as well. Instead, it ran 1,000 seconds after server startup, and every 60s after startup. This fix allows for the correct metrics to be collected immediately, as well as preventing a random collection 1,000s in the future after startup.
2021-06-17Add fields to better debug where events are being soft_failed (#10168)Eric Eastwood2-3/+19
Follow-up to https://github.com/matrix-org/synapse/pull/10156#discussion_r650292223
2021-06-17Fix persist_events to stop leaking opentracing contexts (#10193)Richard van der Hoff2-1/+2
2021-06-16Improve comments in the structured logging code. (#10188)Patrick Cloke2-4/+6
2021-06-16Always require users to re-authenticate for dangerous operations. (#10184)Patrick Cloke6-1/+24
Dangerous actions means deactivating an account, modifying an account password, or adding a 3PID. Other actions (deleting devices, uploading keys) can re-use the same UI auth session if ui_auth.session_timeout is configured.
2021-06-16A guide to the request log lines format. (#8436)Michael Kaye3-0/+46
This doc is short but a useful guide to what the request log lines mean. Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: Erik Johnston <erik@matrix.org> Co-authored-by: Daniele Sluijters <daenney@users.noreply.github.com>
2021-06-16Add debug logging when we enter/exit Measure block (#10183)Erik Johnston2-0/+6
It can be helpful to know when trying to track down slow requests.
2021-06-16Fix requestOpenIdToken response: integer expires_in (#10175)Lukas Lihotzki2-1/+2
`expires_in` must be an integer according to the OpenAPI spec: https://github.com/matrix-org/matrix-doc/blob/master/data/api/client-server/definitions/openid_token.yaml#L32 True division (`/`) returns a float instead (`"expires_in": 3600.0`). Floor division (`//`) returns an integer, so the response is spec compliant. Signed-off-by: Lukas Lihotzki <lukas@lihotzki.de>
2021-06-16Fix broken links in documentation (#10180)Dirk Klimpel19-51/+53
* Fix broken links in documentation * newsfile
2021-06-16Make opentracing trace into event persistence (#10134)Richard van der Hoff4-9/+99
* Trace event persistence When we persist a batch of events, set the parent opentracing span to the that from the request, so that we can trace all the way in. * changelog * When we force tracing, set a baggage item ... so that we can check again later. * Link in both directions between persist_events spans
2021-06-15 1.36.0 v1.36.0 release-v1.36Erik Johnston3-1/+13
2021-06-15Remove support for unstable MSC1772 prefixes. (#10161)Patrick Cloke3-16/+4
The stable prefixes have been supported since v1.34.0. The unstable prefixes are not supported by any known clients.
2021-06-15Remove the experimental flag for knocking and use stable prefixes / ↵Patrick Cloke13-96/+33
endpoints. (#10167) * Room version 7 for knocking. * Stable prefixes and endpoints (both client and federation) for knocking. * Removes the experimental configuration flag.
2021-06-15Fix 'ip_range_whitelist' not working for federation servers (#10115)Michael Kutzner3-13/+19
Add 'federation_ip_range_whitelist'. This allows backwards-compatibility, If 'federation_ip_range_blacklist' is set. Otherwise 'ip_range_whitelist' will be used for federation servers. Signed-off-by: Michael Kutzner 1mikure@gmail.com
2021-06-14Refactor `EventPersistenceQueue` (#10145)Richard van der Hoff2-77/+89
some cleanup, pulled out of #10134.
2021-06-14Extend `ResponseCache` to pass a context object into the callback (#10157)Richard van der Hoff5-37/+146
This is the first of two PRs which seek to address #8518. This first PR lays the groundwork by extending ResponseCache; a second PR (#10158) will update the SyncHandler to actually use it, and fix the bug. The idea here is that we allow the callback given to ResponseCache.wrap to decide whether its result should be cached or not. We do that by (optionally) passing a ResponseCacheContext into it, which it can modify.
2021-06-11Notes on boolean columns in database schemas (#10164)Richard van der Hoff2-0/+43
2021-06-11Fixup changelog v1.36.0rc2Erik Johnston1-1/+1
2021-06-11 1.36.0rc2Erik Johnston5-4/+12
2021-06-11Only send a presence state to a destination once (#10165)Erik Johnston2-13/+13
It turns out that we were sending the same presence state to a remote potentially multiple times.
2021-06-11Fix sending presence over federation when using workers (#10163)Erik Johnston2-6/+20
When using a federation sender we'd send out all local presence updates over federation even when they shouldn't be. Fixes #10153.
2021-06-11Fix bug when running presence off master (#10149)Erik Johnston3-1/+17
Hopefully fixes #10027.
2021-06-11Only send a presence state to a destination once (#10165)Erik Johnston2-13/+13
It turns out that we were sending the same presence state to a remote potentially multiple times.
2021-06-11Support for database schema version ranges (#9933)Richard van der Hoff7-77/+206
This is essentially an implementation of the proposal made at https://hackmd.io/@richvdh/BJYXQMQHO, though the details have ended up looking slightly different.
2021-06-11Use the matching complement branch when running tests in CI. (#10160)Patrick Cloke2-5/+24
This implements similar behavior to sytest where a matching branch is used, if one exists. This is useful when needing to modify both application code and tests at the same time. The following rules are used to find a matching complement branch: 1. Search for the branch name of the pull request. (E.g. feature/foo.) 2. Search for the base branch of the pull request. (E.g. develop or release-vX.Y.) 3. Search for the reference branch of the commit. (E.g. master or release-vX.Y.) 4. Fallback to 'master', the default complement branch name.
2021-06-11Fix sending presence over federation when using workers (#10163)Erik Johnston2-6/+20
When using a federation sender we'd send out all local presence updates over federation even when they shouldn't be. Fixes #10153.
2021-06-11Clean up a broken import in admin_cmd.py (#10154)Andrew Morgan2-2/+1
2021-06-11Fix bug when running presence off master (#10149)Erik Johnston3-1/+17
Hopefully fixes #10027.
2021-06-11Add metrics to track how often events are `soft_failed` (#10156)Eric Eastwood2-0/+8
Spawned from missing messages we were seeing on `matrix.org` from a federated Gtiter bridged room, https://gitlab.com/gitterHQ/webapp/-/issues/2770. The underlying issue in Synapse is tracked by https://github.com/matrix-org/synapse/issues/10066 where the message and join event race and the message is `soft_failed` before the `join` event reaches the remote federated server. Less soft_failed events = better and usually this should only trigger for events where people are doing bad things and trying to fuzz and fake everything.
2021-06-11Document how to see logger output when running the twisted tests (#10148)Eric Eastwood3-13/+26
2021-06-10Mention that you need to configure max upload size in reverse proxy as well ↵Aaron Raimist3-0/+9
(#10122) Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-06-09Update Complement run with Synapse-supported MSC-related build tags (#10155)Andrew Morgan2-1/+2
This PR updates the build tags that we perform Complement runs with to match our [buildkite pipeline](https://github.com/matrix-org/pipelines/blob/618b3e90bcae8efd1a71502ae95b7913e6e24665/synapse/pipeline.yml#L570), as well as adding `msc2403` (as it will be required once #9359 is merged). Build tags are what we use to determine which tests to run in Complement (really it determines which test files are compiled into the final binary). I haven't put in a comment about updating the buildkite side here, as we've decided to migrate fully to GitHub Actions anyhow.
2021-06-09Integrate knock rooms with the public rooms directory (#9359)Andrew Morgan3-5/+11
This PR implements the ["Changes regarding the Public Rooms Directory"](https://github.com/Sorunome/matrix-doc/blob/soru/knock/proposals/2403-knock.md#changes-regarding-the-public-rooms-directory) section of knocking MSC2403. Specifically, it: * Allows rooms with `join_rule` "knock" to be returned by the query behind the public rooms directory * Adds the field `join_rule` to each room entry returned by a public rooms directory query, so clients can know whether to attempt a join or knock on a room Based on https://github.com/matrix-org/synapse/issues/6739. Complement tests for this change: https://github.com/matrix-org/complement/pull/72
2021-06-09Implement knock feature (#6739)Sorunome29-118/+1613
This PR aims to implement the knock feature as proposed in https://github.com/matrix-org/matrix-doc/pull/2403 Signed-off-by: Sorunome mail@sorunome.de Signed-off-by: Andrew Morgan andrewm@element.io
2021-06-09Limit the number of in-flight /keys/query requests from a single device. ↵Patrick Cloke4-173/+196
(#10144)
2021-06-09Clean up the interface for injecting opentracing over HTTP (#10143)Richard van der Hoff4-92/+26
* Remove unused helper functions * Clean up the interface for injecting opentracing over HTTP * changelog
2021-06-08Add type hints to the federation server transport. (#10080)Patrick Cloke5-75/+194
2021-06-08Make changelog lines consistent v1.36.0rc1Andrew Morgan1-1/+1
2021-06-08fix typo in changelogAndrew Morgan1-1/+1
2021-06-081.36.0rc1Andrew Morgan46-45/+69
2021-06-08Fix logging context when opening new DB connection (#10141)Erik Johnston2-3/+10
Fixes #10140
2021-06-08Correct type hints for parse_string(s)_from_args. (#10137)Patrick Cloke8-83/+132
2021-06-08Name release branches just after major.minor (#10013)Dan Callahan3-5/+6
With the prior format, 1.33.0 / 1.33.1 / 1.33.2 got separate branches: release-v1.33.0 release-v1.33.1 release-v1.33.2 Under the new model, all three would share a common branch: release-v1.33 As before, RCs and actual releases exist as tags on these branches. This better reflects our support model, e.g., that the "1.33" series had a formal release followed by two patches / updates. Signed-off-by: Dan Callahan <danc@element.io>
2021-06-08When joining a remote room limit the number of events we concurrently check ↵Erik Johnston5-256/+202
signatures/hashes for (#10117) If we do hundreds of thousands at once the memory overhead can easily reach 500+ MB.
2021-06-08Handle /backfill returning no events (#10133)Erik Johnston2-13/+26
Fixes #10123
2021-06-07More database opentracing (#10136)Richard van der Hoff2-2/+6
Add a couple of extra logs/spans, to give a bit of a better idea.
2021-06-07opentracing: use a consistent name for background processes (#10135)Richard van der Hoff3-2/+5
... otherwise we tend to get a namespace clash between the bg process and the functions that it calls.
2021-06-07Make link in docs use HTTPS (#10130)Rohan Sharma2-1/+2
Fixes #10121 Signed-off-by: Rohan Sharma <rhnsharma5113@gmail.com>
2021-06-07Fix broken link to README at root of repo (#10132)Chris Castle2-1/+2
Signed-off-by: Chris Castle chris@crc.io
2021-06-07Always update AS last_pos, even on no events (#10107)14mRh4X0r3-17/+15
Fixes #1834. `get_new_events_for_appservice` internally calls `get_events_as_list`, which will filter out any rejected events. If all returned events are filtered out, `_notify_interested_services` will return without updating the last handled stream position. If there are 100 consecutive such events, processing will halt altogether. Breaking the loop is now done by checking whether we're up-to-date with `current_max` in the loop condition, instead of relying on an empty `events` list. Signed-off-by: Willem Mulder <14mRh4X0r@gmail.com>
2021-06-07Add missing type hints to the admin API servlets (#10105)Dirk Klimpel6-40/+48
2021-06-07Delete completes to-device messages earlier in /sync (#10124)Richard van der Hoff2-10/+12
I hope this will improve https://github.com/matrix-org/synapse/issues/9564.
2021-06-04Don't try and backfill the same room in parallel. (#10116)Erik Johnston2-0/+9
If backfilling is slow then the client may time out and retry, causing Synapse to start a new `/backfill` before the existing backfill has finished, duplicating work.
2021-06-04Limit number of events in a replication request (#10118)Erik Johnston2-2/+4
Fixes #9956.
2021-06-04Enable Prometheus metrics for the jaeger client library (#10112)Richard van der Hoff3-1/+5
2021-06-03Compile and render Synapse's docs into a browsable, mobile-friendly and ↵Andrew Morgan35-54/+978
searchable website (#10086)
2021-06-03Add OpenTracing for database activity. (#10113)Richard van der Hoff3-33/+60
This adds quite a lot of OpenTracing decoration for database activity. Specifically it adds tracing at four different levels: * emit a span for each "interaction" - ie, the top level database function that we tend to call "transaction", but isn't really, because it can end up as multiple transactions. * emit a span while we hold a database connection open * emit a span for each database transaction - actual actual transaction. * emit a span for each database query. I'm aware this might be quite a lot of overhead, but even just running it on a local Synapse it looks really interesting, and I hope the overhead can be offset just by turning down the sampling frequency and finding other ways of tracing requests of interest (eg, the `force_tracing_for_users` setting).
2021-06-03Improve opentracing annotations for Notifier (#10111)Richard van der Hoff2-33/+34
The existing tracing reports an error each time there is a timeout, which isn't really representative. Additionally, we log things about the way `wait_for_events` works (eg, the result of the callback) to the *parent* span, which is confusing.
2021-06-03Convert admin api docs to markdown (#10089)Andrew Morgan9-1132/+1160
So that they render nicely in mdbook (see #10086), and so that we no longer have a mix of structured text languages in our documentation (excluding files outside of `docs/`).
2021-06-03r0.6.1 support: /rooms/:roomId/aliases endpoint (#9224)Travis Ralston3-3/+3
[MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432) added this endpoint originally but it has since been included in the spec for nearly a year. This is progress towards https://github.com/matrix-org/synapse/issues/8334
2021-06-03Clarify changelog. v1.35.1 release-v1.35Patrick Cloke1-1/+1
2021-06-031.35.1Patrick Cloke4-2/+16
2021-06-03Do not show invite-only rooms in spaces summary (unless joined/invited). ↵Patrick Cloke2-10/+10
(#10109)
2021-06-02Add new admin APIs to remove media by media ID from quarantine. (#10044)Dirk Klim