diff --git a/src/common/core/blacklist/jobs/blacklist-download.py b/src/common/core/blacklist/jobs/blacklist-download.py index b7460e6f1..87e207bcf 100755 --- a/src/common/core/blacklist/jobs/blacklist-download.py +++ b/src/common/core/blacklist/jobs/blacklist-download.py @@ -80,6 +80,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) # Create directories if they don't exist diff --git a/src/common/core/bunkernet/jobs/bunkernet-data.py b/src/common/core/bunkernet/jobs/bunkernet-data.py index 3b2632a24..6039ced12 100755 --- a/src/common/core/bunkernet/jobs/bunkernet-data.py +++ b/src/common/core/bunkernet/jobs/bunkernet-data.py @@ -60,6 +60,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) bunkernet_id = get_file_in_db("instance.id", db) if bunkernet_id: diff --git a/src/common/core/bunkernet/jobs/bunkernet-register.py b/src/common/core/bunkernet/jobs/bunkernet-register.py index 63a2fa2ad..5898bff0d 100755 --- a/src/common/core/bunkernet/jobs/bunkernet-register.py +++ b/src/common/core/bunkernet/jobs/bunkernet-register.py @@ -61,6 +61,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) bunkernet_id = get_file_in_db("instance.id", db) if bunkernet_id: diff --git a/src/common/core/customcert/jobs/custom-cert.py b/src/common/core/customcert/jobs/custom-cert.py index a9bd48daf..c90fc52f6 100644 --- a/src/common/core/customcert/jobs/custom-cert.py +++ b/src/common/core/customcert/jobs/custom-cert.py @@ -111,6 +111,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) cert_path = getenv("CUSTOM_SSL_CERT", "") @@ -142,6 +143,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) cert_path = getenv(f"{first_server}_CUSTOM_SSL_CERT", "") diff --git a/src/common/core/greylist/jobs/greylist-download.py b/src/common/core/greylist/jobs/greylist-download.py index 205306b26..b04a5ec13 100755 --- a/src/common/core/greylist/jobs/greylist-download.py +++ b/src/common/core/greylist/jobs/greylist-download.py @@ -80,6 +80,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) # Create directories if they don't exist diff --git a/src/common/core/jobs/jobs/download-plugins.py b/src/common/core/jobs/jobs/download-plugins.py index e155cb50b..c74bdbb16 100644 --- a/src/common/core/jobs/jobs/download-plugins.py +++ b/src/common/core/jobs/jobs/download-plugins.py @@ -177,6 +177,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI"), + pool=False ) lock = Lock() diff --git a/src/common/core/jobs/jobs/mmdb-asn.py b/src/common/core/jobs/jobs/mmdb-asn.py index 48ac63990..3e71c1132 100755 --- a/src/common/core/jobs/jobs/mmdb-asn.py +++ b/src/common/core/jobs/jobs/mmdb-asn.py @@ -71,6 +71,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) if dl_mmdb: diff --git a/src/common/core/jobs/jobs/mmdb-country.py b/src/common/core/jobs/jobs/mmdb-country.py index e97bcf871..42db76a40 100755 --- a/src/common/core/jobs/jobs/mmdb-country.py +++ b/src/common/core/jobs/jobs/mmdb-country.py @@ -71,6 +71,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) if dl_mmdb: diff --git a/src/common/core/letsencrypt/jobs/certbot-auth.py b/src/common/core/letsencrypt/jobs/certbot-auth.py index 61da4842e..a707a3e46 100755 --- a/src/common/core/letsencrypt/jobs/certbot-auth.py +++ b/src/common/core/letsencrypt/jobs/certbot-auth.py @@ -52,6 +52,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) lock = Lock() diff --git a/src/common/core/letsencrypt/jobs/certbot-cleanup.py b/src/common/core/letsencrypt/jobs/certbot-cleanup.py index c41ea6733..fc020260a 100755 --- a/src/common/core/letsencrypt/jobs/certbot-cleanup.py +++ b/src/common/core/letsencrypt/jobs/certbot-cleanup.py @@ -51,6 +51,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) lock = Lock() with lock: diff --git a/src/common/core/letsencrypt/jobs/certbot-deploy.py b/src/common/core/letsencrypt/jobs/certbot-deploy.py index f9bbf48d6..1bd83d9db 100755 --- a/src/common/core/letsencrypt/jobs/certbot-deploy.py +++ b/src/common/core/letsencrypt/jobs/certbot-deploy.py @@ -67,6 +67,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) lock = Lock() diff --git a/src/common/core/letsencrypt/jobs/certbot-new.py b/src/common/core/letsencrypt/jobs/certbot-new.py index e38328387..72bbec2b8 100755 --- a/src/common/core/letsencrypt/jobs/certbot-new.py +++ b/src/common/core/letsencrypt/jobs/certbot-new.py @@ -99,6 +99,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) tgz = get_file_in_db("folder.tgz", db, job_name="certbot-renew") diff --git a/src/common/core/letsencrypt/jobs/certbot-renew.py b/src/common/core/letsencrypt/jobs/certbot-renew.py index 29baff26f..970186a16 100755 --- a/src/common/core/letsencrypt/jobs/certbot-renew.py +++ b/src/common/core/letsencrypt/jobs/certbot-renew.py @@ -91,6 +91,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) tgz = get_file_in_db("folder.tgz", db) diff --git a/src/common/core/misc/jobs/default-server-cert.py b/src/common/core/misc/jobs/default-server-cert.py index 1bcbae0d4..e941e00b5 100644 --- a/src/common/core/misc/jobs/default-server-cert.py +++ b/src/common/core/misc/jobs/default-server-cert.py @@ -102,6 +102,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) cached, err = set_file_in_db( diff --git a/src/common/core/realip/jobs/realip-download.py b/src/common/core/realip/jobs/realip-download.py index 1cb234c13..1cb79620f 100755 --- a/src/common/core/realip/jobs/realip-download.py +++ b/src/common/core/realip/jobs/realip-download.py @@ -76,6 +76,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) # Don't go further if the cache is fresh diff --git a/src/common/core/selfsigned/jobs/self-signed.py b/src/common/core/selfsigned/jobs/self-signed.py index ea1b0fb41..c6c306926 100755 --- a/src/common/core/selfsigned/jobs/self-signed.py +++ b/src/common/core/selfsigned/jobs/self-signed.py @@ -134,6 +134,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) ret, ret_status = generate_cert( @@ -155,6 +156,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) first_server = getenv("SERVER_NAME", "").split(" ")[0] diff --git a/src/common/core/whitelist/jobs/whitelist-download.py b/src/common/core/whitelist/jobs/whitelist-download.py index 78068387b..114510d8d 100755 --- a/src/common/core/whitelist/jobs/whitelist-download.py +++ b/src/common/core/whitelist/jobs/whitelist-download.py @@ -80,6 +80,7 @@ try: db = Database( logger, sqlalchemy_string=getenv("DATABASE_URI", None), + pool=False ) # Create directories if they don't exist diff --git a/src/common/db/Database.py b/src/common/db/Database.py index 646f4f6c4..65c69a89e 100644 --- a/src/common/db/Database.py +++ b/src/common/db/Database.py @@ -50,6 +50,7 @@ from sqlalchemy.exc import ( SQLAlchemyError, ) from sqlalchemy.orm import scoped_session, sessionmaker +from sqlalchemy.pool import NullPool install_as_MySQLdb() @@ -61,6 +62,7 @@ class Database: sqlalchemy_string: Optional[str] = None, *, ui: bool = False, + pool: bool = True ) -> None: """Initialize the database""" self.__logger = logger @@ -92,6 +94,7 @@ class Database: self.__sql_engine = create_engine( sqlalchemy_string, future=True, + poolclass=None if pool else NullPool, pool_pre_ping=True ) except ArgumentError: @@ -136,6 +139,7 @@ class Database: self.__sql_engine = create_engine( sqlalchemy_string, future=True, + poolclass=None if pool else NullPool, pool_pre_ping=True ) if "Unknown table" in str(e): diff --git a/src/common/gen/save_config.py b/src/common/gen/save_config.py index 71a0f572b..eba9d0849 100644 --- a/src/common/gen/save_config.py +++ b/src/common/gen/save_config.py @@ -64,6 +64,7 @@ def get_instance_configs_and_apis(instance: Any, db, _type="Docker"): db = Database( logger, sqlalchemy_string=splitted[1], + pool=False ) elif splitted[0] == "API_HTTP_PORT": api_http_port = splitted[1] @@ -164,7 +165,7 @@ if __name__ == "__main__": external_plugins = args.plugins if not Path(sep, "usr", "sbin", "nginx").exists() and args.method == "ui": - db = Database(logger) + db = Database(logger, pool=False) external_plugins = [] for plugin in db.get_plugins(): external_plugins.append(plugin) @@ -224,7 +225,7 @@ if __name__ == "__main__": f"Found custom conf env var {'for service ' + custom_conf[0] if custom_conf[0] else 'without service'} with type {custom_conf[1]} and name {custom_conf[2]}" ) - db = Database(logger, config_files.get("DATABASE_URI", None)) + db = Database(logger, config_files.get("DATABASE_URI", None), pool=False) else: docker_client = DockerClient( base_url=getenv("DOCKER_HOST", "unix:///var/run/docker.sock") @@ -269,6 +270,7 @@ if __name__ == "__main__": db = Database( logger, sqlalchemy_string=splitted[1], + pool=False ) elif splitted[0] == "API_HTTP_PORT": api_http_port = splitted[1] @@ -283,7 +285,7 @@ if __name__ == "__main__": ) if not db: - db = Database(logger) + db = Database(logger, pool=False) # Compute the config if not config_files: