From 03d96ea1f830ab125098f212a06c8b2ea3e1acb3 Mon Sep 17 00:00:00 2001
From: Brian Christiansen <brian@schedmd.com>
Date: Mon, 22 Nov 2021 14:11:25 -0700
Subject: [PATCH] Reset job start time after nodes are rebooted

Previously only done for cloud/power save boots.

See 7e9d9af1ada

Bug 12366

Co-authored-by: Marshall Garey <marshall@schedmd.com>
---
 NEWS                          | 1 +
 RELEASE_NOTES                 | 2 ++
 src/slurmctld/job_scheduler.c | 4 ++++
 3 files changed, 7 insertions(+)

diff --git a/NEWS b/NEWS
index d3aaae64640..bb90d5ace0e 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,7 @@ documents those changes that are of interest to users and administrators.
     generic string.
  -- srun - refuse to run on malformed SPANK environment variable.
  -- Allow jobs to pack onto nodes already rebooting with the desired features.
+ -- Reset job start time after nodes are rebooted.
 
 * Changes in Slurm 21.08.5
 ==========================
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 76b20f99b2e..7b2b66c0142 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -28,6 +28,8 @@ HIGHLIGHTS
     the munge unit is no longer a dependency by default.
  -- Add extra 'EnvironmentFile=-/etc/default/$service' setting to service files.
  -- Allow jobs to pack onto nodes already rebooting with the desired features.
+ -- Reset job start time after nodes are rebooted, previously only done for
+    cloud/power save boots.
 
 CONFIGURATION FILE CHANGES (see man appropriate man page for details)
 =====================================================================
diff --git a/src/slurmctld/job_scheduler.c b/src/slurmctld/job_scheduler.c
index 80f7d543d11..18c3b4a3841 100644
--- a/src/slurmctld/job_scheduler.c
+++ b/src/slurmctld/job_scheduler.c
@@ -4313,12 +4313,16 @@ extern int reboot_job_nodes(job_record_t *job_ptr)
 		if (boot_node_bitmap == NULL) {
 			if (bit_overlap_any(job_ptr->node_bitmap,
 					    booting_node_bitmap))
+				/* Reset job start time when nodes are booted */
+				job_ptr->job_state |= JOB_POWER_UP_NODE;
 				/* launch_job() when all nodes have booted */
 				job_ptr->bit_flags |= NODE_REBOOT;
 			return SLURM_SUCCESS;
 		}
 	}
 
+	/* Reset job start time when nodes are booted */
+	job_ptr->job_state |= JOB_POWER_UP_NODE;
 	/* launch_job() when all nodes have booted */
 	job_ptr->bit_flags |= NODE_REBOOT;
 
-- 
GitLab