mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-11-04 10:11:05 +01:00 
			
		
		
		
	Merge pull request #2830 from matrix-org/rav/factor_out_get_conn
Factor out get_db_conn to HomeServer base class
This commit is contained in:
		
						commit
						4b0f06e99c
					
				@ -49,19 +49,6 @@ class AppserviceSlaveStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AppserviceServer(HomeServer):
 | 
					class AppserviceServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = AppserviceSlaveStore(self.get_db_conn(), self)
 | 
					        self.datastore = AppserviceSlaveStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -64,19 +64,6 @@ class ClientReaderSlavedStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientReaderServer(HomeServer):
 | 
					class ClientReaderServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = ClientReaderSlavedStore(self.get_db_conn(), self)
 | 
					        self.datastore = ClientReaderSlavedStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -58,19 +58,6 @@ class FederationReaderSlavedStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FederationReaderServer(HomeServer):
 | 
					class FederationReaderServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = FederationReaderSlavedStore(self.get_db_conn(), self)
 | 
					        self.datastore = FederationReaderSlavedStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -76,19 +76,6 @@ class FederationSenderSlaveStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FederationSenderServer(HomeServer):
 | 
					class FederationSenderServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = FederationSenderSlaveStore(self.get_db_conn(), self)
 | 
					        self.datastore = FederationSenderSlaveStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -118,19 +118,6 @@ class FrontendProxySlavedStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FrontendProxyServer(HomeServer):
 | 
					class FrontendProxyServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = FrontendProxySlavedStore(self.get_db_conn(), self)
 | 
					        self.datastore = FrontendProxySlavedStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -266,19 +266,6 @@ class SynapseHomeServer(HomeServer):
 | 
				
			|||||||
        except IncorrectDatabaseSetup as e:
 | 
					        except IncorrectDatabaseSetup as e:
 | 
				
			||||||
            quit_with_error(e.message)
 | 
					            quit_with_error(e.message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(config_options):
 | 
					def setup(config_options):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
				
			|||||||
@ -60,19 +60,6 @@ class MediaRepositorySlavedStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MediaRepositoryServer(HomeServer):
 | 
					class MediaRepositoryServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = MediaRepositorySlavedStore(self.get_db_conn(), self)
 | 
					        self.datastore = MediaRepositorySlavedStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -81,19 +81,6 @@ class PusherSlaveStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PusherServer(HomeServer):
 | 
					class PusherServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = PusherSlaveStore(self.get_db_conn(), self)
 | 
					        self.datastore = PusherSlaveStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -246,19 +246,6 @@ class SynchrotronApplicationService(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SynchrotronServer(HomeServer):
 | 
					class SynchrotronServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = SynchrotronSlavedStore(self.get_db_conn(), self)
 | 
					        self.datastore = SynchrotronSlavedStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -92,19 +92,6 @@ class UserDirectorySlaveStore(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserDirectoryServer(HomeServer):
 | 
					class UserDirectoryServer(HomeServer):
 | 
				
			||||||
    def get_db_conn(self, run_new_connection=True):
 | 
					 | 
				
			||||||
        # 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 setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
        logger.info("Setting up.")
 | 
					        logger.info("Setting up.")
 | 
				
			||||||
        self.datastore = UserDirectorySlaveStore(self.get_db_conn(), self)
 | 
					        self.datastore = UserDirectorySlaveStore(self.get_db_conn(), self)
 | 
				
			||||||
 | 
				
			|||||||
@ -307,6 +307,23 @@ class HomeServer(object):
 | 
				
			|||||||
            **self.db_config.get("args", {})
 | 
					            **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):
 | 
					    def build_media_repository_resource(self):
 | 
				
			||||||
        # build the media repo resource. This indirects through the HomeServer
 | 
					        # build the media repo resource. This indirects through the HomeServer
 | 
				
			||||||
        # to ensure that we only have a single instance of
 | 
					        # to ensure that we only have a single instance of
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user