@Override public TransactionCoordinator getTransactionCoordinator() { return delegate.getTransactionCoordinator(); }
@Override public void doAction(boolean successful, SessionImplementor session) { if ( session.isClosed() ) { log.trace( "Session was closed; nothing to do" ); return; } if ( !successful && session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta() ) { session.clear(); } } }
private void completeStrayTransaction() { if ( session == null ) { // nothing to do return; } if ( ( (SessionImplementor) session ).isClosed() ) { // nothing to do return; } if ( !session.isConnected() ) { // nothing to do return; } final TransactionCoordinator.TransactionDriver tdc = ( (SessionImplementor) session ).getTransactionCoordinator().getTransactionDriverControl(); if ( tdc.getStatus().canRollback() ) { session.getTransaction().rollback(); } session.close(); }
if ( !session.getTransactionCoordinator().isActive() ) { log.debug( "Skipping envers transaction hook due to non-active (most likely marked-rollback-only) transaction" ); return;
private void completeStrayTransaction() { if ( session == null ) { // nothing to do return; } if ( ( (SessionImplementor) session ).isClosed() ) { // nothing to do return; } if ( !session.isConnected() ) { // nothing to do return; } final TransactionCoordinator.TransactionDriver tdc = ( (SessionImplementor) session ).getTransactionCoordinator().getTransactionDriverControl(); if ( tdc.getStatus().canRollback() ) { session.getTransaction().rollback(); } }
@Test @TestForIssue( jiraKey = "HHH-9859" ) public void testExpectations() { // JPA spec is very vague on what should happen here. It does vaguely // imply that javax.persistence.EntityManager.joinTransaction() should only be used // for JTA EMs, however it does not enforced that nor does the TCK check that. // And the TCK in fact does test calls to javax.persistence.EntityManager.isJoinedToTransaction() // from resource-local EMs, so lets make sure those work.. Session session = sessionFactory().openSession(); JdbcResourceLocalTransactionCoordinatorImpl tc = ExtraAssertions.assertTyping( JdbcResourceLocalTransactionCoordinatorImpl.class, ( (SessionImplementor) session ).getTransactionCoordinator() ); assertFalse( tc.isJoined() ); session.beginTransaction(); tc = ExtraAssertions.assertTyping( JdbcResourceLocalTransactionCoordinatorImpl.class, ( (SessionImplementor) session ).getTransactionCoordinator() ); assertTrue( tc.isJoined() ); session.getTransaction().rollback(); session.close(); } }
sf, session-> { final TransactionCoordinator coordinator = session.getTransactionCoordinator();
sf, session -> { final TransactionCoordinator coordinator = session.getTransactionCoordinator();
@Test public void basicUsageTest() { try ( final SessionFactoryImplementor sf = generateSessionFactory() ) { inSession( sf, session-> { final TransactionCoordinator coordinator = session.getTransactionCoordinator(); final SynchronizationCollectorImpl sync = new SynchronizationCollectorImpl(); coordinator.getLocalSynchronizations() .registerSynchronization( sync ); coordinator.getTransactionDriverControl().begin(); assertEquals( 0, sync.getBeforeCompletionCount() ); assertEquals( 0, sync.getSuccessfulCompletionCount() ); assertEquals( 0, sync.getFailedCompletionCount() ); coordinator.getTransactionDriverControl().commit(); assertEquals( 1, sync.getBeforeCompletionCount() ); assertEquals( 1, sync.getSuccessfulCompletionCount() ); assertEquals( 0, sync.getFailedCompletionCount() ); } ); } }
private boolean isLocalTransaction(SessionImplementor sessionImplementor) { return !sessionImplementor .getTransactionCoordinator() .getTransactionCoordinatorBuilder() .isJta(); }
@Override public TransactionCoordinatorAccess getTransactionCoordinator(Object session) { return session == null ? null : new TransactionCoordinatorAccessImpl(unwrap(session).getTransactionCoordinator()); }
@Override public SessionImplementor wrapSession(SessionImplementor session, DbmsDialect dbmsDialect, String[][] columns, int[] returningSqlTypes, HibernateReturningResult<?> returningResult) { TransactionCoordinator transactionCoordinator = session.getTransactionCoordinator(); JdbcCoordinator jdbcCoordinator = transactionCoordinator.getJdbcCoordinator(); Object jdbcCoordinatorProxy = Proxy.newProxyInstance(jdbcCoordinator.getClass().getClassLoader(), new Class[]{ JdbcCoordinator.class }, new JdbcCoordinatorInvocationHandler(jdbcCoordinator, new StatementPreparerImpl(jdbcCoordinator, session.getFactory(), dbmsDialect, columns, returningSqlTypes, returningResult))); Object transactionCoordinatorProxy = Proxy.newProxyInstance(transactionCoordinator.getClass().getClassLoader(), new Class[]{ TransactionCoordinator.class }, new Hibernate43TransactionCoordinatorInvocationHandler(transactionCoordinator, jdbcCoordinatorProxy)); Object sessionProxy = Proxy.newProxyInstance(session.getClass().getClassLoader(), new Class[]{ SessionImplementor.class, EventSource.class }, new Hibernate43SessionInvocationHandler(session, transactionCoordinatorProxy)); return (SessionImplementor) sessionProxy; }
private void executeActions(List list) throws HibernateException { for ( Object aList : list ) { execute( (Executable) aList ); } list.clear(); session.getTransactionCoordinator().getJdbcCoordinator().executeBatch(); }
protected PreparedStatement prepare(String insertSQL, SessionImplementor session) throws SQLException { return session.getTransactionCoordinator() .getJdbcCoordinator() .getStatementPreparer() .prepareStatement( insertSQL, PreparedStatement.RETURN_GENERATED_KEYS ); }
protected PreparedStatement prepare(String insertSQL, SessionImplementor session) throws SQLException { return session.getTransactionCoordinator() .getJdbcCoordinator() .getStatementPreparer() .prepareStatement( insertSQL, PreparedStatement.RETURN_GENERATED_KEYS ); }
protected PreparedStatement prepare(String insertSQL, SessionImplementor session) throws SQLException { return session.getTransactionCoordinator() .getJdbcCoordinator() .getStatementPreparer() .prepareStatement( insertSQL, PreparedStatement.NO_GENERATED_KEYS ); }
@Override public void checkTransactionSynchStatus(SessionImplementor session) { TransactionCoordinator coordinator = session.getTransactionCoordinator(); coordinator.pulse(); if (coordinator instanceof JtaTransactionCoordinatorImpl) { ((JtaTransactionCoordinatorImpl) coordinator).getSynchronizationCallbackCoordinator().processAnyDelayedAfterCompletion(); } }
@Override public IntegralDataTypeHolder getNextValue() { return session.getTransactionCoordinator().getTransaction().createIsolationDelegate().delegateWork(abstractReturningWork, true); } };
@Override public void afterTransaction(SessionImplementor session, boolean success) { TransactionCoordinator coordinator = session.getTransactionCoordinator(); if (!session.isTransactionInProgress() ) { session.getJdbcCoordinator().afterTransaction(); } if (coordinator instanceof JtaTransactionCoordinatorImpl) { ((JtaTransactionCoordinatorImpl) coordinator).getSynchronizationCallbackCoordinator().processAnyDelayedAfterCompletion(); } }
@Override public void afterTransaction(SessionImplementor session, boolean success) { TransactionCoordinator coordinator = session.getTransactionCoordinator(); if (!session.isTransactionInProgress() ) { session.getJdbcCoordinator().afterTransaction(); } if (coordinator instanceof JtaTransactionCoordinatorImpl) { ((JtaTransactionCoordinatorImpl) coordinator).getSynchronizationCallbackCoordinator().processAnyDelayedAfterCompletion(); } }