diff --git a/autosubmit/autosubmit.py b/autosubmit/autosubmit.py index 8711afcceeef405c90b738bcd0263fd18d6dcb1e..cebc268d1bf520fc719c9c27f54273789ee44fce 100644 --- a/autosubmit/autosubmit.py +++ b/autosubmit/autosubmit.py @@ -1131,7 +1131,7 @@ class Autosubmit: :rtype: \n """ job_list._job_list = jobs_filtered - job_list.update_list(as_conf,False) + job_list.update_list(as_conf, False) # Current choice is Paramiko Submitter submitter = Autosubmit._get_submitter(as_conf) @@ -1156,11 +1156,10 @@ class Autosubmit: # Loading parameters again Autosubmit._load_parameters(as_conf, job_list, submitter.platforms) while job_list.get_active(): - Autosubmit.submit_ready_jobs(as_conf, job_list, platforms_to_test, packages_persistence, True, only_wrappers, hold=False) + Autosubmit.submit_ready_jobs( + as_conf, job_list, platforms_to_test, packages_persistence, True, only_wrappers, hold=False) job_list.update_list(as_conf, False) - - @staticmethod def run_experiment(expid, notransitive=False, update_version=False): """ @@ -1367,19 +1366,23 @@ class Autosubmit: prev_status = job.status if job.status == Status.FAILED: continue - if platform.type == "slurm": # List for add all jobs that will be checked - list_jobid += str(job_id) + ',' - list_prevStatus.append(prev_status) - completed_joblist.append(job) - else: # If they're not from slurm platform check one-by-one - platform.check_job(job) - if prev_status != job.update_status(as_conf.get_copy_remote_logs() == 'true'): - if as_conf.get_notifications() == 'true': - if Status.VALUE_TO_KEY[job.status] in job.notify_on: - Notifier.notify_status_change(MailNotifier(BasicConfig), expid, job.name, - Status.VALUE_TO_KEY[prev_status], - Status.VALUE_TO_KEY[job.status], - as_conf.get_mails_to()) + # If exist key has been pressed and previous status was running, do not check + if not (Autosubmit.exit == True and prev_status == Status.RUNNING): + if platform.type == "slurm": # List for add all jobs that will be checked + # Do not check if Autosubmit exit is True and the previous status was running. + # if not (Autosubmit.exit == True and prev_status == Status.RUNNING): + list_jobid += str(job_id) + ',' + list_prevStatus.append(prev_status) + completed_joblist.append(job) + else: # If they're not from slurm platform check one-by-one + platform.check_job(job) + if prev_status != job.update_status(as_conf.get_copy_remote_logs() == 'true'): + if as_conf.get_notifications() == 'true': + if Status.VALUE_TO_KEY[job.status] in job.notify_on: + Notifier.notify_status_change(MailNotifier(BasicConfig), expid, job.name, + Status.VALUE_TO_KEY[prev_status], + Status.VALUE_TO_KEY[job.status], + as_conf.get_mails_to()) save = True if platform.type == "slurm" and list_jobid != "": @@ -1484,7 +1487,8 @@ class Autosubmit: Log.debug("\nJobs prepared for {1}: {0}", len( job_list.get_prepared(platform)), platform.name) - packages_to_submit = JobPackager(as_conf, platform, job_list, hold=hold).build_packages() + packages_to_submit = JobPackager( + as_conf, platform, job_list, hold=hold).build_packages() if not inspect: platform.open_submit_script() @@ -1501,7 +1505,8 @@ class Autosubmit: package._wallclock, package._num_processors, package.platform, as_conf, hold) job_list.job_package_map[package.jobs[0].id] = wrapper_job - packages_persistence.save(package.name, package.jobs, package._expid, inspect) + packages_persistence.save( + package.name, package.jobs, package._expid, inspect) for innerJob in package._jobs: # Setting status to COMPLETED so it does not get stuck in the loop that calls this function innerJob.status = Status.COMPLETED @@ -3115,7 +3120,8 @@ class Autosubmit: for job in jobs_wr: job.children = job.children - referenced_jobs_to_remove job.parents = job.parents - referenced_jobs_to_remove - Autosubmit.generate_scripts_andor_wrappers(as_conf, job_list_wrappers, jobs_wr,packages_persistence, True) + Autosubmit.generate_scripts_andor_wrappers( + as_conf, job_list_wrappers, jobs_wr, packages_persistence, True) packages = packages_persistence.load(True) else: