From 51f2c691794e6aa73a4cbc72be20b49068f56919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20M=C3=B6ller?= <jakob.moeller@sap.com> Date: Thu, 2 Jul 2020 13:42:05 +0200 Subject: [PATCH] Switch Exception Throwing of the enabledCheck in the RetrieveDiagnosisKeysTransaction.kt (#799) Fixes #770 Signed-off-by: d067928 <jakob.moeller@sap.com> --- .../transaction/RetrieveDiagnosisKeysTransaction.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RetrieveDiagnosisKeysTransaction.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RetrieveDiagnosisKeysTransaction.kt index 82f7d6f3b..49823d1a8 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RetrieveDiagnosisKeysTransaction.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RetrieveDiagnosisKeysTransaction.kt @@ -116,6 +116,16 @@ object RetrieveDiagnosisKeysTransaction : Transaction() { /** initiates the transaction. This suspend function guarantees a successful transaction once completed. */ suspend fun start() = lockAndExecuteUnique { + /** + * Handles the case when the ENClient got disabled but the Transaction is still scheduled + * in a background job. Also it acts as a failure catch in case the orchestration code did + * not check in before. + */ + if (!InternalExposureNotificationClient.asyncIsEnabled()) { + Timber.w("EN is not enabled, skipping RetrieveDiagnosisKeys") + executeClose() + return@lockAndExecuteUnique + } /**************************************************** * INIT TRANSACTION ****************************************************/ @@ -193,8 +203,6 @@ object RetrieveDiagnosisKeysTransaction : Transaction() { * Executes the INIT Transaction State */ private suspend fun executeSetup() = executeState(SETUP) { - if (!InternalExposureNotificationClient.asyncIsEnabled()) - throw IllegalStateException("The Exposure Notification Framework must be active, check your tracing status") lastFetchDateForRollback.set(LocalData.lastTimeDiagnosisKeysFromServerFetch()) val currentDate = Date(System.currentTimeMillis()) Timber.d("using $currentDate as current date in Transaction.") -- GitLab