Merge pull request #563 from InsanusMokrassar/0.25.4

0.25.4
This commit is contained in:
2025-04-02 23:48:54 +06:00
committed by GitHub
5 changed files with 21 additions and 8 deletions

View File

@@ -1,5 +1,15 @@
# Changelog
## 0.25.4
* `Versions`:
* `Ktor`: `3.1.1` -> `3.1.2`
* `Koin`: `4.0.2` -> `4.0.4`
* `Coroutines`:
* Add `SmartKeyRWLocker.withWriteLocks` extension with vararg keys
* `Transactions`:
* Fix order of rollback actions calling
## 0.25.3
* `Coroutines`:

View File

@@ -221,4 +221,6 @@ suspend inline fun <T, R> SmartKeyRWLocker<T>.withWriteLocks(keys: Iterable<T>,
unlockWrite(it)
}
}
}
}
suspend inline fun <T, R> SmartKeyRWLocker<T>.withWriteLocks(vararg keys: T, action: () -> R): R = withWriteLocks(keys.asIterable(), action)

View File

@@ -15,5 +15,5 @@ crypto_js_version=4.1.1
# Project data
group=dev.inmo
version=0.25.3
android_code_version=293
version=0.25.4
android_code_version=294

View File

@@ -15,11 +15,11 @@ sqlite = "3.49.1.0"
korlibs = "5.4.0"
uuid = "0.8.4"
ktor = "3.1.1"
ktor = "3.1.2"
gh-release = "2.5.2"
koin = "4.0.2"
koin = "4.0.4"
okio = "3.10.2"

View File

@@ -2,7 +2,7 @@ package dev.inmo.micro_utils.transactions
typealias TransactionDSLRollbackLambda = suspend (Throwable) -> Unit
class TransactionsDSL internal constructor() {
internal val rollbackActions = LinkedHashSet<TransactionDSLRollbackLambda>()
internal val rollbackActions = ArrayList<TransactionDSLRollbackLambda>()
internal fun addRollbackAction(rollbackAction: TransactionDSLRollbackLambda) {
rollbackActions.add(rollbackAction)
@@ -71,9 +71,10 @@ suspend fun <T> doSuspendTransaction(
return runCatching {
transactionsDSL.block()
}.onFailure { e ->
transactionsDSL.rollbackActions.forEach {
for (i in transactionsDSL.rollbackActions.lastIndex downTo 0) {
val rollbackAction = transactionsDSL.rollbackActions[i]
runCatching {
it.invoke(e)
rollbackAction.invoke(e)
}.onFailure { ee ->
onRollbackStepError(ee)
}