@Override public TransactionConfiguration get() { TransactionConfigurationBuilder builder = new ConfigurationBuilder().transaction() .lockingMode(this.locking) .cacheStopTimeout(this.timeout) .transactionMode((this.mode == TransactionMode.NONE) ? org.infinispan.transaction.TransactionMode.NON_TRANSACTIONAL : org.infinispan.transaction.TransactionMode.TRANSACTIONAL) .useSynchronization(this.mode == TransactionMode.NON_XA) .recovery().enabled(this.mode == TransactionMode.FULL_XA).transaction() ; switch (this.mode) { case NONE: { break; } case BATCH: { builder.transactionManagerLookup(new TransactionManagerProvider(EmbeddedTransactionManager.getInstance())); break; } case NON_XA: { builder.transactionSynchronizationRegistryLookup(new TransactionSynchronizationRegistryProvider(this.tsrDependency.get())); // fall through } default: { builder.transactionManagerLookup(new TransactionManagerProvider(ContextTransactionManager.getInstance())); } } return builder.create(); } }
private EmbeddedTransaction newTx(Xid xid) { EmbeddedTransaction tx = new EmbeddedTransaction(EmbeddedTransactionManager.getInstance()); tx.setXid(xid); return tx; }
/** * Starts a transaction. * * @return {@code true} if the transaction can be started, {@code false} otherwise. */ public boolean startTransaction() { EmbeddedTransaction tx = new EmbeddedTransaction(EmbeddedTransactionManager.getInstance()); tx.setXid(xid); LocalTransaction localTransaction = transactionTable .getOrCreateLocalTransaction(tx, false, this::newGlobalTransaction); if (createGlobalState(localTransaction.getGlobalTransaction()) != Status.OK) { //no need to rollback. nothing is enlisted in the transaction. transactionTable.removeLocalTransaction(localTransaction); return false; } else { this.tx = tx; this.localTxInvocationContext = new LocalTxInvocationContext(localTransaction); perCacheTxTable.createLocalTx(xid, tx); transactionTable.enlistClientTransaction(tx, localTransaction); return true; } }
try { Fqn fqn = Generator.getRandomElement(fqns); EmbeddedTransactionManager.getInstance().begin(); cache.get(fqn, "key"); EmbeddedTransactionManager.getInstance().commit(); EmbeddedTransactionManager.getInstance().begin(); cache.put(fqn, "key", "Value"); EmbeddedTransactionManager.getInstance().commit(); EmbeddedTransactionManager.getInstance().begin(); cache.remove(fqn, "key"); EmbeddedTransactionManager.getInstance().commit();
private void doAfterCompletionFailTest(Collection<RegisterTransaction> registerTransactionCollection) throws Exception { EmbeddedTransactionManager transactionManager = EmbeddedTransactionManager.getInstance(); transactionManager.begin(); for (RegisterTransaction registerTransaction : registerTransactionCollection) { registerTransaction.register(transactionManager); } transactionManager.commit(); assertData(); assertNoTxInAllCaches(); assertNull(transactionManager.getTransaction()); }
private void doCommitWithRollbackExceptionTest(Collection<RegisterTransaction> registerTransactionCollection) throws Exception { EmbeddedTransactionManager transactionManager = EmbeddedTransactionManager.getInstance(); transactionManager.begin(); for (RegisterTransaction registerTransaction : registerTransactionCollection) { registerTransaction.register(transactionManager); } try { transactionManager.commit(); AssertJUnit.fail("RollbackException expected!"); } catch (RollbackException e) { //expected } assertEmpty(); assertNoTxInAllCaches(); assertNull(transactionManager.getTransaction()); }
private void doCommitWithHeuristicExceptionTest(Collection<RegisterTransaction> registerTransactionCollection) throws Exception { EmbeddedTransactionManager transactionManager = EmbeddedTransactionManager.getInstance(); transactionManager.begin(); for (RegisterTransaction registerTransaction : registerTransactionCollection) { registerTransaction.register(transactionManager); } try { transactionManager.commit(); AssertJUnit.fail("HeuristicMixedException expected!"); } catch (HeuristicMixedException e) { //expected } assertData(); assertNoTxInAllCaches(); assertNull(transactionManager.getTransaction()); }
private void doRollbackWithHeuristicExceptionTest(Collection<RegisterTransaction> registerTransactionCollection) throws Exception { EmbeddedTransactionManager transactionManager = EmbeddedTransactionManager.getInstance(); transactionManager.begin(); for (RegisterTransaction registerTransaction : registerTransactionCollection) { registerTransaction.register(transactionManager); } try { transactionManager.rollback(); AssertJUnit.fail("SystemException expected!"); } catch (SystemException e) { //expected } assertEmpty(); assertNoTxInAllCaches(); assertNull(transactionManager.getTransaction()); }
public void testReadOnlyResource() throws Exception { //test for ISPN-2813 EmbeddedTransactionManager transactionManager = EmbeddedTransactionManager.getInstance(); transactionManager.begin(); cacheManager.<String, String>getCache(SYNC_CACHE_NAME).put(KEY, VALUE); cacheManager.<String, String>getCache(XA_CACHE_NAME).put(KEY, VALUE); transactionManager.getTransaction().enlistResource(new ReadOnlyXaResource()); transactionManager.commit(); assertData(); assertNoTxInAllCaches(); assertNull(transactionManager.getTransaction()); }
@Override public TransactionConfiguration get() { TransactionConfigurationBuilder builder = new ConfigurationBuilder().transaction() .lockingMode(this.locking) .cacheStopTimeout(this.timeout) .transactionMode((this.mode == TransactionMode.NONE) ? org.infinispan.transaction.TransactionMode.NON_TRANSACTIONAL : org.infinispan.transaction.TransactionMode.TRANSACTIONAL) .useSynchronization(this.mode == TransactionMode.NON_XA) .recovery().enabled(this.mode == TransactionMode.FULL_XA).transaction() ; switch (this.mode) { case NONE: { break; } case BATCH: { builder.transactionManagerLookup(new TransactionManagerProvider(EmbeddedTransactionManager.getInstance())); break; } case NON_XA: { builder.transactionSynchronizationRegistryLookup(new TransactionSynchronizationRegistryProvider(this.tsrDependency.get())); // fall through } default: { builder.transactionManagerLookup(new TransactionManagerProvider(ContextTransactionManager.getInstance())); } } return builder.create(); } }