diff options
author | Richard van der Hoff <github@rvanderhoff.org.uk> | 2018-01-27 17:56:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-27 17:56:25 +0100 |
commit | 4b0f06e99c00ea092046a591797de4b12a1314c3 (patch) | |
tree | f536d77545fbec5504f8c3b42e2627809bd50b7c /synapse/server.py | |
parent | Merge pull request #2827 from matrix-org/fix_server_500_on_public_rooms_call_... (diff) | |
parent | Factor out get_db_conn to HomeServer base class (diff) | |
download | synapse-4b0f06e99c00ea092046a591797de4b12a1314c3.tar.xz |
Merge pull request #2830 from matrix-org/rav/factor_out_get_conn
Factor out get_db_conn to HomeServer base class
Diffstat (limited to 'synapse/server.py')
-rw-r--r-- | synapse/server.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/synapse/server.py b/synapse/server.py index 99693071b6..ff8a8fbc46 100644 --- a/synapse/server.py +++ b/synapse/server.py @@ -307,6 +307,23 @@ class HomeServer(object): **self.db_config.get("args", {}) ) + def get_db_conn(self, run_new_connection=True): + """Makes a new connection to the database, skipping the db pool + + Returns: + Connection: a connection object implementing the PEP-249 spec + """ + # Any param beginning with cp_ is a parameter for adbapi, and should + # not be passed to the database engine. + db_params = { + k: v for k, v in self.db_config.get("args", {}).items() + if not k.startswith("cp_") + } + db_conn = self.database_engine.module.connect(**db_params) + if run_new_connection: + self.database_engine.on_new_connection(db_conn) + return db_conn + def build_media_repository_resource(self): # build the media repo resource. This indirects through the HomeServer # to ensure that we only have a single instance of |