[hibernate-dev] Sessions sharing Connections

Scott Marlow smarlow at redhat.com
Mon Mar 19 10:51:50 EDT 2012


Which SPIs would change?  JdbcCoordinator and TransactionCoordinator?

How do we get into the situation of having 2 sessions share a JDBC 
connection?  Does this impact both JPA and Hibernate native based 
applications?

On 03/16/2012 09:27 AM, Steve Ebersole wrote:
> Reference https://hibernate.onjira.com/browse/HHH-7020 and
> https://hibernate.onjira.com/browse/HHH-7090...
>
> Essentially, having 2 sessions share a JDBC connection is currently
> broken.  Adam, Lukasz and I discussed this on the mailing list a few
> months ago and Shawn has been helping me investigating the last few
> days.  The solution end solution is to have the 2 sessions share both
> the TransactionCoordinator and LogicalConnection, but use separate
> JdbcCoordinators.
>
> We could get away with them sharing a JdbcCoordinator as well, but that
> opens up (slight) potential concurrency issues if the 2 sessions are
> used concurrently.  The concurrency issues here are not on the same
> level as those if using a session concurrently.  Mainly JdbcCoordinator
> manages the "current JDBC batch" if the session is using JDBC statement
> batching.  Concurrent access could mean batch circumvention (aka, 1
> statement executed in the batch instead of the batch size) if both
> sessions are performing writes concurrently.
>
> All the above is a bit specific, but the ultimate question/decision here
> is that in order to not reuse JdbcCoordinators requires *major* SPI
> changes.  Basically we need to invert the relationship between
> JdbcCoordinator and TransactionCoordinator.  Currently Session holds a
> TransactionCoordinator and that TransactionCoordinator is responsible
> for managing the JdbcCoordinator.  The "proper" change would require
> that instead Session hold a JdbcCoordinator which is responsible for
> managing a TransactionCoordinator.
>
> A consideration here is that these are SPIs and should not really be
> changing between point releases.  But another thing to consider is that
> these particular SPIs were added in 4.0, so they are relatively new, and
> that, in this particular case at least, they are just plain wrong.
>
> What do y'all think between these 2 options?
>




More information about the hibernate-dev mailing list