diff --git a/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SmartRWLocker.kt b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SmartRWLocker.kt index faeea009ed9..08069672cd6 100644 --- a/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SmartRWLocker.kt +++ b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SmartRWLocker.kt @@ -23,6 +23,7 @@ class SmartRWLocker(private val readPermits: Int = Int.MAX_VALUE, writeIsLocked: * Do lock in [readSemaphore] inside of [writeMutex] locking */ suspend fun acquireRead() { + _writeMutex.waitUnlock() _readSemaphore.acquire() } @@ -37,8 +38,8 @@ class SmartRWLocker(private val readPermits: Int = Int.MAX_VALUE, writeIsLocked: * Locking [writeMutex] and wait while all [readSemaphore] permits will be freed */ suspend fun lockWrite() { - _readSemaphore.acquire(readPermits) _writeMutex.lock() + _readSemaphore.acquire(readPermits) } /** diff --git a/mppComposeJvmJsAndroidLinuxMingwLinuxArm64Project.gradle b/mppComposeJvmJsAndroidLinuxMingwLinuxArm64Project.gradle index 78a333a7f04..f7dee6e0a65 100644 --- a/mppComposeJvmJsAndroidLinuxMingwLinuxArm64Project.gradle +++ b/mppComposeJvmJsAndroidLinuxMingwLinuxArm64Project.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } androidTarget { publishAllLibraryVariants() diff --git a/mppJvmJsAndroidLinuxMingwLinuxArm64Project.gradle b/mppJvmJsAndroidLinuxMingwLinuxArm64Project.gradle index 2987a6a3d78..9fb86a673ed 100644 --- a/mppJvmJsAndroidLinuxMingwLinuxArm64Project.gradle +++ b/mppJvmJsAndroidLinuxMingwLinuxArm64Project.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } androidTarget { publishAllLibraryVariants() @@ -36,7 +48,7 @@ kotlin { } commonTest { dependencies { - implementation kotlin('test-common') + implementation kotlin('test') implementation kotlin('test-annotations-common') implementation libs.kt.coroutines.test } diff --git a/mppJvmJsAndroidProject.gradle b/mppJvmJsAndroidProject.gradle index e08c7cc2f86..95d22babd49 100644 --- a/mppJvmJsAndroidProject.gradle +++ b/mppJvmJsAndroidProject.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } androidTarget { publishAllLibraryVariants() diff --git a/mppJvmJsLinuxMingwLinuxArm64Project.gradle b/mppJvmJsLinuxMingwLinuxArm64Project.gradle index 27cba3db2e0..9d4d450a220 100644 --- a/mppJvmJsLinuxMingwLinuxArm64Project.gradle +++ b/mppJvmJsLinuxMingwLinuxArm64Project.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } linuxX64() mingwX64() diff --git a/mppJvmJsLinuxMingwProject.gradle b/mppJvmJsLinuxMingwProject.gradle index b6355513b6f..8f56313f224 100644 --- a/mppJvmJsLinuxMingwProject.gradle +++ b/mppJvmJsLinuxMingwProject.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } linuxX64() mingwX64() diff --git a/mppProjectWithSerializationAndCompose.gradle b/mppProjectWithSerializationAndCompose.gradle index 31308474059..28f51365a70 100644 --- a/mppProjectWithSerializationAndCompose.gradle +++ b/mppProjectWithSerializationAndCompose.gradle @@ -12,8 +12,20 @@ kotlin { } } js (IR) { - browser() - nodejs() + browser { + testTask { + useMocha { + timeout = "60000" + } + } + } + nodejs { + testTask { + useMocha { + timeout = "60000" + } + } + } } androidTarget { publishAllLibraryVariants() diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt index 20b08e237b6..7defa718495 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt @@ -126,14 +126,15 @@ fun WriteKeyValueRepo.caching( ) = FullWriteKeyValueCacheRepo(this, kvCache, scope) open class FullKeyValueCacheRepo( - protected open val parentRepo: KeyValueRepo, + override val parentRepo: KeyValueRepo, kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), -) : FullWriteKeyValueCacheRepo(parentRepo, kvCache, scope), +) : //FullWriteKeyValueCacheRepo(parentRepo, kvCache, scope), KeyValueRepo, - ReadKeyValueRepo by FullReadKeyValueCacheRepo( + WriteKeyValueRepo by parentRepo, + FullReadKeyValueCacheRepo( parentRepo, kvCache, locker @@ -170,7 +171,7 @@ open class FullKeyValueCacheRepo( override suspend fun set(toSet: Map) { locker.withWriteLock { - super.set(toSet) + parentRepo.set(toSet) kvCache.set( toSet.filter { parentRepo.contains(it.key) @@ -181,7 +182,7 @@ open class FullKeyValueCacheRepo( override suspend fun unset(toUnset: List) { locker.withWriteLock { - super.unset(toUnset) + parentRepo.unset(toUnset) kvCache.unset( toUnset.filter { !parentRepo.contains(it)