From b1a96b6ecb3760e94c98319cd0df65d94866b910 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 2 Apr 2025 16:52:08 +0600 Subject: [PATCH] fix transactions dsl --- transactions/src/commonMain/kotlin/TransactionsDSL.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/transactions/src/commonMain/kotlin/TransactionsDSL.kt b/transactions/src/commonMain/kotlin/TransactionsDSL.kt index 358701cbf8c..76db5e960d6 100644 --- a/transactions/src/commonMain/kotlin/TransactionsDSL.kt +++ b/transactions/src/commonMain/kotlin/TransactionsDSL.kt @@ -2,7 +2,7 @@ package dev.inmo.micro_utils.transactions typealias TransactionDSLRollbackLambda = suspend (Throwable) -> Unit class TransactionsDSL internal constructor() { - internal val rollbackActions = LinkedHashSet() + internal val rollbackActions = ArrayList() internal fun addRollbackAction(rollbackAction: TransactionDSLRollbackLambda) { rollbackActions.add(rollbackAction) @@ -71,9 +71,10 @@ suspend fun doSuspendTransaction( return runCatching { transactionsDSL.block() }.onFailure { e -> - transactionsDSL.rollbackActions.reversed().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) }