@@ -267,18 +267,21 @@ def submit_task_jobs(self, workflow, itasks, curve_auth,
267267 # Prepare tasks for job submission
268268 prepared_tasks , bad_tasks = self .prep_submit_task_jobs (
269269 workflow , itasks )
270+
270271 # Reset consumed host selection results
271272 self .task_remote_mgr .subshell_eval_reset ()
272273
273274 if not prepared_tasks :
274275 return bad_tasks
276+
275277 auth_itasks = {} # {platform: [itask, ...], ...}
276278
277279 for itask in prepared_tasks :
278280 platform_name = itask .platform ['name' ]
279281 auth_itasks .setdefault (platform_name , [])
280282 auth_itasks [platform_name ].append (itask )
281283 # Submit task jobs for each platform
284+ # Non-prepared tasks can be considered done for now:
282285 done_tasks = bad_tasks
283286
284287 for _ , itasks in sorted (auth_itasks .items ()):
@@ -1087,7 +1090,7 @@ def _prep_submit_task_job(
10871090 Returns:
10881091 * itask - preparation complete.
10891092 * None - preparation in progress.
1090- * False - perparation failed.
1093+ * False - preparation failed.
10911094
10921095 """
10931096 if itask .local_job_file_path :
@@ -1181,6 +1184,14 @@ def _prep_submit_task_job(
11811184 itask .summary ['platforms_used' ][itask .submit_num ] = ''
11821185 # Retry delays, needed for the try_num
11831186 self ._create_job_log_path (workflow , itask )
1187+ if isinstance (exc , NoPlatformsError ):
1188+ # Clear all hosts from all platforms in group from
1189+ # bad_hosts:
1190+ self .bad_hosts -= exc .hosts_consumed
1191+ self ._set_retry_timers (itask , rtconfig )
1192+ self ._prep_submit_task_job_error (
1193+ workflow , itask , '(no platforms available)' , exc )
1194+ return False
11841195 self ._prep_submit_task_job_error (
11851196 workflow , itask , '(platform not defined)' , exc )
11861197 return False
0 commit comments