Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit f4960db

Browse files
authored
Merge branch 'develop' into ben-fix-messages-from-start
2 parents 50d8efc + 334a832 commit f4960db

28 files changed

+404
-399
lines changed

changelog.d/14375.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Cleanup old worker datastore classes. Contributed by Nick @ Beeper (@fizzadar).

changelog.d/14405.feature

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add an [Admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html) endpoint for user lookup based on third-party ID (3PID). Contributed by @ashfame.

changelog.d/14409.bugfix

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix PostgreSQL sometimes using table scans for queries against the `event_search` table, taking a long time and a large amount of IO.

changelog.d/14410.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove unreachable code.

changelog.d/14414.doc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Edit sample Nginx reverse proxy configuration to use HTTP/1.1. Contributed by Brad Jones.

docs/admin_api/user_admin_api.md

+39
Original file line numberDiff line numberDiff line change
@@ -1197,3 +1197,42 @@ Returns a `404` HTTP status code if no user was found, with a response body like
11971197
```
11981198

11991199
_Added in Synapse 1.68.0._
1200+
1201+
1202+
### Find a user based on their Third Party ID (ThreePID or 3PID)
1203+
1204+
The API is:
1205+
1206+
```
1207+
GET /_synapse/admin/v1/threepid/$medium/users/$address
1208+
```
1209+
1210+
When a user matched the given address for the given medium, an HTTP code `200` with a response body like the following is returned:
1211+
1212+
```json
1213+
{
1214+
"user_id": "@hello:example.org"
1215+
}
1216+
```
1217+
1218+
**Parameters**
1219+
1220+
The following parameters should be set in the URL:
1221+
1222+
- `medium` - Kind of third-party ID, either `email` or `msisdn`.
1223+
- `address` - Value of the third-party ID.
1224+
1225+
The `address` may have characters that are not URL-safe, so it is advised to URL-encode those parameters.
1226+
1227+
**Errors**
1228+
1229+
Returns a `404` HTTP status code if no user was found, with a response body like this:
1230+
1231+
```json
1232+
{
1233+
"errcode":"M_NOT_FOUND",
1234+
"error":"User not found"
1235+
}
1236+
```
1237+
1238+
_Added in Synapse 1.72.0._

docs/reverse_proxy.md

+3
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ server {
7979
# Nginx by default only allows file uploads up to 1M in size
8080
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
8181
client_max_body_size 50M;
82+
83+
# Synapse responses may be chunked, which is an HTTP/1.1 feature.
84+
proxy_http_version 1.1;
8285
}
8386
}
8487
```

synapse/app/admin_cmd.py

+27-9
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@
2828
from synapse.config.logger import setup_logging
2929
from synapse.events import EventBase
3030
from synapse.handlers.admin import ExfiltrationWriter
31-
from synapse.replication.slave.storage.devices import SlavedDeviceStore
32-
from synapse.replication.slave.storage.events import SlavedEventStore
33-
from synapse.replication.slave.storage.filtering import SlavedFilteringStore
34-
from synapse.replication.slave.storage.push_rule import SlavedPushRuleStore
3531
from synapse.server import HomeServer
3632
from synapse.storage.database import DatabasePool, LoggingDatabaseConnection
3733
from synapse.storage.databases.main.account_data import AccountDataWorkerStore
@@ -40,10 +36,24 @@
4036
ApplicationServiceWorkerStore,
4137
)
4238
from synapse.storage.databases.main.deviceinbox import DeviceInboxWorkerStore
39+
from synapse.storage.databases.main.devices import DeviceWorkerStore
40+
from synapse.storage.databases.main.event_federation import EventFederationWorkerStore
41+
from synapse.storage.databases.main.event_push_actions import (
42+
EventPushActionsWorkerStore,
43+
)
44+
from synapse.storage.databases.main.events_worker import EventsWorkerStore
45+
from synapse.storage.databases.main.filtering import FilteringWorkerStore
46+
from synapse.storage.databases.main.push_rule import PushRulesWorkerStore
4347
from synapse.storage.databases.main.receipts import ReceiptsWorkerStore
4448
from synapse.storage.databases.main.registration import RegistrationWorkerStore
49+
from synapse.storage.databases.main.relations import RelationsWorkerStore
4550
from synapse.storage.databases.main.room import RoomWorkerStore
51+
from synapse.storage.databases.main.roommember import RoomMemberWorkerStore
52+
from synapse.storage.databases.main.signatures import SignatureWorkerStore
53+
from synapse.storage.databases.main.state import StateGroupWorkerStore
54+
from synapse.storage.databases.main.stream import StreamWorkerStore
4655
from synapse.storage.databases.main.tags import TagsWorkerStore
56+
from synapse.storage.databases.main.user_erasure_store import UserErasureWorkerStore
4757
from synapse.types import StateMap
4858
from synapse.util import SYNAPSE_VERSION
4959
from synapse.util.logcontext import LoggingContext
@@ -52,17 +62,25 @@
5262

