Search in sources :

Example 26 with Xid

use of javax.transaction.xa.Xid in project hazelcast by hazelcast.

the class ClientXATest method testRecovery.

@Test
public void testRecovery() throws Exception {
    HazelcastInstance instance = Hazelcast.newHazelcastInstance();
    Hazelcast.newHazelcastInstance();
    Hazelcast.newHazelcastInstance();
    HazelcastXAResource xaResource = instance.getXAResource();
    Xid myXid = new SerializableXID(42, "globalTransactionId".getBytes(), "branchQualifier".getBytes());
    xaResource.start(myXid, 0);
    TransactionContext context1 = xaResource.getTransactionContext();
    TransactionalMap<Object, Object> map = context1.getMap("map");
    map.put("key", "value");
    xaResource.prepare(myXid);
    instance.shutdown();
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    HazelcastXAResource clientXaResource = client.getXAResource();
    Xid[] recovered = clientXaResource.recover(0);
    for (Xid xid : recovered) {
        clientXaResource.commit(xid, false);
    }
    assertEquals("value", client.getMap("map").get("key"));
}
Also used : Xid(javax.transaction.xa.Xid) SerializableXID(com.hazelcast.transaction.impl.xa.SerializableXID) HazelcastInstance(com.hazelcast.core.HazelcastInstance) TransactionContext(com.hazelcast.transaction.TransactionContext) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) Test(org.junit.Test) SlowTest(com.hazelcast.test.annotation.SlowTest)

Example 27 with Xid

use of javax.transaction.xa.Xid in project voltdb by VoltDB.

the class JDBCXADataSource method getPreparedXids.

/**
     * Return the list of transactions currently <I>in prepared or
     * heuristically completed states</I>.
     * Need to find out what non-prepared states they are considering
     * <I>heuristically completed</I>.
     *
     * @see javax.transaction.xa.XAResource#recover(int)
     */
Xid[] getPreparedXids() {
    Iterator it = resources.keySet().iterator();
    Xid curXid;
    HashSet preparedSet = new HashSet();
    while (it.hasNext()) {
        curXid = (Xid) it.next();
        if (((JDBCXAResource) resources.get(curXid)).state == JDBCXAResource.XA_STATE_PREPARED) {
            preparedSet.add(curXid);
        }
    }
    return (Xid[]) preparedSet.toArray(new Xid[0]);
}
Also used : Xid(javax.transaction.xa.Xid) Iterator(org.hsqldb_voltpatches.lib.Iterator) HashSet(org.hsqldb_voltpatches.lib.HashSet)

Example 28 with Xid

use of javax.transaction.xa.Xid in project aries by apache.

the class LogConversionTest method transaction.

private void transaction(HOWLLog log, int transactionBranchCount, boolean commit) throws Exception {
    Xid xid = xidFactory.createXid();
    List<TransactionBranchInfo> txBranches = new LinkedList<TransactionBranchInfo>();
    for (int b = 1; b <= transactionBranchCount; b++) {
        // TransactionImpl.enlistResource()
        Xid branchXid = xidFactory.createBranch(xid, b);
        txBranches.add(new TestTransactionBranchInfo(branchXid, String.format("res-%02d", b)));
    }
    // org.apache.geronimo.transaction.manager.TransactionImpl.internalPrepare()
    Object logMark = log.prepare(xid, txBranches);
    if (commit) {
        // org.apache.geronimo.transaction.manager.CommitTask.run()
        log.commit(xid, logMark);
    }
}
Also used : Xid(javax.transaction.xa.Xid) TransactionBranchInfo(org.apache.geronimo.transaction.manager.TransactionBranchInfo) LinkedList(java.util.LinkedList)

Example 29 with Xid

use of javax.transaction.xa.Xid in project aries by apache.

the class TransactionContextTest method testSingleXAResource.

@Test
public void testSingleXAResource() throws Exception {
    ctx.registerXAResource(xaResource, null);
    Mockito.doAnswer(i -> {
        assertEquals(COMMITTING, ctx.getTransactionStatus());
        return null;
    }).when(xaResource).commit(Mockito.any(Xid.class), Mockito.eq(true));
    ctx.finish();
    ArgumentCaptor<Xid> captor = ArgumentCaptor.forClass(Xid.class);
    InOrder inOrder = Mockito.inOrder(xaResource);
    inOrder.verify(xaResource).start(captor.capture(), Mockito.eq(XAResource.TMNOFLAGS));
    inOrder.verify(xaResource).setTransactionTimeout(Mockito.anyInt());
    inOrder.verify(xaResource).end(Mockito.eq(captor.getValue()), Mockito.eq(XAResource.TMSUCCESS));
    inOrder.verify(xaResource).commit(Mockito.eq(captor.getValue()), Mockito.eq(true));
    Mockito.verifyNoMoreInteractions(xaResource);
}
Also used : Xid(javax.transaction.xa.Xid) InOrder(org.mockito.InOrder) Test(org.junit.Test)

Example 30 with Xid

use of javax.transaction.xa.Xid in project aries by apache.

the class TransactionContextTest method testXAResourcePostCommitException.

@Test
public void testXAResourcePostCommitException() throws Exception {
    ctx.registerXAResource(xaResource, null);
    Mockito.doAnswer(i -> {
        assertEquals(COMMITTING, ctx.getTransactionStatus());
        return null;
    }).when(xaResource).commit(Mockito.any(Xid.class), Mockito.eq(true));
    ctx.postCompletion(i -> {
        assertEquals(COMMITTED, ctx.getTransactionStatus());
        throw new IllegalArgumentException();
    });
    ctx.finish();
    ArgumentCaptor<Xid> captor = ArgumentCaptor.forClass(Xid.class);
    InOrder inOrder = Mockito.inOrder(xaResource);
    inOrder.verify(xaResource).start(captor.capture(), Mockito.eq(XAResource.TMNOFLAGS));
    inOrder.verify(xaResource).setTransactionTimeout(Mockito.anyInt());
    inOrder.verify(xaResource).end(Mockito.eq(captor.getValue()), Mockito.eq(XAResource.TMSUCCESS));
    inOrder.verify(xaResource).commit(Mockito.eq(captor.getValue()), Mockito.eq(true));
    Mockito.verifyNoMoreInteractions(xaResource);
}
Also used : Xid(javax.transaction.xa.Xid) InOrder(org.mockito.InOrder) Test(org.junit.Test)

Aggregations

Xid (javax.transaction.xa.Xid)63 Test (org.junit.Test)23 XAException (javax.transaction.xa.XAException)19 IOException (java.io.IOException)16 XAResource (javax.transaction.xa.XAResource)13 XidImpl (org.neo4j.kernel.impl.transaction.XidImpl)11 LinkedList (java.util.LinkedList)10 InOrder (org.mockito.InOrder)6 HashMap (java.util.HashMap)5 RelationshipType (org.neo4j.graphdb.RelationshipType)5 HazelcastXAResource (com.hazelcast.transaction.HazelcastXAResource)4 ArrayList (java.util.ArrayList)4 RollbackException (javax.transaction.RollbackException)4 TransactionFailureException (org.neo4j.graphdb.TransactionFailureException)4 XaResource (org.neo4j.kernel.impl.transaction.xaframework.XaResource)4 TransactionContext (com.hazelcast.transaction.TransactionContext)3 SerializableXID (com.hazelcast.transaction.impl.xa.SerializableXID)3 SystemException (javax.transaction.SystemException)3 HazelcastInstance (com.hazelcast.core.HazelcastInstance)2 HashSet (java.util.HashSet)2