In order to prevent deadlocks between initial garbage collection and initial sync on startup, we serialized the two with a promise. When the initial garbage collection completes it delivers on a promise and the initial sync can start. If gc is disabled, the promise is never delivered and sync can never run. The startup process hangs with puppetdb in maintenance mode and nothing in the logs.