synapse/changelog.d
Erik Johnston 52a50e8686
Use vector clocks for room stream tokens. (#8439)
Currently when using multiple event persisters we (in the worst case) don't tell clients about events until all event persisters have persisted new events after the original event. This is a suboptimal, especially if one of the event persisters goes down.

To handle this, we encode the position of each event persister in the room tokens so that we can send events to clients immediately. To reduce the size of the token we do two things:

1. We create a unique immutable persistent mapping between instance names and a generated small integer ID, which we can encode in the tokens instead of the instance name; and
2. We encode the "persisted upto position" of the room token and then only explicitly include instances that have positions strictly greater than that.

The new tokens look something like: `m3478~1.3488~2.3489`, where the first number is the min position, and the subsequent `-` separated pairs are the instance ID to positions map. (We use `.` and `~` as separators as they're URL safe and not already used by `StreamToken`).
2020-10-07 15:15:33 +01:00
..
.gitignore Correct attrs package name in requirements (#3492) 2018-07-07 10:46:59 +10:00
7658.feature Add config option for always using "userinfo endpoint" for OIDC (#7658) 2020-10-01 13:54:35 -04:00
8292.feature Allow ThirdPartyEventRules modules to manipulate public room state (#8292) 2020-10-05 14:57:46 +01:00
8312.feature Add support for MSC2732: olm fallback keys (#8312) 2020-10-06 13:26:29 -04:00
8369.feature Allow background tasks to be run on a separate worker. (#8369) 2020-10-02 08:23:15 -04:00
8380.feature Add support for MSC2697: Dehydrated devices (#8380) 2020-10-07 08:00:17 -04:00
8407.misc Add typing information to the device handler. (#8407) 2020-10-07 08:58:21 -04:00
8432.misc Enable mypy checking for unreachable code and fix instances. (#8432) 2020-10-01 08:09:18 -04:00
8433.misc Add unit test for event persister sharding (#8433) 2020-10-02 09:57:12 +01:00
8439.misc Use vector clocks for room stream tokens. (#8439) 2020-10-07 15:15:33 +01:00
8443.misc Include a public_baseurl in configs generated by the demo script. (#8443) 2020-10-02 07:24:07 -04:00
8448.misc Add logging on startup/shutdown (#8448) 2020-10-02 15:20:45 +01:00
8450.misc Speed up unit tests when using PostgreSQL (#8450) 2020-10-02 15:09:31 +01:00
8452.misc Remove stream ordering from Metadata dict (#8452) 2020-10-05 14:43:14 +01:00
8454.bugfix Do not assume that account data is of the correct form. (#8454) 2020-10-05 09:28:05 -04:00
8457.bugfix Ensure that event.redacts is the proper type before handling it (#8457) 2020-10-05 10:24:17 -04:00
8461.feature Update default room version to 6 (#8461) 2020-10-05 21:40:51 +01:00
8462.doc Update manhole documentation for async/await. (#8462) 2020-10-05 09:40:19 -04:00
8463.misc changelog 2020-10-05 19:04:13 +01:00
8464.misc Combine SpamCheckerApi with the more generic ModuleApi. (#8464) 2020-10-07 12:03:26 +01:00
8465.bugfix Don't bother responding to client requests that have already disconnected (#8465) 2020-10-06 10:03:39 +01:00
8467.feature Fix third-party event modules for check_visibility_can_be_modified check 2020-10-05 20:29:52 +01:00
8468.misc Additional tests for third-party event rules (#8468) 2020-10-06 16:31:31 +01:00
8474.misc unblacklist some tests (#8474) 2020-10-07 13:39:50 +01:00
8480.misc Remove docs/sphinx and related references (#8480) 2020-10-07 11:45:31 +01:00
8486.bugfix Fix returning incorrect prev_batch token in incremental sync (#8486) 2020-10-07 13:49:40 +01:00