Skip to content

Commit

Permalink
mutex is enough
Browse files Browse the repository at this point in the history
  • Loading branch information
MJ1998 committed Dec 24, 2023
1 parent 977ecfa commit 1f0b113
Showing 1 changed file with 19 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import java.time.OffsetDateTime
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import org.hl7.fhir.r4.model.ResourceType

enum class SyncOperation {
Expand Down Expand Up @@ -83,18 +85,20 @@ internal class FhirSynchronizer(
}

suspend fun synchronize(): SyncJobStatus {
setSyncState(SyncJobStatus.Started)

return listOf(download(), upload())
.filterIsInstance<SyncResult.Error>()
.flatMap { it.exceptions }
.let {
if (it.isEmpty()) {
setSyncState(SyncResult.Success())
} else {
setSyncState(SyncResult.Error(it))
mutex.withLock {
setSyncState(SyncJobStatus.Started)

return listOf(download(), upload())
.filterIsInstance<SyncResult.Error>()
.flatMap { it.exceptions }
.let {
if (it.isEmpty()) {
setSyncState(SyncResult.Success())
} else {
setSyncState(SyncResult.Error(it))
}
}
}
}
}

private suspend fun download(): SyncResult {
Expand Down Expand Up @@ -145,4 +149,8 @@ internal class FhirSynchronizer(
SyncResult.Error(exceptions)
}
}

companion object {
private val mutex = Mutex()
}
}

0 comments on commit 1f0b113

Please sign in to comment.