This commit is contained in:
Erik Johnston 2019-12-04 14:00:29 +00:00
parent 756d4942f5
commit 8863624f78
3 changed files with 16 additions and 5 deletions

View File

@ -17,10 +17,10 @@
"""
The storage layer is split up into multiple parts to allow Synapse to run
against different configurations of databases (e.g. single or multiple
databases). The `data_stores` are classes that talk directly to a single
database and have associated schemas, background updates, etc. On top of those
there are (or will be) classes that provide high level interfaces that combine
calls to multiple `data_stores`.
databases). The `Database` class represents a single physical database. The
`data_stores` are classes that talk directly to a `Database` instance and have
associated schemas, background updates, etc. On top of those there are classes
that provide high level interfaces that combine calls to multiple `data_stores`.
There are also schemas that get applied to every database, regardless of the
data stores associated with them (e.g. the schema version tables), which are

View File

@ -31,11 +31,17 @@ logger = logging.getLogger(__name__)
class SQLBaseStore(object):
"""Base class for data stores that holds helper functions.
Note that multiple instances of this class will exist as there will be one
per data store (and not one per physical database).
"""
def __init__(self, db_conn, hs):
self.hs = hs
self._clock = hs.get_clock()
self.database_engine = hs.database_engine
self.db = Database(hs)
self.db = Database(hs) # In future this will be passed in
self.rand = random.SystemRandom()
def _invalidate_state_caches(self, room_id, members_changed):

View File

@ -211,6 +211,11 @@ class PerformanceCounters(object):
class Database(object):
"""Wraps a single physical database and connection pool.
A single database may be used by multiple data stores.
"""
_TXN_ID = 0
def __init__(self, hs):