Вчера я наткнулся на HikariCP и провел всю ночь, изучая его. Я действительно впечатлен количеством деталей и усилий, поставленных в тонкой настройке его реализации и дизайна.
Прямо в точку, я не мог определить, как она на самом деле имеет дело с соединениями, которые проверяются обратно в пул с их autoCommit
, установленными на false
, в то время как на них не выдаются commit()
и rollback()
, например, из-за исключения. Это потенциально может стать источником многих серьезных транзакционных проблем для следующего реквестера, ожидающего нового соединения, но, к сожалению, получает это соединение со своим обвисшим состоянием транзакции.
В то время как у C3P0 и Tomcat JDBC-пула есть некоторые из этих так называемых Ручек для этой самой цели (через конфигурацию или перехват), я не смог найти ничего в документации или группе поддержки HikariCP. Пожалуйста, поправьте меня, если я ошибаюсь, но написание простого unit test показало мне, что пул ничего не делает по этому поводу.
Мне нужно знать, действительно ли это наблюдение правильно, и я ничего не пропустил. Кроме того, если есть какой-либо план для решения этой проблемы в HikariCP, так как это важно для меня.
Спасибо.