use of com.hazelcast.simulator.coordinator.registry.WorkerData in project hazelcast-simulator by hazelcast.
the class KillWorkersTask method awaitTermination.
private void awaitTermination(List<WorkerData> victims) {
Set<WorkerData> aliveVictims = new HashSet<WorkerData>(victims);
long deadlineSeconds = currentTimeSeconds() + workerShutdownTimeoutSeconds;
for (; ; ) {
Iterator<WorkerData> it = aliveVictims.iterator();
while (it.hasNext()) {
WorkerData victim = it.next();
if (registry.findWorker(victim.getAddress()) == null) {
result.add(victim);
it.remove();
}
}
if (aliveVictims.isEmpty()) {
LOGGER.info(format("Killing of workers [%s] success", toAddressString(victims)));
break;
}
long remainingSeconds = deadlineSeconds - currentTimeSeconds();
if (remainingSeconds <= 0) {
LOGGER.info(format("Killing of %s workers failed, following failed to terminate [%s]", aliveVictims.size(), toAddressString(aliveVictims)));
break;
}
LOGGER.info(format("Waiting for [%s] to die", toAddressString(aliveVictims)));
sleepSeconds(min(remainingSeconds, CHECK_INTERVAL_SECONDS));
}
}
use of com.hazelcast.simulator.coordinator.registry.WorkerData in project hazelcast-simulator by hazelcast.
the class TerminateWorkersTask method run0.
private void run0() throws TimeoutException, InterruptedException, ExecutionException {
int currentWorkerCount = registry.workerCount();
if (currentWorkerCount == 0) {
return;
}
LOGGER.info(format("Terminating %d Workers...", currentWorkerCount));
client.invokeOnAllAgents(new StopTimeoutDetectionOperation(), MINUTES.toMillis(1));
// prevent any failures from being printed due to killing the members.
Set<WorkerData> clients = new HashSet<WorkerData>();
Set<WorkerData> members = new HashSet<WorkerData>();
for (WorkerData worker : registry.getWorkers()) {
worker.setIgnoreFailures(true);
if (worker.getParameters().getWorkerType().equals("member")) {
members.add(worker);
} else {
clients.add(worker);
}
}
// first shut down all clients
for (WorkerData worker : clients) {
client.send(worker.getAddress(), new TerminateWorkerOperation(true));
}
// wait some if there were any clients
if (!clients.isEmpty()) {
sleepSeconds(simulatorProperties.getMemberWorkerShutdownDelaySeconds());
}
// and then terminate all members
for (WorkerData worker : members) {
client.send(worker.getAddress(), new TerminateWorkerOperation(true));
}
// now we wait for the workers to die
waitForWorkerShutdown(currentWorkerCount);
}
use of com.hazelcast.simulator.coordinator.registry.WorkerData in project hazelcast-simulator by hazelcast.
the class StartWorkersTaskTest method assertComponentRegistry.
private static void assertComponentRegistry(Registry registry, int expectedMemberCount, int expectedClientCount) {
int actualMemberCount = 0;
int actualClientCount = 0;
for (WorkerData workerData : registry.getWorkers()) {
if (workerData.isMemberWorker()) {
actualMemberCount++;
} else {
actualClientCount++;
}
}
assertEquals(expectedMemberCount, actualMemberCount);
assertEquals(expectedClientCount, actualClientCount);
}
Aggregations