From ea5fd7cea4390f03ae8995c428597e7e52dd446a Mon Sep 17 00:00:00 2001 From: Filipp Ozinov Date: Mon, 2 Dec 2024 22:51:12 +0400 Subject: [PATCH 1/2] Close not used mysql connection --- mysql_ch_replicator/db_optimizer.py | 1 + mysql_ch_replicator/mysql_api.py | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql_ch_replicator/db_optimizer.py b/mysql_ch_replicator/db_optimizer.py index 41aea3f..9703e52 100644 --- a/mysql_ch_replicator/db_optimizer.py +++ b/mysql_ch_replicator/db_optimizer.py @@ -97,6 +97,7 @@ def run(self): try: while not killer.kill_now: db_to_optimize = self.select_db_to_optimize() + self.mysql_api.close() if db_to_optimize is None: time.sleep(min(120, self.config.optimize_interval)) continue diff --git a/mysql_ch_replicator/mysql_api.py b/mysql_ch_replicator/mysql_api.py index 255a3b7..c9b033b 100644 --- a/mysql_ch_replicator/mysql_api.py +++ b/mysql_ch_replicator/mysql_api.py @@ -16,6 +16,7 @@ def __init__(self, database: str, mysql_settings: MysqlSettings): def close(self): self.db.close() + self.last_connect_time = 0 def reconnect_if_required(self, force=False): curr_time = time.time() From ff7f18b973085633207698508761319adb125646 Mon Sep 17 00:00:00 2001 From: Filipp Ozinov Date: Mon, 2 Dec 2024 23:01:24 +0400 Subject: [PATCH 2/2] Fixed tests --- mysql_ch_replicator/db_optimizer.py | 1 + mysql_ch_replicator/mysql_api.py | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql_ch_replicator/db_optimizer.py b/mysql_ch_replicator/db_optimizer.py index 9703e52..80a4782 100644 --- a/mysql_ch_replicator/db_optimizer.py +++ b/mysql_ch_replicator/db_optimizer.py @@ -79,6 +79,7 @@ def optimize_table(self, db_name, table_name): def optimize_database(self, db_name): self.mysql_api.set_database(db_name) tables = self.mysql_api.get_tables() + self.mysql_api.close() tables = [table for table in tables if self.config.is_table_matches(table)] self.clickhouse_api.execute_command(f'USE {db_name}') diff --git a/mysql_ch_replicator/mysql_api.py b/mysql_ch_replicator/mysql_api.py index c9b033b..8480933 100644 --- a/mysql_ch_replicator/mysql_api.py +++ b/mysql_ch_replicator/mysql_api.py @@ -57,6 +57,7 @@ def execute(self, command, commit=False, args=None): self.db.commit() def set_database(self, database): + self.reconnect_if_required() self.database = database self.cursor = self.db.cursor() self.cursor.execute(f'USE {self.database}')