From 062a1f53d0125484be9f5f58728a1a23f52a0b87 Mon Sep 17 00:00:00 2001 From: Marinov Date: Thu, 18 Sep 2025 20:23:31 +0300 Subject: [PATCH] Move showProgressNotification() to be the first thing in Workers' doWork() to avoid timeout crash --- .../location/StoreUserLocationIntoCurrentSessionWorker.kt | 2 +- .../local/migration/RealmToRoomMigrationWorker.kt | 7 ++----- .../sync/down/workers/BaseEventDownSyncDownloaderWorker.kt | 2 +- .../eventsync/sync/master/EventEndSyncReporterWorker.kt | 2 +- .../eventsync/sync/master/EventStartSyncReporterWorker.kt | 2 +- .../infra/eventsync/sync/master/EventSyncMasterWorker.kt | 2 +- .../eventsync/sync/up/workers/EventUpSyncUploaderWorker.kt | 2 +- .../infra/sync/config/worker/DeviceConfigDownSyncWorker.kt | 2 +- .../sync/config/worker/ProjectConfigDownSyncWorker.kt | 2 +- 9 files changed, 10 insertions(+), 13 deletions(-) diff --git a/feature/setup/src/main/java/com/simprints/feature/setup/location/StoreUserLocationIntoCurrentSessionWorker.kt b/feature/setup/src/main/java/com/simprints/feature/setup/location/StoreUserLocationIntoCurrentSessionWorker.kt index 29f9546086..ed509163db 100644 --- a/feature/setup/src/main/java/com/simprints/feature/setup/location/StoreUserLocationIntoCurrentSessionWorker.kt +++ b/feature/setup/src/main/java/com/simprints/feature/setup/location/StoreUserLocationIntoCurrentSessionWorker.kt @@ -32,8 +32,8 @@ internal class StoreUserLocationIntoCurrentSessionWorker @AssistedInject constru override val tag: String = "StoreUserLocationWorker" override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { createLocationFlow() .filterNotNull() diff --git a/infra/enrolment-records/repository/src/main/java/com/simprints/infra/enrolment/records/repository/local/migration/RealmToRoomMigrationWorker.kt b/infra/enrolment-records/repository/src/main/java/com/simprints/infra/enrolment/records/repository/local/migration/RealmToRoomMigrationWorker.kt index b6ed7ca510..46f0b8bbb9 100644 --- a/infra/enrolment-records/repository/src/main/java/com/simprints/infra/enrolment/records/repository/local/migration/RealmToRoomMigrationWorker.kt +++ b/infra/enrolment-records/repository/src/main/java/com/simprints/infra/enrolment/records/repository/local/migration/RealmToRoomMigrationWorker.kt @@ -6,7 +6,6 @@ import androidx.work.WorkerParameters import com.simprints.core.DispatcherIO import com.simprints.core.workers.SimCoroutineWorker import com.simprints.infra.config.store.ConfigRepository -import com.simprints.infra.config.store.models.Project import com.simprints.infra.enrolment.records.repository.domain.models.SubjectAction import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery import com.simprints.infra.enrolment.records.repository.local.RealmEnrolmentRecordLocalDataSource @@ -38,13 +37,10 @@ internal class RealmToRoomMigrationWorker @AssistedInject constructor( override val tag: String get() = REALM_DB_MIGRATION.name - lateinit var project: Project - override suspend fun doWork(): Result = withContext(dispatcher) { - project = configRepo.getProject() + showProgressNotification() crashlyticsLog("[RealmToRoomMigrationWorker] MigrationWorker started.") try { - showProgressNotification() // 1. Check if down sync is in progress to retry latter (no need to increase the retry count) if (realmToRoomMigrationFlagsStore.isDownSyncInProgress()) { realmToRoomMigrationFlagsStore.updateStatus(MigrationStatus.NOT_STARTED) @@ -87,6 +83,7 @@ internal class RealmToRoomMigrationWorker @AssistedInject constructor( private suspend fun processRecords() { // log realm db info crashlyticsLog("[RealmToRoomMigrationWorker] ${realmDataSource.getLocalDBInfo()}") + val project = configRepo.getProject() var index = 0 realmDataSource .loadAllSubjectsInBatches(BATCH_SIZE) diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/down/workers/BaseEventDownSyncDownloaderWorker.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/down/workers/BaseEventDownSyncDownloaderWorker.kt index d19159bafc..2c820e119d 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/down/workers/BaseEventDownSyncDownloaderWorker.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/down/workers/BaseEventDownSyncDownloaderWorker.kt @@ -65,8 +65,8 @@ internal abstract class BaseEventDownSyncDownloaderWorker( } protected open suspend fun performDownSync(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val workerId = id.toString() var count = syncCache.readProgress(workerId) diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventEndSyncReporterWorker.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventEndSyncReporterWorker.kt index 6748f29aaf..e4b55c0c8e 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventEndSyncReporterWorker.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventEndSyncReporterWorker.kt @@ -31,8 +31,8 @@ internal class EventEndSyncReporterWorker @AssistedInject constructor( override val tag: String = "EventEndSyncReporter" override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val syncId = inputData.getString(SYNC_ID_TO_MARK_AS_COMPLETED) Simber.d("Params: $syncId", tag = tag) diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventStartSyncReporterWorker.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventStartSyncReporterWorker.kt index f63fcb985c..da4edae79a 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventStartSyncReporterWorker.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventStartSyncReporterWorker.kt @@ -28,8 +28,8 @@ internal class EventStartSyncReporterWorker @AssistedInject constructor( override val tag: String = "EventStartSyncReporter" override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val syncId = inputData.getString(SYNC_ID_STARTED) Simber.d("Params: $syncId", tag = tag) diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorker.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorker.kt index 541ab26bc7..9895dc6d6a 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorker.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorker.kt @@ -64,8 +64,8 @@ class EventSyncMasterWorker @AssistedInject internal constructor( } override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { // check if device is rooted before starting the sync securityManager.checkIfDeviceIsRooted() diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/up/workers/EventUpSyncUploaderWorker.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/up/workers/EventUpSyncUploaderWorker.kt index c7daafd996..43ee2d0976 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/up/workers/EventUpSyncUploaderWorker.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/sync/up/workers/EventUpSyncUploaderWorker.kt @@ -71,8 +71,8 @@ internal class EventUpSyncUploaderWorker @AssistedInject constructor( ?: throw IllegalArgumentException("input required") override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val workerId = this@EventUpSyncUploaderWorker.id.toString() var count = eventSyncCache.readProgress(workerId) diff --git a/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/DeviceConfigDownSyncWorker.kt b/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/DeviceConfigDownSyncWorker.kt index a136042347..5ab2de12d5 100644 --- a/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/DeviceConfigDownSyncWorker.kt +++ b/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/DeviceConfigDownSyncWorker.kt @@ -25,8 +25,8 @@ internal class DeviceConfigDownSyncWorker @AssistedInject constructor( override val tag: String = "DeviceConfigDownSync" override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val state = configManager.getDeviceState() diff --git a/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/ProjectConfigDownSyncWorker.kt b/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/ProjectConfigDownSyncWorker.kt index 39796fe98d..9c8f196d4e 100644 --- a/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/ProjectConfigDownSyncWorker.kt +++ b/infra/sync/src/main/java/com/simprints/infra/sync/config/worker/ProjectConfigDownSyncWorker.kt @@ -29,8 +29,8 @@ internal class ProjectConfigDownSyncWorker @AssistedInject constructor( override val tag = "ProjectConfigDownSync" override suspend fun doWork(): Result = withContext(dispatcher) { - crashlyticsLog("Started") showProgressNotification() + crashlyticsLog("Started") try { val projectId = authStore.signedInProjectId val oldConfig = configManager.getProjectConfiguration()