diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c
index dfc3b26c6ab80b5a5252295a98085238ae3d9525..ae7833abc9f91ac6af9adf52f99b6533e8164f9a 100644
--- a/src/slurmctld/proc_req.c
+++ b/src/slurmctld/proc_req.c
@@ -753,6 +753,9 @@ static void _slurm_rpc_job_step_kill(slurm_msg_t * msg)
 				job_step_kill_msg->job_id, 
 				job_step_kill_msg->job_step_id, TIME_STR);
 			slurm_send_rc_msg(msg, SLURM_SUCCESS);
+
+			/* Below function provides its own locking */
+			(void) dump_all_job_state();
 		}
 	}
 }
@@ -771,6 +774,7 @@ static void _slurm_rpc_job_step_complete(slurm_msg_t * msg)
 	};
 	uid_t uid;
 	bool job_requeue = false;
+	bool dump_job = false, dump_node = false;
 
 	/* init */
 	START_TIMER;
@@ -806,6 +810,8 @@ static void _slurm_rpc_job_step_complete(slurm_msg_t * msg)
 			error_code = update_node(&update_node_msg);
 			if (complete_job_step_msg->job_rc != SLURM_SUCCESS)
 				job_requeue = true;
+			dump_job = true;
+			dump_node = true;
 		}
 	}
 
@@ -827,8 +833,7 @@ static void _slurm_rpc_job_step_complete(slurm_msg_t * msg)
 			debug2("_slurm_rpc_job_step_complete JobId=%u %s", 
 				complete_job_step_msg->job_id, TIME_STR);
 			slurm_send_rc_msg(msg, SLURM_SUCCESS);
-			schedule();	/* Has own locking */
-			(void) dump_all_job_state();	/* Has own locking */
+			dump_job = true;
 		}
 	} else {
 		error_code =
@@ -851,9 +856,13 @@ static void _slurm_rpc_job_step_complete(slurm_msg_t * msg)
 				complete_job_step_msg->job_id, 
 				complete_job_step_msg->job_step_id, TIME_STR);
 			slurm_send_rc_msg(msg, SLURM_SUCCESS);
-			(void) dump_all_job_state();	/* Has own locking */
+			dump_job = true;
 		}
 	}
+	if (dump_job)
+		(void) dump_all_job_state();	/* Has own locking */
+	if (dump_node)
+		(void) dump_all_node_state();	/* Has own locking */
 }
 
 /* _slurm_rpc_job_step_create - process RPC to creates/registers a job step