summary refs log tree commit diff
path: root/synapse/storage/databases/main/devices.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Add an admin endpoint to allow authorizing server to signal token ↵Shay2023-08-221-0/+9
| | | | revocations (#16125)
* Support MSC3814: Dehydrated Devices Part 2 (#16010)Shay2023-08-081-2/+49
|
* devices: use combined ANY clause for faster cleanup (#15861)pacien2023-07-031-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | Old device entries for the same user were being removed in individual SQL commands, making the batch take way longer than necessary. This combines the commands into a single one with a IN/ANY clause. Example of log entry before the change, regularly observed with "log_min_duration_statement = 10000" in PostgreSQL's config: LOG: duration: 42538.282 ms statement: DELETE FROM device_lists_stream WHERE user_id = '@someone' AND device_id = 'someid1' AND stream_id < 123456789 ; DELETE FROM device_lists_stream WHERE user_id = '@someone' AND device_id = 'someid2' AND stream_id < 123456789 ; [repeated for each device ID of that user, potentially a lot...] With the patch applied on my instance for the past couple of days, I no longer notice overly long statements of that particular kind. Signed-off-by: pacien <pacien.trangirard@pacien.net>
* Cache requests for user's devices from federation (#15675)Erik Johnston2023-06-011-0/+4
| | | | This should mitigate the issue where lots of different servers requests the same user's devices all at once.
* Update code to refer to "workers". (#15606)Patrick Cloke2023-05-161-2/+0
| | | | A bunch of comments and variables are out of date and use obsolete terms.
* Revert pruning of old devices (#15360)Erik Johnston2023-03-311-82/+1
| | | | | | | | | * Revert "Fix registering a device on an account with lots of devices (#15348)" This reverts commit f0d8f66eaaacfa75bed65bc5d0c602fbc5339c85. * Revert "Delete stale non-e2e devices for users, take 3 (#15183)" This reverts commit 78cdb72cd6b0e007c314d9fed9f629dfc5b937a6.
* Fix registering a device on an account with lots of devices (#15348)Erik Johnston2023-03-291-3/+6
| | | Fixes up #15183
* Delete stale non-e2e devices for users, take 3 (#15183)Erik Johnston2023-03-291-1/+79
| | | | | This should help reduce the number of devices e.g. simple bots the repeatedly login rack up. We only delete non-e2e devices as they should be safe to delete, whereas if we delete e2e devices for a user we may accidentally break their ability to receive e2e keys for a message.
* Combine AbstractStreamIdTracker and AbstractStreamIdGenerator. (#15192)Patrick Cloke2023-03-031-5/+2
| | | | | AbstractStreamIdTracker (now) has only a single sub-class: AbstractStreamIdGenerator, combine them to simplify some code and remove any direct references to AbstractStreamIdTracker.
* Bump black from 22.12.0 to 23.1.0 (#15103)dependabot[bot]2023-02-221-2/+2
|
* Return read-only collections from `@cached` methods (#13755)Sean Quah2023-02-101-6/+11
| | | | | | | | | | | | | It's important that collections returned from `@cached` methods are not modified, otherwise future retrievals from the cache will return the modified collection. This applies to the return values from `@cached` methods and the values inside the dictionaries returned by `@cachedList` methods. It's not necessary for the dictionaries returned by `@cachedList` methods themselves to be read-only. Signed-off-by: Sean Quah <seanq@matrix.org> Co-authored-by: David Robertson <davidr@element.io>
* Refactor get_user_devices_from_cache to avoid mutating cached values. (#15040)Patrick Cloke2023-02-101-14/+17
| | | | | | | | The previous version of the code could mutate a cached value, but only if the input requested all devices of a user *and* a specific device. To avoid this nonsensical situation we no longer fetch a specific device ID if all of a user's devices are returned.
* Fix exception on start up about device lists (#15041)Erik Johnston2023-02-101-0/+1
| | | Fixes #15010.
* Fix initialization of `_device_list_id_gen` (#14914)Sean Quah2023-01-261-0/+1
| | | | | | | | | | | | | | | On startup, the `_device_list_id_gen` stream id generator is initialized using the maximum stream id seen in a list of tables. When we started populating the `device_list_remote_pending` table in #13913, we forgot to add it to the aforementioned list of tables, so the stream id generator can hand out old stream ids after a restart. The end result is that Synapse can fail to handle device list update EDUs after a restart when a partial state join is in progress. Add the `device_list_remote_pending` table to the list of tables to consider when initializing the `_device_list_id_gen` stream id generator. Signed-off-by: Sean Quah <seanq@matrix.org>
* Always notify replication when a stream advances (#14877)Erik Johnston2023-01-201-0/+1
| | | This ensures that all other workers are told about stream updates in a timely manner, without having to remember to manually poke replication.
* Merge device list replication streams (#14833)Erik Johnston2023-01-171-6/+7
|
* Batch up replication requests to request the resyncing of remote users's ↵reivilibre2023-01-101-8/+22
| | | | devices. (#14716)
* Update all stream IDs after processing replication rows (#14723)Nick Mills-Barrett2023-01-041-2/+9
| | | | | | | | | | | | | | This creates a new store method, `process_replication_position` that is called after `process_replication_rows`. By moving stream ID advances here this guarantees any relevant cache invalidations will have been applied before the stream is advanced. This avoids race conditions where Python switches between threads mid way through processing the `process_replication_rows` method where stream IDs may be advanced before caches are invalidated due to class resolution ordering. See this comment/issue for further discussion: https://github.com/matrix-org/synapse/issues/14158#issuecomment-1344048703
* Revert the deletion of stale devices due to performance issues. (#14662)reivilibre2022-12-121-83/+1
|
* Limit the number of devices we delete at once (#14649)Erik Johnston2022-12-091-3/+8
|
* Delete stale non-e2e devices for users, take 2 (#14595)Erik Johnston2022-12-091-1/+78
| | | | | This should help reduce the number of devices e.g. simple bots the repeatedly login rack up. We only delete non-e2e devices as they should be safe to delete, whereas if we delete e2e devices for a user we may accidentally break their ability to receive e2e keys for a message.
* Better return type for `get_all_entities_changed` (#14604)Erik Johnston2022-12-051-40/+71
| | | | Help callers from using the return value incorrectly by ensuring that callers explicitly check if there was a cache hit or not.
* Properly handle unknown results for the stream change cache. (#14592)Patrick Cloke2022-12-021-14/+19
| | | | | | StreamChangeCache.get_all_changed_entities can return None to signify it does not have information at the given stream position. Two callers (related to device lists and presence) were treating this response the same as an empty list (i.e. there being no updates).
* Revert "POC delete stale non-e2e devices for users (#14038)" (#14582)David Robertson2022-11-291-67/+1
|
* Fix `UndefinedColumn: column "key_json" does not exist` errors when handling ↵David Robertson2022-11-291-0/+1
| | | | users with more than 50 non-E2E devices (#14580)
* POC delete stale non-e2e devices for users (#14038)Erik Johnston2022-11-291-1/+66
| | | | | | | | This should help reduce the number of devices e.g. simple bots the repeatedly login rack up. We only delete non-e2e devices as they should be safe to delete, whereas if we delete e2e devices for a user we may accidentally break their ability to receive e2e keys for a message. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
* Remove option to skip locking of tables during emulated upserts (#14469)Sean Quah2022-11-281-9/+0
| | | | | | | | | | | | | | | | | | To perform an emulated upsert into a table safely, we must either: * lock the table, * be the only writer upserting into the table * or rely on another unique index being present. When the 2nd or 3rd cases were applicable, we previously avoided locking the table as an optimization. However, as seen in #14406, it is easy to slip up when adding new schema deltas and corrupt the database. The only time we lock when performing emulated upserts is while waiting for background updates on postgres. On sqlite, we do no locking at all. Let's remove the option to skip locking tables, so that we don't shoot ourselves in the foot again. Signed-off-by: Sean Quah <seanq@matrix.org>
* Add another index to `device_lists_changes_in_room` (#14534)Erik Johnston2022-11-231-0/+7
| | | | This helps avoid reading unnecessarily large amounts of data from the table when querying with a set of room IDs.
* Track unconverted device list outbound pokes using a position instead (#14516)Sean Quah2022-11-221-38/+69
| | | | | | | | | | | | | | | | | | | | | When a local device list change is added to `device_lists_changes_in_room`, the `converted_to_destinations` flag is set to `FALSE` and the `_handle_new_device_update_async` background process is started. This background process looks for unconverted rows in `device_lists_changes_in_room`, copies them to `device_lists_outbound_pokes` and updates the flag. To update the `converted_to_destinations` flag, the database performs a `DELETE` and `INSERT` internally, which fragments the table. To avoid this, track unconverted rows using a `(stream ID, room ID)` position instead of the flag. From now on, the `converted_to_destinations` column indicates rows that need converting to outbound pokes, but does not indicate whether the conversion has already taken place. Closes #14037. Signed-off-by: Sean Quah <seanq@matrix.org>
* Reintroduce #14376, with bugfix for monoliths (#14468)David Robertson2022-11-161-23/+13
| | | | | | | | | | | | | | | | | | | | | | * Add tests for StreamIdGenerator * Drive-by: annotate all defs * Revert "Revert "Remove slaved id tracker (#14376)" (#14463)" This reverts commit d63814fd736fed5d3d45ff3af5e6d3bfae50c439, which in turn reverted 36097e88c4da51fce6556a58c49bd675f4cf20ab. This restores the latter. * Fix StreamIdGenerator not handling unpersisted IDs Spotted by @erikjohnston. Closes #14456. * Changelog Co-authored-by: Nick Mills-Barrett <nick@fizzadar.com> Co-authored-by: Erik Johnston <erik@matrix.org>
* Remove redundant types from comments. (#14412)Patrick Cloke2022-11-161-1/+1
| | | | | | | Remove type hints from comments which have been added as Python type hints. This helps avoid drift between comments and reality, as well as removing redundant information. Also adds some missing type hints which were simple to fill in.
* Revert "Remove slaved id tracker (#14376)" (#14463)Erik Johnston2022-11-161-13/+23
| | | This reverts commit 36097e88c4da51fce6556a58c49bd675f4cf20ab.
* Remove slaved id tracker (#14376)Nick Mills-Barrett2022-11-141-23/+13
| | | | | This matches the multi instance writer ID generator class which can both handle advancing the current token over replication and by calling the database.
* Merge/remove `Slaved*` stores into `WorkerStores` (#14375)Nick Mills-Barrett2022-11-111-10/+71
|
* Add debugging to help diagnose lost device-list-update (#14268)Richard van der Hoff2022-10-241-17/+37
|
* Fix hiding devices names over federation (#10015)Aaron Raimist2022-10-181-2/+8
| | | | | | And don't include blank opentracing stuff in device list updates. Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Handle local device list updates during partial join (#13934)Erik Johnston2022-09-281-13/+42
|
* Handle remote device list updates during partial join (#13913)Erik Johnston2022-09-281-0/+55
| | | | | | | c.f. #12993 (comment), point 3 This stores all device list updates that we receive while partial joins are ongoing, and processes them once we have the full state. Note: We don't actually process the device lists in the same ways as if we weren't partially joined. Instead of updating the device list remote cache, we simply notify local users that a change in the remote user's devices has happened. I think this is safe as if the local user requests the keys for the remote user and we don't have them we'll simply fetch them as normal.
* Handle the case of remote users leaving a partial join room for device lists ↵Erik Johnston2022-09-271-14/+50
| | | | (#13885)
* Cancel the processing of key query requests when they time out. (#13680)reivilibre2022-09-071-0/+4
|
* Add missing types to opentracing. (#13345)Patrick Cloke2022-07-211-2/+2
| | | After this change `synapse.logging` is fully typed.
* Add type annotations to `trace` decorator. (#13328)Patrick Cloke2022-07-191-1/+1
| | | | Functions that are decorated with `trace` are now properly typed and the type hints for them are fixed.
* Fix type error that made its way onto develop (#13098)reivilibre2022-06-171-2/+2
| | | | | | | * Fix type error introduced accidentally by #13045 * Newsfile Signed-off-by: Olivier Wilkinson (reivilibre) <oliverw@matrix.org>
* Use new `device_list_changes_in_room` table when getting device list changes ↵Erik Johnston2022-06-171-0/+59
| | | | (#13045)
* Type annotations in `synapse.databases.main.devices` (#13025)David Robertson2022-06-151-18/+33
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Replace noop background updates with DELETE. (#12954)Patrick Cloke2022-06-131-9/+0
| | | | Removes the `register_noop_background_update` and deletes the background updates directly in a delta file.
* Consolidate the logic of delete_device/delete_devices. (#12970)Patrick Cloke2022-06-071-10/+0
| | | | | | | | By always using delete_devices and sometimes passing a list with a single device ID. Previously these methods had gotten out of sync with each other and it seems there's little benefit to the single-device variant.
* Add a background job to automatically delete stale devices (#12855)Brendan Abolivier2022-05-271-0/+39
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Additional constants for EDU types. (#12884)Patrick Cloke2022-05-271-2/+3
| | | Instead of hard-coding strings in many places.
* Add some type hints to datastore (#12485)Dirk Klimpel2022-04-271-18/+33
|
* Mark remote device list updates as already handled (#12557)Erik Johnston2022-04-261-1/+2
|
* Fix sending opentracing contexts to remote servers (#12555)Erik Johnston2022-04-261-1/+11
|
* Only send out device list updates for our own users (#12465)Erik Johnston2022-04-141-1/+3
| | | Broke in #12365
* Process device list updates asynchronously (#12365)Erik Johnston2022-04-121-52/+9
|
* Prefill more stream change caches. (#12372)Erik Johnston2022-04-051-0/+50
|
* Track device list updates per room. (#12321)Erik Johnston2022-04-041-25/+192
| | | | | | | | | | | | | | This is a first step in dealing with #7721. The idea is basically that rather than calculating the full set of users a device list update needs to be sent to up front, we instead simply record the rooms the user was in at the time of the change. This will allow a few things: 1. we can defer calculating the set of remote servers that need to be poked about the change; and 2. during `/sync` and `/keys/changes` we can avoid also avoid calculating users who share rooms with other users, and instead just look at the rooms that have changed. However, care needs to be taken to correctly handle server downgrades. As such this PR writes to both `device_lists_changes_in_room` and the `device_lists_outbound_pokes` table synchronously. In a future release we can then bump the database schema compat version to `69` and then we can assume that the new `device_lists_changes_in_room` exists and is handled. There is a temporary option to disable writing to `device_lists_outbound_pokes` synchronously, allowing us to test the new code path does work (and by implication upgrading to a future release and downgrading to this one will work correctly). Note: Ideally we'd do the calculation of room to servers on a worker (e.g. the background worker), but currently only master can write to the `device_list_outbound_pokes` table.
* Send device list updates to application services (MSC3202) - part 1 (#11881)Andrew Morgan2022-03-301-13/+35
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Optimise calculating device_list changes in `/sync`. (#11974)Erik Johnston2022-02-151-0/+10
| | | | | | 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.
* Add a docstring to `add_device_change_to_streams` and fix some nearby types ↵Andrew Morgan2022-02-081-6/+16
| | | | (#11912)
* Debug for device lists updates (#11760)David Robertson2022-01-201-0/+18
| | | | | | | | | | | | | | | | | | Debug for #8631. I'm having a hard time tracking down what's going wrong in that issue. In the reported example, I could see server A sending federation traffic to server B and all was well. Yet B reports out-of-sync device updates from A. I couldn't see what was _in_ the events being sent from A to B. So I have added some crude logging to track - when we have updates to send to a remote HS - the edus we actually accumulate to send - when a federation transaction includes a device list update edu - when such an EDU is received This is a bit of a sledgehammer.
* Merge branch 'release-v1.50' into developOlivier Wilkinson (reivilibre)2022-01-141-17/+85
|\
| * Fix a bug introduced in Synapse v1.50.0rc1 whereby outbound federation could ↵reivilibre2022-01-131-16/+78
| | | | | | | | | | fail because too many EDUs were produced for device updates. (#11730) Co-authored-by: David Robertson <davidr@element.io>
| * Fix a bug introduced in Synapse v1.0.0 whereby device list updates would not ↵reivilibre2022-01-121-1/+7
| | | | | | | | | | be sent to remote homeservers if there were too many to send at once. (#11729) Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
* | Replace uses of simple_insert_many with simple_insert_many_values. (#11742)Patrick Cloke2022-01-131-15/+22
| | | | | | | | This should be (slightly) more efficient and it is simpler to have a single method for inserting multiple values.
* | Cache empty responses from `/user/devices` (#11587)David Robertson2022-01-051-2/+6
|/ | | If we've never made a request to a remote homeserver, we should cache the response---even if the response is "this user has no devices".
* Add experimental support for MSC3202: allowing application services to ↵reivilibre2021-12-151-0/+20
| | | | masquerade as specific devices. (#11538)
* Type hint the constructors of the data store classes (#11555)Sean Quah2021-12-131-3/+19
|
* Make `get_device` return None if the device doesn't exist rather than ↵reivilibre2021-12-131-4/+6
| | | | | raising an exception. (#11565) Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
* Send and handle cross-signing messages using the stable prefix. (#10520)Hubert Chathi2021-12-081-1/+3
|
* Save the OIDC session ID (sid) with the device on login (#11482)Quentin Gliech2021-12-061-1/+49
| | | As a step towards allowing back-channel logout for OIDC.
* Fix providing a `RoomStreamToken` instance to ↵Andrew Morgan2021-11-021-2/+2
| | | | | `_notify_app_services_ephemeral` (#11137) Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Delete messages from `device_inbox` table when deleting device (#10969)Dirk Klimpel2021-10-271-14/+21
| | | Fixes: #9346
* Add type hints for most `HomeServer` parameters (#11095)Sean Quah2021-10-221-4/+17
|
* Use direct references for some configuration variables (#10798)Patrick Cloke2021-09-131-1/+1
| | | | Instead of proxying through the magic getter of the RootConfig object. This should be more performant (and is more explicit).
* Replace `or_ignore` in `simple_insert` with `simple_upsert` (#10442)Erik Johnston2021-07-221-3/+6
| | | | | | | | Now that we have `simple_upsert` that should be used in preference to trying to insert and looking for an exception. The main benefit is that we ERROR message don't get written to postgres logs. We also have tidy up the return value on `simple_upsert`, rather than having a tri-state of inserted/not-inserted/unknown.
* Combine `LruCache.invalidate` and `invalidate_many` (#9973)Richard van der Hoff2021-05-271-1/+1
| | | | | | | | | | * Make `invalidate` and `invalidate_many` do the same thing ... so that we can do either over the invalidation replication stream, and also because they always confused me a bit. * Kill off `invalidate_many` * changelog
* Remove `keylen` from `LruCache`. (#9993)Richard van der Hoff2021-05-241-1/+1
| | | | | | | `keylen` seems to be a thing that is frequently incorrectly set, and we don't really need it. The only time it was used was to figure out if we had removed a subtree in `del_multi`, which we can do better by changing `TreeCache.pop` to return a different type (`TreeCacheNode`). Commits should be independently reviewable.
* Minor `@cachedList` enhancements (#9975)Richard van der Hoff2021-05-141-1/+1
| | | | | | - use a tuple rather than a list for the iterable that is passed into the wrapped function, for performance - test that we can pass an iterable and that keys are correctly deduped.
* Clear the resync bit after resyncing device lists (#9867)Richard van der Hoff2021-04-221-10/+9
| | | Fixes #9866.
* Remove `synapse.types.Collection` (#9856)Richard van der Hoff2021-04-221-2/+2
| | | This is no longer required, since we have dropped support for Python 3.5.
* Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-141-1/+0
| | | | | | | Part of #9744 Removes all redundant `# -*- coding: utf-8 -*-` lines from files, as python 3 automatically reads source code as utf-8 now. `Signed-off-by: Jonathan de Jong <jonathan@automatia.nl>`
* remove unused param on `make_tuple_comparison_clause`Richard van der Hoff2021-04-081-1/+1
|
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-161-13/+25
| | | | | | | - Update black version to the latest - Run black auto formatting over the codebase - Run autoformatting according to [`docs/code_style.md `](https://github.com/matrix-org/synapse/blob/80d6dc9783aa80886a133756028984dbf8920168/docs/code_style.md) - Update `code_style.md` docs around installing black to use the correct version
* Use execute_batch in more places (#9188)Erik Johnston2021-01-211-2/+2
| | | | | * Use execute_batch in more places * Newsfile
* Add number of local devices to Room Details Admin API (#8886)Dirk Klimpel2020-12-111-0/+32
|
* Replace DeferredCache with LruCache where possible (#8563)Richard van der Hoff2020-10-191-4/+4
| | | Most of these uses don't need a full-blown DeferredCache; LruCache is lighter and more appropriate.
* move DeferredCache into its own moduleRichard van der Hoff2020-10-141-1/+2
|
* Rename Cache->DeferredCacheRichard van der Hoff2020-10-141-2/+2
|
* Move additional tasks to the background worker, part 3 (#8489)Patrick Cloke2020-10-091-95/+101
|
* Add typing information to the device handler. (#8407)Patrick Cloke2020-10-071-3/+3
|
* Add support for MSC2697: Dehydrated devices (#8380)Hubert Chathi2020-10-071-2/+76
| | | | This allows a user to store an offline device on the server and then restore it at a subsequent login.
* Use `async with` for ID gens (#8383)Erik Johnston2020-09-231-3/+3
| | | This will allow us to hit the DB after we've finished using the generated stream ID.
* Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-181-2/+2
| | | | | | | This converts calls like super(Foo, self) -> super(). Generated with: sed -i "" -Ee 's/super\([^\(]+\)/super()/g' **/*.py
* Add types to StreamToken and RoomStreamToken (#8279)Erik Johnston2020-09-081-4/+3
| | | The intention here is to change `StreamToken.room_key` to be a `RoomStreamToken` in a future PR, but that is a big enough change without this refactoring too.
* Add cross-signing sigs to the `keys` object (#8234)Richard van der Hoff2020-09-041-9/+3
| | | | | All the callers want this info in the same place, so let's reduce the duplication by doing it here.
* wrap `_get_e2e_device_keys_and_signatures_txn` in a non-txn method (#8231)Richard van der Hoff2020-09-031-3/+1
| | | | | We have three things which all call `_get_e2e_device_keys_and_signatures_txn` with their own `runInteraction`. Factor out the common code.
* Make _get_e2e_device_keys_and_signatures_txn return an attrs (#8224)Richard van der Hoff2020-09-021-4/+4
| | | | this makes it a bit clearer what's going on.
* Rename `_get_e2e_device_keys_txn` (#8222)Richard van der Hoff2020-09-011-2/+2
| | | | | ... to `_get_e2e_device_keys_and_signatures_txn`, to better reflect what it does.
* Convert additional databases to async/await (#8199)Patrick Cloke2020-09-011-20/+18
|
* Move and rename `get_devices_with_keys_by_user` (#8204)Richard van der Hoff2020-09-011-47/+5
| | | | | | | | | | | | | | | | | | * Move `get_devices_with_keys_by_user` to `EndToEndKeyWorkerStore` this seems a better fit for it. This commit simply moves the existing code: no other changes at all. * Rename `get_devices_with_keys_by_user` to better reflect what it does. * get_device_stream_token abstract method To avoid referencing fields which are declared in the derived classes, make `get_device_stream_token` abstract, and define that in the classes which define `_device_list_id_gen`.
* Only return devices with keys from `/federation/v1/user/devices/` (#8198)Richard van der Hoff2020-08-281-3/+1
| | | | | There's not much point in returning all the others, and some people have a silly number of devices.
* Convert calls of async database methods to async (#8166)Patrick Cloke2020-08-271-2/+2
|
* Convert simple_select_one and simple_select_one_onecol to async (#8162)Patrick Cloke2020-08-261-6/+8
|
* Make StreamIdGen `get_next` and `get_next_mult` async (#8161)Erik Johnston2020-08-251-3/+5
| | | | This is mainly so that `StreamIdGenerator` and `MultiWriterIdGenerator` will have the same interface, allowing them to be used interchangeably.
* Convert misc database code to async (#8087)Patrick Cloke2020-08-141-3/+2
|
* Convert devices database to async/await. (#8069)Patrick Cloke2020-08-121-153/+180
|
* Convert directory, e2e_room_keys, end_to_end_keys, monthly_active_users ↵Patrick Cloke2020-08-071-5/+7
| | | | database to async (#8042)
* Reduce unnecessary whitespace in JSON. (#7372)David Vo2020-08-071-6/+5
|
* Rename database classes to make some sense (#8033)Erik Johnston2020-08-051-0/+1311