@@ -95,6 +95,14 @@ class ExecutorSettings(ExecutorSettingsBase):
95
95
"nargs" : "+" ,
96
96
},
97
97
)
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
+ )
98
106
99
107
100
108
# Required:
@@ -502,7 +510,10 @@ def read_log(
502
510
self .logger .error (f"Job { j .external_jobid } failed.{ msg } " )
503
511
self .report_job_error (j , msg = msg , aux_logs = aux_logs )
504
512
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
+ ):
506
517
self ._kubernetes_retry (
507
518
lambda j = j : self .safe_delete_job (
508
519
j .external_jobid , ignore_not_found = True
@@ -515,11 +526,12 @@ def read_log(
515
526
self .logger .info (f"Job { j .external_jobid } succeeded." )
516
527
self .report_job_success (j )
517
528
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
+ )
521
534
)
522
- )
523
535
else :
524
536
# still active
525
537
self .logger .debug (f"Job { j .external_jobid } is still active." )
0 commit comments