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

Commit a7bdf98

Browse files
authored
Rename database classes to make some sense (#8033)
1 parent 0a86850 commit a7bdf98

File tree

337 files changed

+1408
-1323
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

337 files changed

+1408
-1323
lines changed

changelog.d/8033.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Rename storage layer objects to be more sensible.

docs/user_directory.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ who are present in a publicly viewable room present on the server.
77

88
The directory info is stored in various tables, which can (typically after
99
DB corruption) get stale or out of sync. If this happens, for now the
10-
solution to fix it is to execute the SQL [here](../synapse/storage/data_stores/main/schema/delta/53/user_dir_populate.sql)
10+
solution to fix it is to execute the SQL [here](../synapse/storage/databases/main/schema/delta/53/user_dir_populate.sql)
1111
and then restart synapse. This should then start a background task to
1212
flush the current tables and regenerate the directory.

scripts-dev/update_database

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class MockHomeserver(HomeServer):
4040
config.server_name, reactor=reactor, config=config, **kwargs
4141
)
4242

43-
self.version_string = "Synapse/"+get_version_string(synapse)
43+
self.version_string = "Synapse/" + get_version_string(synapse)
4444

4545

4646
if __name__ == "__main__":
@@ -86,7 +86,7 @@ if __name__ == "__main__":
8686
store = hs.get_datastore()
8787

8888
async def run_background_updates():
89-
await store.db.updates.run_background_updates(sleep=False)
89+
await store.db_pool.updates.run_background_updates(sleep=False)
9090
# Stop the reactor to exit the script once every background update is run.
9191
reactor.stop()
9292

