From 228eb43e4f4d97c5b8636e8a0e5263a0316a9610 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Fri, 13 Sep 2002 01:08:49 +0000
Subject: [PATCH] Perform cleanup and return appropriate error code on Elan
 setup failure.

---
 src/slurmctld/step_mgr.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index 86acc14ed03..c4e1a71c9ad 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -341,13 +341,21 @@ step_create ( step_specs *step_specs, struct step_record** new_step_record  )
 			node_id = qsw_getnodeid_byhost (node_record_table_ptr[i].name);
 			if (node_id >= 0)	/* no lookup error */
 				bit_set(nodeset, node_id);
-			else
+			else {
 				error ("qsw_getnodeid_byhost lookup failure on %s",
 				       node_record_table_ptr[i].name);
+				delete_step_record (job_ptr, step_ptr->step_id);
+				bit_free (nodeset);
+				return ESLURM_INTERCONNECT_FAILURE;
+			}
 		}
 	}
-	if (qsw_setup_jobinfo (step_ptr->qsw_job, nprocs, nodeset, step_ptr->cyclic_alloc) < 0)
-		fatal ("step_create: qsw_setup_jobinfo error %m");
+	if (qsw_setup_jobinfo (step_ptr->qsw_job, nprocs, nodeset, step_ptr->cyclic_alloc) < 0) {
+		error ("step_create: qsw_setup_jobinfo error %m");
+		delete_step_record (job_ptr, step_ptr->step_id);
+		bit_free (nodeset);
+		return ESLURM_INTERCONNECT_FAILURE;
+	}
 	bit_free (nodeset);
 #endif
 
-- 
GitLab