This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Add rooms.room_version
column
#6729
Merged
Merged
Changes from 1 commit
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
7b6be4b
Have `make_membership_event` return room version
erikjohnston f01d0d5
Check room_version from make_join matches returned state.
erikjohnston a42b675
Use RoomVersion consistently throughout room upgrade
erikjohnston 963237f
Add rooms.room_version column and populate it in store_room
erikjohnston e7618af
Read room version from rooms table.
erikjohnston 0bb025a
Newsfile
erikjohnston 892bab9
Add background update
erikjohnston 70be703
Correctly raise exception if unknown room version
erikjohnston ced73b3
Add comment
erikjohnston 53a75fa
Use explicit is not None
erikjohnston e825fd0
Add comments about paranoia
erikjohnston 1474a49
Correctly handle and document UnsupportedRoomVersionError
erikjohnston 126599e
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/ro…
erikjohnston File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -60,24 +60,31 @@ class StateGroupWorkerStore(EventsWorkerStore, SQLBaseStore): | |
def __init__(self, database: Database, db_conn, hs): | ||
super(StateGroupWorkerStore, self).__init__(database, db_conn, hs) | ||
|
||
@defer.inlineCallbacks | ||
def get_room_version(self, room_id): | ||
@cached(max_entries=10000) | ||
async def get_room_version(self, room_id: str) -> str: | ||
"""Get the room_version of a given room | ||
|
||
Args: | ||
room_id (str) | ||
|
||
Returns: | ||
Deferred[str] | ||
|
||
Raises: | ||
NotFoundError if the room is unknown | ||
NotFoundError: if the room is unknown | ||
""" | ||
# for now we do this by looking at the create event. We may want to cache this | ||
# more intelligently in future. | ||
|
||
# First we try looking up room version from the database, but for old | ||
# rooms we might not have added the room version to it yet so we fall | ||
# back to previous behaviour and look in current state events. | ||
|
||
version = await self.db.simple_select_one_onecol( | ||
table="rooms", | ||
keyvalues={"room_id": room_id}, | ||
retcol="room_version", | ||
desc="get_room_version", | ||
allow_none=True, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this shouldn't be needed? the row should be there whether or not the version is updated? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not 10000000% comfortable asserting that we definitely do have a row in |
||
) | ||
|
||
if version: | ||
erikjohnston marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return version | ||
|
||
# Retrieve the room's create event | ||
create_event = yield self.get_create_event_for_room(room_id) | ||
create_event = await self.get_create_event_for_room(room_id) | ||
return create_event.content.get("room_version", "1") | ||
|
||
@defer.inlineCallbacks | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ohhh did I miss the memo where async functions can be cached?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, yes, turns out that somewhere in the depths the cache descriptor calls
run_in_background
on the cahced function