From 842275fcdc71442bfe46a6fc8fc19705f0ed316a Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Mon, 31 Jan 2022 09:33:59 -0300 Subject: [PATCH] Do not start lifecycle when wiping from CLI --- .../java/org/briarproject/mailbox/cli/Main.kt | 25 ++++++++----------- .../mailbox/core/setup/WipeManager.kt | 3 ++- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt b/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt index 6dd40c12..1c0c0514 100644 --- a/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt +++ b/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt @@ -107,6 +107,15 @@ class Main : CliktCommand( val javaCliComponent = DaggerJavaCliComponent.builder().build() javaCliComponent.inject(this) + if (wipe) { + wipeManager.wipeFilesOnly() + println("Mailbox wiped successfully \\o/") + exitProcess(0) + } + startLifecycle() + } + + private fun startLifecycle() { Runtime.getRuntime().addShutdownHook( Thread { lifecycleManager.stopServices() @@ -114,24 +123,10 @@ class Main : CliktCommand( } ) - // This is a cli app, we'll always want this fully up when started, so start lifecycle lifecycleManager.startServices() lifecycleManager.waitForStartup() - if (wipe) { - // FIXME this can cause a deadlock - // see: https://code.briarproject.org/briar/briar-mailbox/-/issues/76 - val wipeResult = lifecycleManager.wipeMailbox() - lifecycleManager.stopServices() - lifecycleManager.waitForShutdown() - if (wipeResult) { - println("Mailbox wiped successfully \\o/") - exitProcess(0) - } else { - println("ERROR: Mailbox was not wiped cleanly") - exitProcess(1) - } - } else if (setupToken != null) { + if (setupToken != null) { try { setupManager.setToken(setupToken, null) } catch (e: InvalidIdException) { diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/WipeManager.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/WipeManager.kt index 430c47bd..7cefaaeb 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/WipeManager.kt +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/WipeManager.kt @@ -49,7 +49,8 @@ class WipeManager @Inject constructor( /** * Deletes all files, includes the database files. * - * This must only be called by the [LifecycleManager]. + * This must only be called by the [LifecycleManager] + * or by the CLI when no lifecycle was started. */ fun wipeFilesOnly() { fileManager.deleteAllFiles() -- GitLab