From cb29f3f0b1411732f36998678706ee22649aff82 Mon Sep 17 00:00:00 2001 From: "Andrey.Tarashevskiy" Date: Sun, 25 Oct 2020 00:57:00 +0300 Subject: [PATCH] DatasourceHealthIndicator consumes all the DB connections from the pool when used with Exposed Spring Boot starter #1077 --- .../org/jetbrains/exposed/spring/SpringTransactionManager.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-transaction/src/main/kotlin/org/jetbrains/exposed/spring/SpringTransactionManager.kt b/spring-transaction/src/main/kotlin/org/jetbrains/exposed/spring/SpringTransactionManager.kt index 3845ff1031..611082a126 100644 --- a/spring-transaction/src/main/kotlin/org/jetbrains/exposed/spring/SpringTransactionManager.kt +++ b/spring-transaction/src/main/kotlin/org/jetbrains/exposed/spring/SpringTransactionManager.kt @@ -4,7 +4,6 @@ import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.Transaction import org.jetbrains.exposed.sql.statements.api.ExposedConnection import org.jetbrains.exposed.sql.statements.jdbc.JdbcConnectionImpl -import org.jetbrains.exposed.sql.transactions.DEFAULT_ISOLATION_LEVEL import org.jetbrains.exposed.sql.transactions.DEFAULT_REPETITION_ATTEMPTS import org.jetbrains.exposed.sql.transactions.TransactionInterface import org.jetbrains.exposed.sql.transactions.TransactionManager @@ -54,6 +53,9 @@ class SpringTransactionManager(private val _dataSource: DataSource, if (!TransactionSynchronizationManager.hasResource(_dataSource)) { TransactionSynchronizationManager.unbindResourceIfPossible(this) } + if (TransactionSynchronizationManager.isSynchronizationActive() && TransactionSynchronizationManager.getSynchronizations().isEmpty()) { + TransactionSynchronizationManager.clearSynchronization() + } TransactionManager.resetCurrent(null) }