use of com.hazelcast.cp.internal.datastructures.countdownlatch.CountDownLatchService in project hazelcast by hazelcast.
the class AwaitOp method run.
@Override
public Object run(CPGroupId groupId, long commitIndex) {
CountDownLatchService service = getService();
AwaitInvocationKey key = new AwaitInvocationKey(commitIndex, invocationUid, callerAddress, callId);
if (service.await(groupId, name, key, timeoutMillis)) {
return true;
}
return timeoutMillis > 0 ? PostponedResponse.INSTANCE : false;
}
use of com.hazelcast.cp.internal.datastructures.countdownlatch.CountDownLatchService in project hazelcast by hazelcast.
the class CPSubsystemInfoCollector method forEachMetric.
@Override
public void forEachMetric(Node node, BiConsumer<PhoneHomeMetrics, String> metricsConsumer) {
int cpMemberCount = node.getNodeEngine().getConfig().getCPSubsystemConfig().getCPMemberCount();
boolean cpSubsystemEnabled = cpMemberCount != 0;
metricsConsumer.accept(PhoneHomeMetrics.CP_SUBSYSTEM_ENABLED, String.valueOf(cpSubsystemEnabled));
if (cpSubsystemEnabled) {
metricsConsumer.accept(PhoneHomeMetrics.CP_MEMBERS_COUNT, String.valueOf(cpMemberCount));
RaftService raftService = node.getNodeEngine().getService(RaftService.SERVICE_NAME);
int groupsCount = raftService.getMetadataGroupManager().getGroupIds().size();
metricsConsumer.accept(PhoneHomeMetrics.CP_GROUPS_COUNT, String.valueOf(groupsCount));
SemaphoreService semaphoreService = node.getNodeEngine().getService(SemaphoreService.SERVICE_NAME);
int semaphoresCount = semaphoreService.getTotalResourcesCount();
metricsConsumer.accept(PhoneHomeMetrics.CP_SEMAPHORES_COUNT, String.valueOf(semaphoresCount));
CountDownLatchService clService = node.getNodeEngine().getService(CountDownLatchService.SERVICE_NAME);
int clCount = clService.getTotalResourcesCount();
metricsConsumer.accept(PhoneHomeMetrics.CP_COUNTDOWN_LATCHES_COUNT, String.valueOf(clCount));
LockService lockService = node.getNodeEngine().getService(LockService.SERVICE_NAME);
int locksCount = lockService.getTotalResourcesCount();
metricsConsumer.accept(PhoneHomeMetrics.CP_FENCED_LOCKS_COUNT, String.valueOf(locksCount));
AtomicLongService atomicLongService = node.getNodeEngine().getService(AtomicLongService.SERVICE_NAME);
int atomicLongsCount = atomicLongService.getAtomicValuesCount();
metricsConsumer.accept(PhoneHomeMetrics.CP_ATOMIC_LONGS_COUNT, String.valueOf(atomicLongsCount));
AtomicRefService atomicRefService = node.getNodeEngine().getService(AtomicRefService.SERVICE_NAME);
int atomicRefsCount = atomicRefService.getAtomicValuesCount();
metricsConsumer.accept(PhoneHomeMetrics.CP_ATOMIC_REFS_COUNT, String.valueOf(atomicRefsCount));
}
}
use of com.hazelcast.cp.internal.datastructures.countdownlatch.CountDownLatchService in project hazelcast by hazelcast.
the class CountDownLatchLongAwaitClientTest method when_awaitDurationIsLongerThanOperationTimeout_then_invocationFromClientWaits.
@Test
public void when_awaitDurationIsLongerThanOperationTimeout_then_invocationFromClientWaits() throws ExecutionException, InterruptedException {
ICountDownLatch latch = client.getCPSubsystem().getCountDownLatch(proxyName);
HazelcastInstance instance = getLeaderInstance(instances, groupId);
latch.trySetCount(1);
Future<Boolean> f = spawn(() -> latch.await(5, TimeUnit.MINUTES));
assertTrueEventually(() -> {
CountDownLatchService service = getNodeEngineImpl(instance).getService(CountDownLatchService.SERVICE_NAME);
assertFalse(service.getLiveOperations(groupId).isEmpty());
});
assertTrueAllTheTime(() -> {
CountDownLatchService service = getNodeEngineImpl(instance).getService(CountDownLatchService.SERVICE_NAME);
assertFalse(service.getLiveOperations(groupId).isEmpty());
}, callTimeoutSeconds + 5);
latch.countDown();
assertCompletesEventually(f);
assertTrue(f.get());
}
Aggregations