@@ -95,6 +95,14 @@ class ExecutorSettings(ExecutorSettingsBase):
9595 "nargs" : "+" ,
9696 },
9797 )
98+ omit_job_cleanup : bool = field (
99+ default = False ,
100+ metadata = {
101+ "help" : "Do not delete jobs after they have finished or failed. "
102+ "This is useful for debugging, or if your k8s cluster performs "
103+ "automatic cleanups."
104+ },
105+ )
98106
99107
100108# Required:
@@ -502,7 +510,10 @@ def read_log(
502510 self .logger .error (f"Job { j .external_jobid } failed.{ msg } " )
503511 self .report_job_error (j , msg = msg , aux_logs = aux_logs )
504512
505- if pod_name is not None :
513+ if (
514+ pod_name is not None
515+ and not self .workflow .executor_settings .omit_job_cleanup
516+ ):
506517 self ._kubernetes_retry (
507518 lambda j = j : self .safe_delete_job (
508519 j .external_jobid , ignore_not_found = True
@@ -515,11 +526,12 @@ def read_log(
515526 self .logger .info (f"Job { j .external_jobid } succeeded." )
516527 self .report_job_success (j )
517528
518- self ._kubernetes_retry (
519- lambda j = j : self .safe_delete_job (
520- j .external_jobid , ignore_not_found = True
529+ if not self .workflow .executor_settings .omit_job_cleanup :
530+ self ._kubernetes_retry (
531+ lambda j = j : self .safe_delete_job (
532+ j .external_jobid , ignore_not_found = True
533+ )
521534 )
522- )
523535 else :
524536 # still active
525537 self .logger .debug (f"Job { j .external_jobid } is still active." )
0 commit comments