Поведение HikariCP при закрытии соединения, если транзакция не была явно зафиксирована / откатана? - PullRequest
3 голосов
/ 25 июня 2019

Я мигрирую из BoneCP в HikariCP.В BoneCP есть следующая опция:

# If true, issue a reset (rollback) on connection close in case client forgot it.
resetConnectionOnClose=true

Каково поведение HikariCP в этом сценарии, когда соединение закрывается без явного подтверждения / отката транзакции?Я не нашел эквивалентной опции конфигурации.

Спасибо, Габ

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Я нашел свой ответ в кодовом источнике com.zaxxer.hikari.pool.ProxyConnection. В методе close() есть следующий код:

if (this.isCommitStateDirty && !this.isAutoCommit) {
    this.delegate.rollback();
    this.lastAccess = ClockSource.currentTime();
    LOGGER.debug("{} - Executed rollback on connection {} due to dirty commit state on close().", this.poolEntry.getPoolName(), this.delegate);
}

, таким образом, если у вас не включена опция конфигурации autoCommit, и вы явно не зафиксировали / откатите, тогда откат для вас.

0 голосов
/ 25 июня 2019

Я не проверял, но в основном HikariPool вызов close метод для Соединение , поэтому, похоже, что это зависит от реализации драйвера

ЭтоНастоятельно рекомендуется, чтобы приложение явно зафиксировало или откатило активную транзакцию до вызова метода close.Если вызывается метод close и существует активная транзакция, результаты определяются реализацией.

...