diff --git a/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.c b/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.c
index 9cec33bb1bad985a5a2892b0b104a719a0e3ad8f..dfc403b1dfe7aab4f6b717b26f7549fd6d7e67e8 100644
--- a/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.c
+++ b/src/plugins/jobacct_gather/cgroup/jobacct_gather_cgroup.c
@@ -61,12 +61,14 @@ pthread_mutex_t jobacct_lock __attribute__((weak_import));
 uint32_t jobacct_mem_limit __attribute__((weak_import));
 uint32_t jobacct_step_id __attribute__((weak_import));
 uint32_t jobacct_vmem_limit __attribute__((weak_import));
+int bg_recover __attribute__((weak_import)) = NOT_FROM_CONTROLLER;
 #else
 uint32_t jobacct_job_id;
 pthread_mutex_t jobacct_lock;
 uint32_t jobacct_mem_limit;
 uint32_t jobacct_step_id;
 uint32_t jobacct_vmem_limit;
+int bg_recover = NOT_FROM_CONTROLLER;
 #endif
 
 
@@ -593,33 +595,40 @@ static void _destroy_prec(void *object)
  */
 extern int init (void)
 {
-	/* read cgroup configuration */
-	if (read_slurm_cgroup_conf(&slurm_cgroup_conf))
-		return SLURM_ERROR;
-
-	/* initialize cpuinfo internal data */
-	if (xcpuinfo_init() != XCPUINFO_SUCCESS) {
-		free_slurm_cgroup_conf(&slurm_cgroup_conf);
-		return SLURM_ERROR;
-	}
+	char *temp;
+
+	/* If running on the slurmctld don't do any of this since it
+	   isn't needed.
+	*/
+	if (bg_recover == NOT_FROM_CONTROLLER) {
+		/* read cgroup configuration */
+		if (read_slurm_cgroup_conf(&slurm_cgroup_conf))
+			return SLURM_ERROR;
+
+		/* initialize cpuinfo internal data */
+		if (xcpuinfo_init() != XCPUINFO_SUCCESS) {
+			free_slurm_cgroup_conf(&slurm_cgroup_conf);
+			return SLURM_ERROR;
+		}
 
-	/* enable cpuacct cgroup subsystem */
-	if (jobacct_gather_cgroup_cpuacct_init(&slurm_cgroup_conf) !=
-	    SLURM_SUCCESS) {
-		xcpuinfo_fini();
-		free_slurm_cgroup_conf(&slurm_cgroup_conf);
-		return SLURM_ERROR;
-   	}
+		/* enable cpuacct cgroup subsystem */
+		if (jobacct_gather_cgroup_cpuacct_init(&slurm_cgroup_conf) !=
+		    SLURM_SUCCESS) {
+			xcpuinfo_fini();
+			free_slurm_cgroup_conf(&slurm_cgroup_conf);
+			return SLURM_ERROR;
+		}
 
-	/* enable memory cgroup subsystem */
-	if (jobacct_gather_cgroup_memory_init(&slurm_cgroup_conf) !=
-	    SLURM_SUCCESS) {
-		xcpuinfo_fini();
-		free_slurm_cgroup_conf(&slurm_cgroup_conf);
-		return SLURM_ERROR;
+		/* enable memory cgroup subsystem */
+		if (jobacct_gather_cgroup_memory_init(&slurm_cgroup_conf) !=
+		    SLURM_SUCCESS) {
+			xcpuinfo_fini();
+			free_slurm_cgroup_conf(&slurm_cgroup_conf);
+			return SLURM_ERROR;
+		}
 	}
 
-	char *temp = slurm_get_proctrack_type();
+	temp = slurm_get_proctrack_type();
 	if (!strcasecmp(temp, "proctrack/pgid")) {
 		info("WARNING: We will use a much slower algorithm with "
 		     "proctrack/pgid, use Proctracktype=proctrack/linuxproc "
@@ -637,6 +646,7 @@ extern int init (void)
 		      "need to change it.", ACCOUNTING_STORAGE_TYPE_NONE);
 	}
 	xfree(temp);
+
 	verbose("%s loaded", plugin_name);
 	return SLURM_SUCCESS;
 }