use of com.hazelcast.transaction.impl.TransactionManagerServiceImpl in project hazelcast by hazelcast.
the class TransactionCreateMessageTask method innerCall.
@Override
protected Object innerCall() throws Exception {
TransactionOptions options = new TransactionOptions();
options.setDurability(parameters.durability);
options.setTimeout(parameters.timeout, TimeUnit.MILLISECONDS);
options.setTransactionType(TransactionOptions.TransactionType.getByValue(parameters.transactionType));
TransactionManagerServiceImpl transactionManager = (TransactionManagerServiceImpl) clientEngine.getTransactionManagerService();
TransactionContext context = transactionManager.newClientTransactionContext(options, endpoint.getUuid());
context.beginTransaction();
endpoint.setTransactionContext(context);
return context.getTxnId();
}
use of com.hazelcast.transaction.impl.TransactionManagerServiceImpl in project hazelcast by hazelcast.
the class AdvancedClusterStateTest method changeClusterState_shouldFail_withoutBackup_whenInitiatorDies_beforePrepare.
@Test
public void changeClusterState_shouldFail_withoutBackup_whenInitiatorDies_beforePrepare() throws Exception {
final TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(3);
final HazelcastInstance[] instances = factory.newInstances();
final HazelcastInstance hz = instances[instances.length - 1];
TransactionManagerServiceImpl transactionManagerService = spyTransactionManagerService(hz);
TransactionOptions options = new TransactionOptions().setDurability(0).setTimeout(30, TimeUnit.SECONDS);
when(transactionManagerService.newAllowedDuringPassiveStateTransaction(options)).thenAnswer(new TransactionAnswer() {
@Override
protected void beforePrepare() {
terminateInstance(hz);
}
});
try {
hz.getCluster().changeClusterState(ClusterState.FROZEN, options);
fail("This instance is terminated. Cannot commit the transaction!");
} catch (HazelcastInstanceNotActiveException ignored) {
}
assertTrueEventually(new AssertTask() {
@Override
public void run() throws Exception {
assertClusterState(ClusterState.ACTIVE, instances[0], instances[1]);
}
});
}
use of com.hazelcast.transaction.impl.TransactionManagerServiceImpl in project hazelcast by hazelcast.
the class AdvancedClusterStateTest method changeClusterState_shouldNotFail_whenInitiatorDies_afterPrepare.
@Test
public void changeClusterState_shouldNotFail_whenInitiatorDies_afterPrepare() throws Exception {
final TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(3);
final HazelcastInstance[] instances = factory.newInstances();
final HazelcastInstance hz = instances[instances.length - 1];
TransactionManagerServiceImpl transactionManagerService = spyTransactionManagerService(hz);
TransactionOptions options = TransactionOptions.getDefault().setDurability(1);
when(transactionManagerService.newAllowedDuringPassiveStateTransaction(options)).thenAnswer(new TransactionAnswer() {
@Override
protected void afterPrepare() {
terminateInstance(hz);
}
});
try {
hz.getCluster().changeClusterState(ClusterState.FROZEN, options);
fail("This instance is terminated. Cannot commit the transaction!");
} catch (HazelcastInstanceNotActiveException ignored) {
}
assertTrueEventually(new AssertTask() {
@Override
public void run() throws Exception {
assertClusterState(ClusterState.FROZEN, instances[0], instances[1]);
}
});
}
use of com.hazelcast.transaction.impl.TransactionManagerServiceImpl in project hazelcast by hazelcast.
the class AdvancedClusterStateTest method spyTransactionManagerService.
private static TransactionManagerServiceImpl spyTransactionManagerService(HazelcastInstance hz) throws Exception {
NodeEngineImpl nodeEngine = getNode(hz).nodeEngine;
TransactionManagerServiceImpl transactionManagerService = (TransactionManagerServiceImpl) nodeEngine.getTransactionManagerService();
TransactionManagerServiceImpl spiedTransactionManagerService = spy(transactionManagerService);
Field transactionManagerServiceField = NodeEngineImpl.class.getDeclaredField("transactionManagerService");
transactionManagerServiceField.setAccessible(true);
transactionManagerServiceField.set(nodeEngine, spiedTransactionManagerService);
return spiedTransactionManagerService;
}
Aggregations