Search in sources :

Example 6 with SerializableXID

use of com.hazelcast.transaction.impl.xa.SerializableXID in project hazelcast by hazelcast.

the class HazelcastXATest method testRecovery.

@Test
public void testRecovery() throws Exception {
    TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(4);
    HazelcastInstance instance1 = factory.newHazelcastInstance();
    HazelcastInstance instance2 = factory.newHazelcastInstance();
    HazelcastInstance instance3 = factory.newHazelcastInstance();
    HazelcastXAResource xaResource = instance1.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);
    instance1.shutdown();
    instance1 = factory.newHazelcastInstance();
    xaResource = instance1.getXAResource();
    Xid[] recovered = xaResource.recover(0);
    for (Xid xid : recovered) {
        xaResource.commit(xid, false);
    }
    assertEquals("value", instance2.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) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) HazelcastXAResource(com.hazelcast.transaction.HazelcastXAResource) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 7 with SerializableXID

use of com.hazelcast.transaction.impl.xa.SerializableXID in project hazelcast by hazelcast.

the class XAResourceProxy method recover.

@Override
public Xid[] recover(int flag) throws XAException {
    ClientMessage request = XATransactionCollectTransactionsCodec.encodeRequest();
    ClientMessage response = invoke(request);
    Collection<Data> list = XATransactionCollectTransactionsCodec.decodeResponse(response).response;
    SerializableXID[] xidArray = new SerializableXID[list.size()];
    SerializationService serializationService = getContext().getSerializationService();
    int index = 0;
    for (Data xidData : list) {
        xidArray[index++] = serializationService.toObject(xidData);
    }
    return xidArray;
}
Also used : SerializableXID(com.hazelcast.transaction.impl.xa.SerializableXID) SerializationService(com.hazelcast.spi.serialization.SerializationService) Data(com.hazelcast.nio.serialization.Data) ClientMessage(com.hazelcast.client.impl.protocol.ClientMessage)

Aggregations

SerializableXID (com.hazelcast.transaction.impl.xa.SerializableXID)7 Data (com.hazelcast.nio.serialization.Data)4 ClientMessage (com.hazelcast.client.impl.protocol.ClientMessage)3 SerializationService (com.hazelcast.spi.serialization.SerializationService)3 HazelcastXAResource (com.hazelcast.transaction.HazelcastXAResource)3 TransactionContext (com.hazelcast.transaction.TransactionContext)3 Xid (javax.transaction.xa.Xid)3 HazelcastInstance (com.hazelcast.core.HazelcastInstance)2 Test (org.junit.Test)2 NodeEngine (com.hazelcast.spi.NodeEngine)1 SerializableList (com.hazelcast.spi.impl.SerializableList)1 TestHazelcastInstanceFactory (com.hazelcast.test.TestHazelcastInstanceFactory)1 QuickTest (com.hazelcast.test.annotation.QuickTest)1 SlowTest (com.hazelcast.test.annotation.SlowTest)1 XAService (com.hazelcast.transaction.impl.xa.XAService)1 ArrayList (java.util.ArrayList)1 XAException (javax.transaction.xa.XAException)1