From 92b2980749ef7733533e2fbf0f60801b5b2adfb6 Mon Sep 17 00:00:00 2001 From: Ahmad Vazirna Date: Mon, 16 Feb 2026 23:27:50 +0200 Subject: [PATCH 1/2] Fail HeartbeatWorker when session expires --- app/src/org/commcare/heartbeat/HeartbeatWorker.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/org/commcare/heartbeat/HeartbeatWorker.kt b/app/src/org/commcare/heartbeat/HeartbeatWorker.kt index 7b5dfd100c..5fd53401fa 100644 --- a/app/src/org/commcare/heartbeat/HeartbeatWorker.kt +++ b/app/src/org/commcare/heartbeat/HeartbeatWorker.kt @@ -5,6 +5,7 @@ import androidx.work.Worker import androidx.work.WorkerParameters import org.commcare.CommCareApplication import org.commcare.util.LogTypes +import org.commcare.utils.SessionUnavailableException import org.javarosa.core.services.Logger import java.io.IOException import java.lang.IllegalStateException @@ -18,8 +19,10 @@ class HeartbeatWorker(context: Context, workerParams: WorkerParameters): private val requester = CommCareApplication.instance().heartbeatRequester override fun doWork(): Result { try { - if (CommCareApplication.instance().session.isActive && - !CommCareApplication.instance().session.heartbeatSucceededForSession()) { + if (!CommCareApplication.isSessionActive()) { + return Result.failure() + } + if (!CommCareApplication.instance().session.heartbeatSucceededForSession()) { requester.makeRequest() } } catch (e: Exception) { From 6927be74faa3bba8d60462ed5e873aee78e16e25 Mon Sep 17 00:00:00 2001 From: Ahmad Vazirna Date: Mon, 2 Mar 2026 11:14:18 +0200 Subject: [PATCH 2/2] Lint --- app/src/org/commcare/heartbeat/HeartbeatWorker.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/org/commcare/heartbeat/HeartbeatWorker.kt b/app/src/org/commcare/heartbeat/HeartbeatWorker.kt index 5fd53401fa..ef0ac206e8 100644 --- a/app/src/org/commcare/heartbeat/HeartbeatWorker.kt +++ b/app/src/org/commcare/heartbeat/HeartbeatWorker.kt @@ -4,8 +4,6 @@ import android.content.Context import androidx.work.Worker import androidx.work.WorkerParameters import org.commcare.CommCareApplication -import org.commcare.util.LogTypes -import org.commcare.utils.SessionUnavailableException import org.javarosa.core.services.Logger import java.io.IOException import java.lang.IllegalStateException @@ -14,9 +12,12 @@ import java.net.UnknownHostException /** * @author $|-|!˅@M */ -class HeartbeatWorker(context: Context, workerParams: WorkerParameters): - Worker(context, workerParams) { +class HeartbeatWorker( + context: Context, + workerParams: WorkerParameters, +) : Worker(context, workerParams) { private val requester = CommCareApplication.instance().heartbeatRequester + override fun doWork(): Result { try { if (!CommCareApplication.isSessionActive()) { @@ -34,7 +35,7 @@ class HeartbeatWorker(context: Context, workerParams: WorkerParameters): else -> { Logger.exception( "Encountered unexpected exception during heartbeat communications, stopping the heartbeat thread.", - e + e, ) Result.failure() }