From 7791a0238fba7f878c3654916c6c8a21a108c78b Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Tue, 10 Feb 2009 23:15:22 +0000
Subject: [PATCH] Plug (one-time) memory leak at shutdown

---
 src/slurmctld/controller.c  | 2 ++
 src/slurmctld/reservation.c | 9 +++++++++
 src/slurmctld/reservation.h | 3 +++
 3 files changed, 14 insertions(+)

diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 49bbc99707b..e157f73f2a9 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -88,6 +88,7 @@
 #include "src/slurmctld/ping_nodes.h"
 #include "src/slurmctld/proc_req.h"
 #include "src/slurmctld/read_config.h"
+#include "src/slurmctld/reservation.h"
 #include "src/slurmctld/slurmctld.h"
 #include "src/slurmctld/sched_plugin.h"
 #include "src/slurmctld/srun_comm.h"
@@ -569,6 +570,7 @@ int main(int argc, char *argv[])
 	job_fini();
 	part_fini();	/* part_fini() must preceed node_fini() */
 	node_fini();
+	resv_fini();
 	trigger_fini();
 	assoc_mgr_fini(slurmctld_conf.state_save_location);
 
diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c
index df0656039e9..5b355f696fd 100644
--- a/src/slurmctld/reservation.c
+++ b/src/slurmctld/reservation.c
@@ -1181,6 +1181,15 @@ extern int create_resv(reserve_request_msg_t *resv_desc_ptr)
 	return rc;
 }
 
+/* Purge all reservation data structures */
+extern void resv_fini(void)
+{
+	if (resv_list) {
+		list_destroy(resv_list);
+		resv_list = (List) NULL;
+	}
+}
+
 /* Update an exiting resource reservation */
 extern int update_resv(reserve_request_msg_t *resv_desc_ptr)
 {
diff --git a/src/slurmctld/reservation.h b/src/slurmctld/reservation.h
index 9099f0d502f..9122dad7648 100644
--- a/src/slurmctld/reservation.h
+++ b/src/slurmctld/reservation.h
@@ -61,6 +61,9 @@ extern void show_resv(char **buffer_ptr, int *buffer_size, uid_t uid);
 /* Save the state of all reservations to file */
 extern int dump_all_resv_state(void);
 
+/* Purge all reservation data structures */
+extern void resv_fini(void);
+
 /*
  * Load the reservation state from file, recover on slurmctld restart. 
  *	Reset reservation pointers for all jobs.
-- 
GitLab