diff --git a/src/slurmctld/agent.c b/src/slurmctld/agent.c
index 405cb1c02a4b21f0c51537a06806ac43c2c45fcf..6e3e42245309e26b18dcc8fb5fd0edd60f551bdc 100644
--- a/src/slurmctld/agent.c
+++ b/src/slurmctld/agent.c
@@ -599,8 +599,8 @@ static void *_thread_per_node_rpc(void *args)
 
 	/* Signal completion so another thread can replace us */
 	(*task_ptr->threads_active_ptr)--;
-	pthread_cond_signal(task_ptr->thread_cond_ptr);
 	slurm_mutex_unlock(task_ptr->thread_mutex_ptr);
+	pthread_cond_signal(task_ptr->thread_cond_ptr);
 
 	xfree(args);
 	return (void *) NULL;