use of com.hazelcast.internal.locksupport.operations.IsLockedOperation in project hazelcast by hazelcast.
the class Invocation_BlockingTest method sync_whenHeartbeatTimeout.
// ============================ heartbeat timeout =============================================================================
//
// ===========================================================================================================================
@Test
public void sync_whenHeartbeatTimeout() {
int callTimeout = 5000;
Config config = new Config().setProperty(OPERATION_CALL_TIMEOUT_MILLIS.getName(), "" + callTimeout);
TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
HazelcastInstance local = factory.newHazelcastInstance(config);
HazelcastInstance remote = factory.newHazelcastInstance(config);
warmUpPartitions(factory.getAllHazelcastInstances());
NodeEngineImpl nodeEngine = getNodeEngineImpl(local);
String key = generateKeyOwnedBy(remote);
int partitionId = nodeEngine.getPartitionService().getPartitionId(key);
// first we execute an operation that stall the partition.
OperationServiceImpl opService = nodeEngine.getOperationService();
opService.invokeOnPartition(null, new SlowOperation(5 * callTimeout), partitionId);
// then we execute a lock operation that won't be executed because the partition is blocked.
LockOperation op = new LockOperation(new DistributedObjectNamespace(SERVICE_NAME, key), nodeEngine.toData(key), 1, -1, -1);
InternalCompletableFuture<Object> future = opService.createInvocationBuilder(null, op, partitionId).setCallTimeout(callTimeout).invoke();
try {
future.joinInternal();
fail("Invocation should failed with timeout!");
} catch (OperationTimeoutException expected) {
ignore(expected);
}
IsLockedOperation isLockedOperation = new IsLockedOperation(new DistributedObjectNamespace(SERVICE_NAME, key), nodeEngine.toData(key), 1);
Boolean isLocked = (Boolean) opService.createInvocationBuilder(null, isLockedOperation, partitionId).setCallTimeout(10 * callTimeout).invoke().join();
assertFalse(isLocked);
}
use of com.hazelcast.internal.locksupport.operations.IsLockedOperation in project hazelcast by hazelcast.
the class LockProxySupport method isLocked.
public boolean isLocked(NodeEngine nodeEngine, Data key) {
IsLockedOperation operation = new IsLockedOperation(namespace, key);
InternalCompletableFuture<Boolean> f = invoke(nodeEngine, operation, key);
return f.joinInternal();
}
Aggregations