From 3aaf8b0fe65ca5c6740ae20bda7c1aabd0146f08 Mon Sep 17 00:00:00 2001 From: Sergejs Luhmirins Date: Tue, 5 Aug 2025 13:48:45 +0300 Subject: [PATCH 1/2] MS-976 Close event scope after down-syncing a single subject --- .../java/com/simprints/infra/eventsync/EventSyncManagerImpl.kt | 2 ++ .../java/com/simprints/infra/eventsync/EventSyncManagerTest.kt | 1 + 2 files changed, 3 insertions(+) diff --git a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/EventSyncManagerImpl.kt b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/EventSyncManagerImpl.kt index e3ea7842bd..f4531b50c9 100644 --- a/infra/event-sync/src/main/java/com/simprints/infra/eventsync/EventSyncManagerImpl.kt +++ b/infra/event-sync/src/main/java/com/simprints/infra/eventsync/EventSyncManagerImpl.kt @@ -9,6 +9,7 @@ import com.simprints.infra.config.store.ConfigRepository import com.simprints.infra.config.store.models.ProjectConfiguration import com.simprints.infra.events.EventRepository import com.simprints.infra.events.event.domain.models.EventType +import com.simprints.infra.events.event.domain.models.scope.EventScopeEndCause import com.simprints.infra.events.event.domain.models.scope.EventScopeType import com.simprints.infra.eventsync.event.remote.EventRemoteDataSource import com.simprints.infra.eventsync.status.down.EventDownSyncScopeRepository @@ -101,6 +102,7 @@ internal class EventSyncManagerImpl @Inject constructor( ), ) downSyncTask.downSync(this, op, eventScope, configRepository.getProject()).toList() + eventRepository.closeEventScope(eventScope, EventScopeEndCause.WORKFLOW_ENDED) } private fun getProjectModes(projectConfiguration: ProjectConfiguration) = projectConfiguration.general.modalities.map { it.toMode() } diff --git a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/EventSyncManagerTest.kt b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/EventSyncManagerTest.kt index 27c8b429ff..95964c0bc9 100644 --- a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/EventSyncManagerTest.kt +++ b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/EventSyncManagerTest.kt @@ -157,6 +157,7 @@ internal class EventSyncManagerTest { eventSyncManagerImpl.downSyncSubject(DEFAULT_PROJECT_ID, "subjectId") coVerify { downSyncTask.downSync(any(), any(), eventScope, any()) } + coVerify { eventRepository.closeEventScope(eventScope, any()) } } @Test From 8fe84ce561977efabfef61cbb8dd9db1e4f7665b Mon Sep 17 00:00:00 2001 From: Sergejs Luhmirins Date: Tue, 5 Aug 2025 14:05:39 +0300 Subject: [PATCH 2/2] MS-976 Close any existing down-sync scopes before sync to recover some local data --- .../infra/eventsync/sync/master/EventSyncMasterWorker.kt | 5 +++++ 1 file changed, 5 insertions(+) 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 ca0529b29f..4a90bcc1d1 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 @@ -97,6 +97,11 @@ class EventSyncMasterWorker @AssistedInject internal constructor( } if (configuration.isEventDownSyncAllowed()) { + // TODO: Remove after all users have updated to 2025.3.0 + // In versions before 2025.3.0 a bug prevented single subject down-sync scopes from being closed and uploaded. + // Attempting to close any such scopes and recover at least some of the data. + eventRepository.closeAllOpenScopes(EventScopeType.DOWN_SYNC, null) + eventRepository.createEventScope( EventScopeType.DOWN_SYNC, downSyncWorkerScopeId,