diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index a15f3b5df482131b16aa4dcf6cfb0d78ff721b50..5e89f80fdc6303383166f556340545961f13022e 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -139,11 +139,6 @@ int main(int argc, char *argv[])
 	 */
 	_init_pidfile();
 
-	if (switch_state_begin(recover)) {
-		error("switch_state_begin: %m");
-		exit(1);
-	}
-
 	if ((slurmctld_conf.slurm_user_id) && 
 	    (slurmctld_conf.slurm_user_id != getuid()) &&
 	    (setuid(slurmctld_conf.slurm_user_id))) {
@@ -213,6 +208,9 @@ int main(int argc, char *argv[])
 			exit(0);
 		}
 
+		if (switch_state_begin(recover))
+			fatal("switch_state_begin: %m");
+
 		/*
 		 * create attached thread for signal handling
 		 */