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"));
}
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]);
}
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);
}
}
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);
}
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);
}
Aggregations