scripts/synapse_port_db

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -35,31 +35,29 @@ from synapse.logging.context import (
3535
make_deferred_yieldable,
3636
run_in_background,
3737
)
38-
from synapse.storage.data_stores.main.client_ips import ClientIpBackgroundUpdateStore
39-
from synapse.storage.data_stores.main.deviceinbox import (
40-
DeviceInboxBackgroundUpdateStore,
41-
)
42-
from synapse.storage.data_stores.main.devices import DeviceBackgroundUpdateStore
43-
from synapse.storage.data_stores.main.events_bg_updates import (
38+
from synapse.storage.database import DatabasePool, make_conn
39+
from synapse.storage.databases.main.client_ips import ClientIpBackgroundUpdateStore
40+
from synapse.storage.databases.main.deviceinbox import DeviceInboxBackgroundUpdateStore
41+
from synapse.storage.databases.main.devices import DeviceBackgroundUpdateStore
42+
from synapse.storage.databases.main.events_bg_updates import (
4443
EventsBackgroundUpdatesStore,
4544
)
46-
from synapse.storage.data_stores.main.media_repository import (
45+
from synapse.storage.databases.main.media_repository import (
4746
MediaRepositoryBackgroundUpdateStore,
4847
)
49-
from synapse.storage.data_stores.main.registration import (
48+
from synapse.storage.databases.main.registration import (
5049
RegistrationBackgroundUpdateStore,
5150
find_max_generated_user_id_localpart,
5251
)
53-
from synapse.storage.data_stores.main.room import RoomBackgroundUpdateStore
54-
from synapse.storage.data_stores.main.roommember import RoomMemberBackgroundUpdateStore
55-
from synapse.storage.data_stores.main.search import SearchBackgroundUpdateStore
56-
from synapse.storage.data_stores.main.state import MainStateBackgroundUpdateStore
57-
from synapse.storage.data_stores.main.stats import StatsStore
58-
from synapse.storage.data_stores.main.user_directory import (
52+
from synapse.storage.databases.main.room import RoomBackgroundUpdateStore
53+
from synapse.storage.databases.main.roommember import RoomMemberBackgroundUpdateStore
54+
from synapse.storage.databases.main.search import SearchBackgroundUpdateStore
55+
from synapse.storage.databases.main.state import MainStateBackgroundUpdateStore
56+
from synapse.storage.databases.main.stats import StatsStore
57+
from synapse.storage.databases.main.user_directory import (
5958
UserDirectoryBackgroundUpdateStore,
6059
)
61-
from synapse.storage.data_stores.state.bg_updates import StateBackgroundUpdateStore
62-
from synapse.storage.database import Database, make_conn
60+
from synapse.storage.databases.state.bg_updates import StateBackgroundUpdateStore
6361
from synapse.storage.engines import create_engine
6462
from synapse.storage.prepare_database import prepare_database
6563
from synapse.util import Clock
@@ -175,14 +173,14 @@ class Store(
175173
StatsStore,
176174
):
177175
def execute(self, f, *args, **kwargs):
178-
return self.db.runInteraction(f.__name__, f, *args, **kwargs)
176+
return self.db_pool.runInteraction(f.__name__, f, *args, **kwargs)
179177

180178
def execute_sql(self, sql, *args):
181179
def r(txn):
182180
txn.execute(sql, args)
183181
return txn.fetchall()
184182

185-
return self.db.runInteraction("execute_sql", r)
183+
return self.db_pool.runInteraction("execute_sql", r)
186184

187185
def insert_many_txn(self, txn, table, headers, rows):
188186
sql = "INSERT INTO %s (%s) VALUES (%s)" % (
@@ -227,7 +225,7 @@ class Porter(object):
227225
async def setup_table(self, table):
228226
if table in APPEND_ONLY_TABLES:
229227
# It's safe to just carry on inserting.
230-
row = await self.postgres_store.db.simple_select_one(
228+
row = await self.postgres_store.db_pool.simple_select_one(
231229
table="port_from_sqlite3",
232230
keyvalues={"table_name": table},
233231
retcols=("forward_rowid", "backward_rowid"),
@@ -244,7 +242,7 @@ class Porter(object):
244242
) = await self._setup_sent_transactions()
245243
backward_chunk = 0
246244
else:
247-
await self.postgres_store.db.simple_insert(
245+
await self.postgres_store.db_pool.simple_insert(
248246
table="port_from_sqlite3",
249247
values={
250248
"table_name": table,
@@ -274,7 +272,7 @@ class Porter(object):
274272

275273
await self.postgres_store.execute(delete_all)
276274

277-
await self.postgres_store.db.simple_insert(
275+
await self.postgres_store.db_pool.simple_insert(
278276
table="port_from_sqlite3",
279277
values={"table_name": table, "forward_rowid": 1, "backward_rowid": 0},
280278
)
@@ -318,7 +316,7 @@ class Porter(object):
318316
if table == "user_directory_stream_pos":
319317
# We need to make sure there is a single row, `(X, null), as that is
320318
# what synapse expects to be there.
321-
await self.postgres_store.db.simple_insert(
319+
await self.postgres_store.db_pool.simple_insert(
322320
table=table, values={"stream_id": None}
323321
)
324322
self.progress.update(table, table_size) # Mark table as done
@@ -359,7 +357,7 @@ class Porter(object):
359357

360358
return headers, forward_rows, backward_rows
361359

362-
headers, frows, brows = await self.sqlite_store.db.runInteraction(
360+
headers, frows, brows = await self.sqlite_store.db_pool.runInteraction(
363361
"select", r
364362
)
365363

@@ -375,7 +373,7 @@ class Porter(object):
375373
def insert(txn):
376374
self.postgres_store.insert_many_txn(txn, table, headers[1:], rows)
377375

378-
self.postgres_store.db.simple_update_one_txn(
376+
self.postgres_store.db_pool.simple_update_one_txn(
379377
txn,
380378
table="port_from_sqlite3",
381379
keyvalues={"table_name": table},
@@ -413,7 +411,7 @@ class Porter(object):
413411

414412
return headers, rows
415413

416-
headers, rows = await self.sqlite_store.db.runInteraction("select", r)
414+
headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r)
417415

418416
if rows:
419417
forward_chunk = rows[-1][0] + 1
@@ -451,7 +449,7 @@ class Porter(object):
451449
],
452450
)
453451

454-
self.postgres_store.db.simple_update_one_txn(
452+
self.postgres_store.db_pool.simple_update_one_txn(
455453
txn,
456454
table="port_from_sqlite3",
457455
keyvalues={"table_name": "event_search"},
@@ -494,15 +492,15 @@ class Porter(object):
494492
db_conn, allow_outdated_version=allow_outdated_version
495493
)
496494
prepare_database(db_conn, engine, config=self.hs_config)
497-
store = Store(Database(hs, db_config, engine), db_conn, hs)
495+
store = Store(DatabasePool(hs, db_config, engine), db_conn, hs)
498496
db_conn.commit()
499497

500498
return store
501499

502500
async def run_background_updates_on_postgres(self):
503501
# Manually apply all background updates on the PostgreSQL database.
504502
postgres_ready = (
505-
await self.postgres_store.db.updates.has_completed_background_updates()
503+
await self.postgres_store.db_pool.updates.has_completed_background_updates()
506504
)
507505

508506
if not postgres_ready:
@@ -511,9 +509,9 @@ class Porter(object):
511509
self.progress.set_state("Running background updates on PostgreSQL")
512510

513511
while not postgres_ready:
514-
await self.postgres_store.db.updates.do_next_background_update(100)
512+
await self.postgres_store.db_pool.updates.do_next_background_update(100)
515513
postgres_ready = await (
516-
self.postgres_store.db.updates.has_completed_background_updates()
514+
self.postgres_store.db_pool.updates.has_completed_background_updates()
517515
)
518516

519517
async def run(self):
@@ -534,7 +532,7 @@ class Porter(object):
534532

535533
# Check if all background updates are done, abort if not.
536534
updates_complete = (
537-
await self.sqlite_store.db.updates.has_completed_background_updates()
535+
await self.sqlite_store.db_pool.updates.has_completed_background_updates()
538536
)
539537
if not updates_complete:
540538
end_error = (
@@ -576,22 +574,24 @@ class Porter(object):
576574
)
577575

578576
try:
579-
await self.postgres_store.db.runInteraction("alter_table", alter_table)
577+
await self.postgres_store.db_pool.runInteraction(
578+
"alter_table", alter_table
579+
)
580580
except Exception:
581581
# On Error Resume Next
582582
pass
583583

584-
await self.postgres_store.db.runInteraction(
584+
await self.postgres_store.db_pool.runInteraction(
585585
"create_port_table", create_port_table
586586
)
587587

588588
# Step 2. Get tables.
589589
self.progress.set_state("Fetching tables")
590-
sqlite_tables = await self.sqlite_store.db.simple_select_onecol(
590+
sqlite_tables = await self.sqlite_store.db_pool.simple_select_onecol(
591591
table="sqlite_master", keyvalues={"type": "table"}, retcol="name"
592592
)
593593

594-
postgres_tables = await self.postgres_store.db.simple_select_onecol(
594+
postgres_tables = await self.postgres_store.db_pool.simple_select_onecol(
595595
table="information_schema.tables",
596596
keyvalues={},
597597
retcol="distinct table_name",
@@ -692,7 +692,7 @@ class Porter(object):
692692

693693
return headers, [r for r in rows if r[ts_ind] < yesterday]
694694

695-
headers, rows = await self.sqlite_store.db.runInteraction("select", r)
695+
headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r)
696696

697697
rows = self._convert_rows("sent_transactions", headers, rows)
698698

@@ -725,7 +725,7 @@ class Porter(object):
725725
next_chunk = await self.sqlite_store.execute(get_start_id)
726726
next_chunk = max(max_inserted_rowid + 1, next_chunk)
727727

728-
await self.postgres_store.db.simple_insert(
728+
await self.postgres_store.db_pool.simple_insert(
729729
table="port_from_sqlite3",
730730
values={
731731
"table_name": "sent_transactions",
@@ -794,14 +794,14 @@ class Porter(object):
794794
next_id = curr_id + 1
795795
txn.execute("ALTER SEQUENCE state_group_id_seq RESTART WITH %s", (next_id,))
796796

797-
return self.postgres_store.db.runInteraction("setup_state_group_id_seq", r)
797+
return self.postgres_store.db_pool.runInteraction("setup_state_group_id_seq", r)
798798

799799
def _setup_user_id_seq(self):
800800
def r(txn):
801801
next_id = find_max_generated_user_id_localpart(txn) + 1
802802
txn.execute("ALTER SEQUENCE user_id_seq RESTART WITH %s", (next_id,))
803803

804-
return self.postgres_store.db.runInteraction("setup_user_id_seq", r)
804+
return self.postgres_store.db_pool.runInteraction("setup_user_id_seq", r)
805805

806806

807807
##############################################

synapse/app/_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ def handle_sighup(*args, **kwargs):
268268

269269
# It is now safe to start your Synapse.
270270
hs.start_listening(listeners)
271-
hs.get_datastore().db.start_profiling()
271+
hs.get_datastore().db_pool.start_profiling()
272272
hs.get_pusherpool().start()
273273

274274
setup_sentry(hs)

synapse/app/generic_worker.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,15 @@
125125
from synapse.rest.client.versions import VersionsRestServlet
126126
from synapse.rest.key.v2 import KeyApiV2Resource
127127
from synapse.server import HomeServer
128-
from synapse.storage.data_stores.main.censor_events import CensorEventsStore
129-
from synapse.storage.data_stores.main.media_repository import MediaRepositoryStore
130-
from synapse.storage.data_stores.main.monthly_active_users import (
128+
from synapse.storage.databases.main.censor_events import CensorEventsStore
129+
from synapse.storage.databases.main.media_repository import MediaRepositoryStore
130+
from synapse.storage.databases.main.monthly_active_users import (
131131
MonthlyActiveUsersWorkerStore,
132132
)
133-
from synapse.storage.data_stores.main.presence import UserPresenceState
134-
from synapse.storage.data_stores.main.search import SearchWorkerStore
135-
from synapse.storage.data_stores.main.ui_auth import UIAuthWorkerStore
136-
from synapse.storage.data_stores.main.user_directory import UserDirectoryStore
133+
from synapse.storage.databases.main.presence import UserPresenceState
134+
from synapse.storage.databases.main.search import SearchWorkerStore
135+
from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore
136+
from synapse.storage.databases.main.user_directory import UserDirectoryStore
137137
from synapse.types import ReadReceipt
138138
from synapse.util.async_helpers import Linearizer
139139
from synapse.util.httpresourcetree import create_resource_tree

synapse/app/homeserver.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ def start():
441441

442442
_base.start(hs, config.listeners)
443443

444-
hs.get_datastore().db.updates.start_doing_background_updates()
444+
hs.get_datastore().db_pool.updates.start_doing_background_updates()
445445
except Exception:
446446
# Print the exception and bail out.
447447
print("Error during startup:", file=sys.stderr)
@@ -551,8 +551,8 @@ async def phone_stats_home(hs, stats, stats_process=_stats_process):
551551
#
552552

553553
# This only reports info about the *main* database.
554-
stats["database_engine"] = hs.get_datastore().db.engine.module.__name__
555-
stats["database_server_version"] = hs.get_datastore().db.engine.server_version
554+
stats["database_engine"] = hs.get_datastore().db_pool.engine.module.__name__
555+
stats["database_server_version"] = hs.get_datastore().db_pool.engine.server_version
556556

557557
logger.info("Reporting stats to %s: %s" % (hs.config.report_stats_endpoint, stats))
558558
try:

synapse/config/database.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,10 @@ def __init__(self, name: str, db_config: dict):
100100

101101
self.name = name
102102
self.config = db_config
103-
self.data_stores = data_stores
103+
104+
# The `data_stores` config is actually talking about `databases` (we
105+
# changed the name).
106+
self.databases = data_stores
104107

105108

106109
class DatabaseConfig(Config):

synapse/events/snapshot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from synapse.types import StateMap
2424

2525
if TYPE_CHECKING:
26-
from synapse.storage.data_stores.main import DataStore
26+
from synapse.storage.databases.main import DataStore
2727

2828

2929
@attr.s(slots=True)

synapse/handlers/federation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
)
7272
from synapse.replication.http.membership import ReplicationUserJoinedLeftRoomRestServlet
7373
from synapse.state import StateResolutionStore, resolve_events_with_store
74-
from synapse.storage.data_stores.main.events_worker import EventRedactBehaviour
74+
from synapse.storage.databases.main.events_worker import EventRedactBehaviour
7575
from synapse.types import JsonDict, StateMap, UserID, get_domain_from_id
7676
from synapse.util.async_helpers import Linearizer, concurrently_execute
7777
from synapse.util.distributor import user_joined_room

0 commit comments

Comments
 (0)