kamiazya/scopes
Add Konsist rule to ensure TransactionManager rollback on Either.Left
Open
#182 opened on Sep 2, 2025
hacktoberfest
Repository metrics
- Stars
- (2 stars)
- PR merge metrics
- (PR metrics pending)
Description
Context
Currently, TransactionManagerAdapter delegates blindly to the platform TransactionManager. When a transactional block returns Either.Left (indicating an error), the transaction is not automatically rolled back.
Problem
This can lead to partial commits when operations fail, violating transactional consistency.
Suggested Solution
- Update
TransactionManagerAdapterto mark transactions for rollback when the block returnsEither.Left:
override suspend fun <E, T> inTransaction(block: suspend () -> Either<E, T>): Either<E, T> =
platformTransactionManager.inTransaction {
val result = block()
if (result.isLeft()) markForRollback()
result
}
-
Add a Konsist test to ensure all TransactionManager implementations follow this pattern
-
Add integration tests to verify rollback behavior
Benefits
- Ensures transactional consistency
- Prevents partial commits on errors
- Makes error handling more predictable
Related
- PR #165 (Context View feature)
- TransactionManagementTest.kt
- Suggested by AI review