Closed
Description
Library
jasync-r2dbc-mysql-2.2.3
Issue
- When opening transaction, it sets
autocommit = 0
and runsSTART TRANSACTION
, which is meaningless duplicate - When commit or rollback a transaction it does not set the autocomit back to 1, which causing the statement afterward being in a transaction!!!!!!!!!
override fun beginTransaction(): Publisher<Void> {
return executeVoid("START TRANSACTION")
}
override fun beginTransaction(definition: TransactionDefinition): Publisher<Void> {
return Mono.defer {
val setAutoCommit = Mono.from(setAutoCommit(false))
val setLockWaitTimeout = Mono.justOrEmpty(definition.getAttribute(TransactionDefinition.LOCK_WAIT_TIMEOUT))
.flatMap { timeout -> Mono.from(setLockWaitTimeout(timeout)) }
val changeIsolationLevel = Mono.justOrEmpty(definition.getAttribute(TransactionDefinition.ISOLATION_LEVEL))
.flatMap { newIsolationLevel -> Mono.from(setTransactionIsolationLevel(newIsolationLevel)) }
val startTransaction = Mono.from(beginTransaction())
return@defer Mono.from(setAutoCommit)
.then(setLockWaitTimeout)
.then(changeIsolationLevel)
.then(startTransaction)
.then()
}
}
override fun commitTransaction(): Publisher<Void> {
return executeVoid("COMMIT")
}
override fun rollbackTransaction(): Publisher<Void> {
return executeVoidAfterCurrent("ROLLBACK")
}
Solution
Remove val setAutoCommit = Mono.from(setAutoCommit(false))
at JasyncClientConnection.kt
Metadata
Metadata
Assignees
Labels
No labels