diff --git a/autosubmit/autosubmit.py b/autosubmit/autosubmit.py index 1fb931aa12903d76e8ad2c118b3b1af1e2d6bb85..06009b32560dd6de54f35cdbadd21414581ecccb 100644 --- a/autosubmit/autosubmit.py +++ b/autosubmit/autosubmit.py @@ -1536,7 +1536,8 @@ class Autosubmit: "Wrapper is in Unknown Status couldn't get wrapper parameters", 7050) # New status will be saved and inner_jobs will be checked. - wrapper_job.check_status(wrapper_job.new_status) + wrapper_job.check_status( + wrapper_job.new_status) # Erase from packages if the wrapper failed to be queued ( Hold Admin bug ) if wrapper_job.status == Status.WAITING: for inner_job in wrapper_job.job_list: @@ -1597,7 +1598,8 @@ class Autosubmit: for platform_jobs in slurm: platform = platform_jobs[0] jobs_to_check = platform_jobs[1] - platform.check_Alljobs(platform_jobs[3], jobs_to_check, as_conf.get_copy_remote_logs()) + platform.check_Alljobs( + platform_jobs[3], jobs_to_check, as_conf.get_copy_remote_logs()) for j_Indx in xrange(0, len(platform_jobs[3])): prev_status = platform_jobs[2][j_Indx] job = platform_jobs[3][j_Indx] @@ -3563,7 +3565,8 @@ class Autosubmit: Log.info( "Preparing .lock file to avoid multiple instances with same expid.") - as_conf = AutosubmitConfig(expid, BasicConfig, ConfigParserFactory()) + as_conf = AutosubmitConfig( + expid, BasicConfig, ConfigParserFactory()) as_conf.check_conf_files(False) project_type = as_conf.get_project_type() @@ -3602,7 +3605,6 @@ class Autosubmit: prev_job_list = Autosubmit.load_job_list( expid, as_conf, notransitive=notransitive) - date_format = '' if as_conf.get_chunk_size_unit() is 'hour': date_format = 'H' @@ -3714,11 +3716,11 @@ class Autosubmit: except AutosubmitError as e: if e.trace == "": e.trace = traceback.format_exc() - raise AutosubmitError(e.message, e.code,e.trace) + raise AutosubmitError(e.message, e.code, e.trace) except AutosubmitCritical as e: if e.trace == "": e.trace = traceback.format_exc() - raise AutosubmitCritical(e.message, e.code,e.trace) + raise AutosubmitCritical(e.message, e.code, e.trace) @staticmethod def _copy_code(as_conf, expid, project_type, force): diff --git a/autosubmit/database/db_jobdata.py b/autosubmit/database/db_jobdata.py index b313a427b2cf178423e6f6f93578f9db289f9856..933dc9e5e270eec7a779f6fea932f22687baf284 100644 --- a/autosubmit/database/db_jobdata.py +++ b/autosubmit/database/db_jobdata.py @@ -1022,23 +1022,30 @@ class JobDataStructure(MainDataBase): :return: package code, None if not found :rtype: int or None """ - packages = None + packages = packages_plus = None + count_packages = count_packages_plus = 0 try: packages = JobPackagePersistence(os.path.join(self.basic_conf.LOCAL_ROOT_DIR, self.expid, "pkl"), - "job_packages_" + self.expid).load(wrapper=False) + "job_packages_" + self.expid).load(wrapper=True) + count_packages = len(packages) except Exception as ex: Log.debug( "Wrapper table not found, trying packages. JobDataStructure.retrieve_packages") packages = None - try: - packages = JobPackagePersistence(os.path.join(self.basic_conf.LOCAL_ROOT_DIR, self.expid, "pkl"), - "job_packages_" + self.expid).load(wrapper=True) - except Exception as exp2: - packages = None - if (packages): + try: + packages_plus = JobPackagePersistence(os.path.join(self.basic_conf.LOCAL_ROOT_DIR, self.expid, "pkl"), + "job_packages_" + self.expid).load(wrapper=False) + count_packages_plus = len(packages_plus) + except Exception as ex: + Log.debug( + "Wrapper table not found, trying packages. JobDataStructure.retrieve_packages") + packages_plus = None + + if (packages or packages_plus): + packages_source = packages if count_packages > count_packages_plus else packages_plus try: - for exp, package_name, job_name in packages: + for exp, package_name, job_name in packages_source: if current_job_name == job_name: code = int(package_name.split("_")[2]) return code @@ -1132,6 +1139,8 @@ class JobDataStructure(MainDataBase): if job_data_last.start == 0: job_data_last.start = start job_data_last.status = status + job_data_last.rowtype = self.determine_rowtype( + self.get_job_package_code(job_name)) job_data_last.job_id = job_id job_data_last.modified = datetime.today().strftime('%Y-%m-%d-%H:%M:%S') _updated = self._update_start_job_data(job_data_last) @@ -1723,10 +1732,10 @@ class JobDataStructure(MainDataBase): # current_time = try: if self.conn: - sql = ''' UPDATE job_data SET start=?, modified=?, job_id=?, status=? WHERE id=? ''' + sql = ''' UPDATE job_data SET start=?, modified=?, job_id=?, status=?, rowtype=? WHERE id=? ''' cur = self.conn.cursor() cur.execute(sql, (int(jobdata.start), - jobdata.modified, jobdata.job_id, jobdata.status, jobdata._id)) + jobdata.modified, jobdata.job_id, jobdata.status, jobdata.rowtype, jobdata._id)) self.conn.commit() return True return None