Artifact that contains the org.jboss:jboss-transaction-spi (WildFly is
currently using version 7.5.0.Final of this artifact).

On Thu, Jan 26, 2017 at 9:28 AM, Scott Marlow <smar...@redhat.com> wrote:
> Hi,
>
> [1] is an example of how the WildFly JPA container is ensuring that
> the background (transaction manager) reaper (transaction timeout)
> thread does not cause EntityManager.close() to be called, while the
> application is actively executing calls to EntityManager.*().
>
> The idea, as suggested by Tom Jenkinson, is to track when the
> application (container) calls transaction.commit/rollback.  We also
> register a Synchronization.  When we detect that
> transaction.commit/rollback and the Synchronization.afterCompletion
> have both been called, it is safe to perform the EntityManager clean
> up action, as we know that only one thread will then be invoking the
> EntityManager.close().
>
> From a state point of view, please look at how [2] is checking for the
> EventType.DISASSOCIATING event, which means that
> transaction.rollback/commit was called by the application.  If the
> Synchronization.afterCompletion has already run as well, then we clean
> up the EntityManager, otherwise, we defer the cleanup action until the
> call to Synchronization.afterCompletion occurs.
>
> Also see [3] which contains the recommendation of using the above solution.
>
> Scott
>
> [1] 
> https://github.com/wildfly/wildfly/blob/master/jpa/subsystem/src/main/java/org/jboss/as/jpa/transaction/TransactionUtil.java#L146
>
> [2] 
> https://github.com/wildfly/wildfly/blob/master/jpa/subsystem/src/main/java/org/jboss/as/jpa/transaction/TransactionUtil.java#L197
>
> [3] https://developer.jboss.org/message/919807
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to