Bläddra i källkod

Allow /createRoom to be run on workers (#10564)

Fixes https://github.com/matrix-org/synapse/issues/7867
tags/v1.41.0rc1
Andrew Morgan 2 år sedan
committed by GitHub
förälder
incheckning
703e3a9e85
Ingen känd nyckel hittad för denna signaturen i databasen GPG-nyckel ID: 4AEE18F83AFDEB23
4 ändrade filer med 37 tillägg och 35 borttagningar
  1. +1
    -0
      changelog.d/10564.feature
  2. +1
    -0
      docs/workers.md
  3. +1
    -1
      synapse/rest/client/room.py
  4. +34
    -34
      synapse/storage/databases/main/room.py

+ 1
- 0
changelog.d/10564.feature Visa fil

@@ -0,0 +1 @@
Add support for routing `/createRoom` to workers.

+ 1
- 0
docs/workers.md Visa fil

@@ -214,6 +214,7 @@ expressions:
^/_matrix/federation/v1/send/

# Client API requests
^/_matrix/client/(api/v1|r0|unstable)/createRoom$
^/_matrix/client/(api/v1|r0|unstable)/publicRooms$
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/joined_members$
^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/context/.*$


+ 1
- 1
synapse/rest/client/room.py Visa fil

@@ -1141,10 +1141,10 @@ def register_servlets(hs: "HomeServer", http_server, is_worker=False):
JoinedRoomsRestServlet(hs).register(http_server)
RoomAliasListServlet(hs).register(http_server)
SearchRestServlet(hs).register(http_server)
RoomCreateRestServlet(hs).register(http_server)

# Some servlets only get registered for the main process.
if not is_worker:
RoomCreateRestServlet(hs).register(http_server)
RoomForgetRestServlet(hs).register(http_server)




+ 34
- 34
synapse/storage/databases/main/room.py Visa fil

@@ -73,6 +73,40 @@ class RoomWorkerStore(SQLBaseStore):

self.config = hs.config

async def store_room(
self,
room_id: str,
room_creator_user_id: str,
is_public: bool,
room_version: RoomVersion,
):
"""Stores a room.

Args:
room_id: The desired room ID, can be None.
room_creator_user_id: The user ID of the room creator.
is_public: True to indicate that this room should appear in
public room lists.
room_version: The version of the room
Raises:
StoreError if the room could not be stored.
"""
try:
await self.db_pool.simple_insert(
"rooms",
{
"room_id": room_id,
"creator": room_creator_user_id,
"is_public": is_public,
"room_version": room_version.identifier,
"has_auth_chain_index": True,
},
desc="store_room",
)
except Exception as e:
logger.error("store_room with room_id=%s failed: %s", room_id, e)
raise StoreError(500, "Problem creating room.")

async def get_room(self, room_id: str) -> dict:
"""Retrieve a room.

@@ -1342,40 +1376,6 @@ class RoomStore(RoomBackgroundUpdateStore, RoomWorkerStore, SearchStore):
lock=False,
)

async def store_room(
self,
room_id: str,
room_creator_user_id: str,
is_public: bool,
room_version: RoomVersion,
):
"""Stores a room.

Args:
room_id: The desired room ID, can be None.
room_creator_user_id: The user ID of the room creator.
is_public: True to indicate that this room should appear in
public room lists.
room_version: The version of the room
Raises:
StoreError if the room could not be stored.
"""
try:
await self.db_pool.simple_insert(
"rooms",
{
"room_id": room_id,
"creator": room_creator_user_id,
"is_public": is_public,
"room_version": room_version.identifier,
"has_auth_chain_index": True,
},
desc="store_room",
)
except Exception as e:
logger.error("store_room with room_id=%s failed: %s", room_id, e)
raise StoreError(500, "Problem creating room.")

async def maybe_store_room_on_outlier_membership(
self, room_id: str, room_version: RoomVersion
):


Laddar…
Avbryt
Spara