5363

5464
class AdminCmdSlavedStore(
55-
SlavedFilteringStore,
56-
SlavedPushRuleStore,
57-
SlavedEventStore,
58-
SlavedDeviceStore,
65+
FilteringWorkerStore,
66+
DeviceWorkerStore,
5967
TagsWorkerStore,
6068
DeviceInboxWorkerStore,
6169
AccountDataWorkerStore,
70+
PushRulesWorkerStore,
6271
ApplicationServiceTransactionWorkerStore,
6372
ApplicationServiceWorkerStore,
64-
RegistrationWorkerStore,
73+
RoomMemberWorkerStore,
74+
RelationsWorkerStore,
75+
EventFederationWorkerStore,
76+
EventPushActionsWorkerStore,
77+
StateGroupWorkerStore,
78+
SignatureWorkerStore,
79+
UserErasureWorkerStore,
6580
ReceiptsWorkerStore,
81+
StreamWorkerStore,
82+
EventsWorkerStore,
83+
RegistrationWorkerStore,
6684
RoomWorkerStore,
6785
):
6886
def __init__(

synapse/app/generic_worker.py

+32-12
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@
4848
from synapse.logging.context import LoggingContext
4949
from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy
5050
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
51-
from synapse.replication.slave.storage.devices import SlavedDeviceStore
52-
from synapse.replication.slave.storage.events import SlavedEventStore
53-
from synapse.replication.slave.storage.filtering import SlavedFilteringStore
54-
from synapse.replication.slave.storage.keys import SlavedKeyStore
55-
from synapse.replication.slave.storage.push_rule import SlavedPushRuleStore
56-
from synapse.replication.slave.storage.pushers import SlavedPusherStore
5751
from synapse.rest.admin import register_servlets_for_media_repo
5852
from synapse.rest.client import (
5953
account_data,
@@ -101,8 +95,16 @@
10195
from synapse.storage.databases.main.censor_events import CensorEventsStore
10296
from synapse.storage.databases.main.client_ips import ClientIpWorkerStore
10397
from synapse.storage.databases.main.deviceinbox import DeviceInboxWorkerStore
98+
from synapse.storage.databases.main.devices import DeviceWorkerStore
10499
from synapse.storage.databases.main.directory import DirectoryWorkerStore
105100
from synapse.storage.databases.main.e2e_room_keys import EndToEndRoomKeyStore
101+
from synapse.storage.databases.main.event_federation import EventFederationWorkerStore
102+
from synapse.storage.databases.main.event_push_actions import (
103+
EventPushActionsWorkerStore,
104+
)
105+
from synapse.storage.databases.main.events_worker import EventsWorkerStore
106+
from synapse.storage.databases.main.filtering import FilteringWorkerStore
107+
from synapse.storage.databases.main.keys import KeyStore
106108
from synapse.storage.databases.main.lock import LockStore
107109
from synapse.storage.databases.main.media_repository import MediaRepositoryStore
108110
from synapse.storage.databases.main.metrics import ServerMetricsStore
@@ -111,17 +113,25 @@
111113
)
112114
from synapse.storage.databases.main.presence import PresenceStore
113115
from synapse.storage.databases.main.profile import ProfileWorkerStore
116+
from synapse.storage.databases.main.push_rule import PushRulesWorkerStore
117+
from synapse.storage.databases.main.pusher import PusherWorkerStore
114118
from synapse.storage.databases.main.receipts import ReceiptsWorkerStore
115119
from synapse.storage.databases.main.registration import RegistrationWorkerStore
120+
from synapse.storage.databases.main.relations import RelationsWorkerStore
116121
from synapse.storage.databases.main.room import RoomWorkerStore
117122
from synapse.storage.databases.main.room_batch import RoomBatchStore
123+
from synapse.storage.databases.main.roommember import RoomMemberWorkerStore
118124
from synapse.storage.databases.main.search import SearchStore
119125
from synapse.storage.databases.main.session import SessionStore
126+
from synapse.storage.databases.main.signatures import SignatureWorkerStore
127+
from synapse.storage.databases.main.state import StateGroupWorkerStore
120128
from synapse.storage.databases.main.stats import StatsStore
129+
from synapse.storage.databases.main.stream import StreamWorkerStore
121130
from synapse.storage.databases.main.tags import TagsWorkerStore
122131
from synapse.storage.databases.main.transactions import TransactionWorkerStore
123132
from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore
124133
from synapse.storage.databases.main.user_directory import UserDirectoryStore
134+
from synapse.storage.databases.main.user_erasure_store import UserErasureWorkerStore
125135
from synapse.types import JsonDict
126136
from synapse.util import SYNAPSE_VERSION
127137
from synapse.util.httpresourcetree import create_resource_tree
@@ -232,26 +242,36 @@ class GenericWorkerSlavedStore(
232242
EndToEndRoomKeyStore,
233243
PresenceStore,
234244
DeviceInboxWorkerStore,
235-
SlavedDeviceStore,
236-
SlavedPushRuleStore,
245+
DeviceWorkerStore,
237246
TagsWorkerStore,
238247
AccountDataWorkerStore,
239-
SlavedPusherStore,
240248
CensorEventsStore,
241249
ClientIpWorkerStore,
242-
SlavedEventStore,
243-
SlavedKeyStore,
250+
# KeyStore isn't really safe to use from a worker, but for now we do so and hope that
251+
# the races it creates aren't too bad.
252+
KeyStore,
244253
RoomWorkerStore,
245254
RoomBatchStore,
246255
DirectoryWorkerStore,
256+
PushRulesWorkerStore,
247257
ApplicationServiceTransactionWorkerStore,
248258
ApplicationServiceWorkerStore,
249259
ProfileWorkerStore,
250-
SlavedFilteringStore,
260+
FilteringWorkerStore,
251261
MonthlyActiveUsersWorkerStore,
252262
MediaRepositoryStore,
253263
ServerMetricsStore,
264+
PusherWorkerStore,
265+
RoomMemberWorkerStore,
266+
RelationsWorkerStore,
267+
EventFederationWorkerStore,
268+
EventPushActionsWorkerStore,
269+
StateGroupWorkerStore,
270+
SignatureWorkerStore,
271+
UserErasureWorkerStore,
254272
ReceiptsWorkerStore,
273+
StreamWorkerStore,
274+
EventsWorkerStore,
255275
RegistrationWorkerStore,
256276
SearchStore,
257277
TransactionWorkerStore,

synapse/replication/slave/storage/devices.py

-79
This file was deleted.

synapse/replication/slave/storage/events.py

-79
This file was deleted.

0 commit comments

Comments
 (0)