From b7b84b643b29c793fa97f1bf3196347d2d7bc769 Mon Sep 17 00:00:00 2001 From: Luiggi Tenorio Date: Fri, 24 May 2024 13:27:27 +0200 Subject: [PATCH 1/2] prepare v4.0.0b8 --- CHANGELOG.md | 3 +++ autosubmit_api/__init__.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f51a45..29ce0f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # CHANGELOG +### Pre-release v4.0.0b8 - Release date: TBD + + ### Pre-release v4.0.0b7 - Release date: 2024-05-14 * Reduced writing time in status updater background task diff --git a/autosubmit_api/__init__.py b/autosubmit_api/__init__.py index 2eeabb7..a539f1b 100644 --- a/autosubmit_api/__init__.py +++ b/autosubmit_api/__init__.py @@ -17,6 +17,6 @@ # You should have received a copy of the GNU General Public License # along with Autosubmit. If not, see . -__version__ = "4.0.0b7" +__version__ = "4.0.0b8" __author__ = "Luiggi Tenorio, Bruno P. Kinoshita, Cristian GutiƩrrez, Julian Berlin, Wilmer Uruchi" __credits__ = "Barcelona Supercomputing Center" \ No newline at end of file -- GitLab From 89879c096197425813dc0fcc4e3d07df5d36e358 Mon Sep 17 00:00:00 2001 From: Luiggi Tenorio Date: Fri, 24 May 2024 16:03:21 +0200 Subject: [PATCH 2/2] fix job_data db file creation --- CHANGELOG.md | 1 + .../autosubmit_legacy/job/job_list.py | 8 +++++-- .../builders/experiment_history_builder.py | 3 +++ autosubmit_api/database/db_jobdata.py | 1 + autosubmit_api/experiment/common_requests.py | 24 +++++++++++-------- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ce0f9..f7ab71f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Pre-release v4.0.0b8 - Release date: TBD +* Fixed major bug: Prevent accidental `job_data_{expid}.db` file creation ### Pre-release v4.0.0b7 - Release date: 2024-05-14 diff --git a/autosubmit_api/autosubmit_legacy/job/job_list.py b/autosubmit_api/autosubmit_legacy/job/job_list.py index 3db5795..cc6e085 100644 --- a/autosubmit_api/autosubmit_legacy/job/job_list.py +++ b/autosubmit_api/autosubmit_legacy/job/job_list.py @@ -589,8 +589,12 @@ class JobList: db_file = os.path.join(path_local_root, basic_config.DB_FILE) # Job information from job historic data # print("Get current job data structure...") - experiment_history = ExperimentHistoryDirector(ExperimentHistoryBuilder(expid)).build_reader_experiment_history() - job_data = experiment_history.manager.get_all_last_job_data_dcs() if experiment_history.is_header_ready() else None + job_data = None + try: + experiment_history = ExperimentHistoryDirector(ExperimentHistoryBuilder(expid)).build_reader_experiment_history() + job_data = experiment_history.manager.get_all_last_job_data_dcs() if experiment_history.is_header_ready() else None + except Exception: + print(traceback.print_exc()) # Result variables job_running_time_seconds = dict() job_running_to_runtext = dict() diff --git a/autosubmit_api/builders/experiment_history_builder.py b/autosubmit_api/builders/experiment_history_builder.py index c1d090b..dd13a67 100644 --- a/autosubmit_api/builders/experiment_history_builder.py +++ b/autosubmit_api/builders/experiment_history_builder.py @@ -57,6 +57,9 @@ class ExperimentHistoryBuilder(Builder): self._validate_basic_config() if not self.experiment_history_db_manager: raise Exception("Experiment Database Manager is missing") + else: + if not self.experiment_history_db_manager.my_database_exists(): + raise Exception("Job/Runs database does not exist") if not self.logger: raise Exception("Logging is missing.") return ExperimentHistory(self.expid, self.basic_config, self.experiment_history_db_manager, self.logger) diff --git a/autosubmit_api/database/db_jobdata.py b/autosubmit_api/database/db_jobdata.py index 25a70ad..b19d6c2 100644 --- a/autosubmit_api/database/db_jobdata.py +++ b/autosubmit_api/database/db_jobdata.py @@ -490,6 +490,7 @@ class MainDataBase(): if self.conn: c = self.conn.cursor() c.execute(self.create_table_query) + self.conn.commit() else: raise IOError("Not a valid connection") except IOError as exp: diff --git a/autosubmit_api/experiment/common_requests.py b/autosubmit_api/experiment/common_requests.py index f730d58..82be53f 100644 --- a/autosubmit_api/experiment/common_requests.py +++ b/autosubmit_api/experiment/common_requests.py @@ -172,16 +172,20 @@ def get_experiment_data(expid): result["pkl_timestamp"] = autosubmit_config_facade.get_pkl_last_modified_timestamp() result["chunk_size"] = autosubmit_config_facade.chunk_size result["chunk_unit"] = autosubmit_config_facade.chunk_unit - experiment_history = ExperimentHistoryDirector(ExperimentHistoryBuilder(expid)).build_reader_experiment_history() - experiment_run = experiment_history.manager.get_experiment_run_dc_with_max_id() - if experiment_run and experiment_run.total > 0: - result["total_jobs"] = experiment_run.total - result["completed_jobs"] = experiment_run.completed - result["db_historic_version"] = experiment_history.manager.db_version - else: - result["total_jobs"] = 0 - result["completed_jobs"] = 0 - result["db_historic_version"] = "NA" + + result["total_jobs"] = 0 + result["completed_jobs"] = 0 + result["db_historic_version"] = "NA" + try: + experiment_history = ExperimentHistoryDirector(ExperimentHistoryBuilder(expid)).build_reader_experiment_history() + experiment_run = experiment_history.manager.get_experiment_run_dc_with_max_id() + if experiment_run and experiment_run.total > 0: + result["total_jobs"] = experiment_run.total + result["completed_jobs"] = experiment_run.completed + result["db_historic_version"] = experiment_history.manager.db_version + except Exception as exc: + logger.warning((traceback.format_exc())) + logger.warning((f"Warning: Error in get_experiment_data while reading historical data: {exc}")) except Exception as exp: result["error"] = True -- GitLab