private HazelcastInstance getHazelcastInstance() throws Exception { HazelcastInstance instance = null; if (autoCreateHzInstance) { logHeader("Creating " + type + " HazelcastInstance"); if (type.equals(WorkerType.JAVA_CLIENT)) { instance = createClientHazelcastInstance(hzConfigFile); } else { instance = createServerHazelcastInstance(hzConfigFile); } logHeader("Successfully created " + type + " HazelcastInstance"); warmupPartitions(instance); } return instance; }
private void signalStartToAgent() { String address = getHazelcastAddress(type, publicAddress, hazelcastInstance); File file = new File(getUserDir(), "worker.address"); writeText(address, file); }
public static String getHazelcastAddress(WorkerType workerType, String publicAddress, HazelcastInstance hazelcastInstance) { if (hazelcastInstance != null) { InetSocketAddress socketAddress = getInetSocketAddress(hazelcastInstance); if (socketAddress != null) { return socketAddress.getAddress().getHostAddress() + ':' + socketAddress.getPort(); } } return (workerType == WorkerType.MEMBER ? "server:" : "client:") + publicAddress; }
private String loadConfig(RcWorkerStartOperation op, WorkerType workerType, Map<String, String> agentTags) { Map<String, String> env = new HashMap<String, String>(simulatorProperties.asMap()); env.putAll(agentTags); env.putAll(op.getTags()); String config; if (WorkerType.MEMBER.equals(workerType)) { config = initMemberHzConfig( op.getHzConfig() == null ? loadMemberHzConfig() : op.getHzConfig(), componentRegistry, parameters.getLicenseKey(), env, false); } else if (WorkerType.LITE_MEMBER.equals(workerType)) { config = initMemberHzConfig( op.getHzConfig() == null ? loadMemberHzConfig() : op.getHzConfig(), componentRegistry, parameters.getLicenseKey(), env, true); } else if (WorkerType.JAVA_CLIENT.equals(workerType)) { config = initClientHzConfig( op.getHzConfig() == null ? loadClientHzConfig() : op.getHzConfig(), componentRegistry, env, parameters.getLicenseKey()); } else { throw new IllegalStateException("Unrecognized workerType [" + workerType + "]"); } return config; }
@Override public Boolean call() throws Exception { return isOldestMember(hazelcastInstance); } };
public static String initMemberHzConfig(String memberHzConfig, ComponentRegistry componentRegistry, String licenseKey, Map<String, String> env, boolean liteMember) { ConfigFileTemplate template = new ConfigFileTemplate(memberHzConfig); template.addEnvironment("licenseKey", licenseKey); template.addEnvironment(env); template.withComponentRegistry(componentRegistry); template.addReplacement("<!--MEMBERS-->", createAddressConfig("member", componentRegistry, env.get("HAZELCAST_PORT"))); if (licenseKey != null) { template.addReplacement("<!--LICENSE-KEY-->", format("<license-key>%s</license-key>", licenseKey)); } String manCenterURL = env.get("MANAGEMENT_CENTER_URL"); if (!"none".equals(manCenterURL) && (manCenterURL.startsWith("http://") || manCenterURL.startsWith("https://"))) { String updateInterval = env.get("MANAGEMENT_CENTER_UPDATE_INTERVAL"); String updateIntervalAttr = (updateInterval.isEmpty()) ? "" : " update-interval=\"" + updateInterval + '"'; template.addReplacement("<!--MANAGEMENT_CENTER_CONFIG-->", format("<management-center enabled=\"true\"%s>%n %s%n" + " </management-center>%n", updateIntervalAttr, manCenterURL)); } if (liteMember) { template.addReplacement("<!--LITE_MEMBER_CONFIG-->", "<lite-member enabled=\"true\"/>"); } return template.render(); }
private WorkerParameters loadMemberWorkerParameters() { Map<String, String> env = new HashMap<String, String>(); env.put("AUTOCREATE_HAZELCAST_INSTANCE", "" + options.valueOf(autoCreateHzInstanceSpec)); env.put("LOG4j_CONFIG", loadLog4jConfig()); env.put("JVM_OPTIONS", options.valueOf(workerVmOptionsSpec)); env.put("WORKER_PERFORMANCE_MONITOR_INTERVAL_SECONDS", Integer.toString(coordinatorParameters.getPerformanceMonitorIntervalSeconds())); env.put("HAZELCAST_CONFIG", initMemberHzConfig( loadMemberHzConfig(), componentRegistry, coordinatorParameters.getLicenseKey(), simulatorProperties.asMap(), false)); return new WorkerParameters() .setVersionSpec(simulatorProperties.getVersionSpec()) .setWorkerStartupTimeout(simulatorProperties.getWorkerStartupTimeoutSeconds()) .setWorkerScript(loadWorkerScript(WorkerType.MEMBER, simulatorProperties.get("VENDOR"))) .setEnvironment(env); }
private WorkerParameters loadJavaClientWorkerParameters() { Map<String, String> env = new HashMap<String, String>(); env.put("AUTOCREATE_HAZELCAST_INSTANCE", "" + options.valueOf(autoCreateHzInstanceSpec)); env.put("LOG4j_CONFIG", loadLog4jConfig()); env.put("JVM_OPTIONS", options.valueOf(clientWorkerVmOptionsSpec)); env.put("WORKER_PERFORMANCE_MONITOR_INTERVAL_SECONDS", Integer.toString(coordinatorParameters.getPerformanceMonitorIntervalSeconds())); env.put("HAZELCAST_CONFIG", initClientHzConfig( loadClientHzConfig(), componentRegistry, simulatorProperties.asMap(), coordinatorParameters.getLicenseKey())); return new WorkerParameters() .setVersionSpec(simulatorProperties.getVersionSpec()) .setWorkerStartupTimeout(simulatorProperties.getWorkerStartupTimeoutSeconds()) .setWorkerScript(loadWorkerScript(WorkerType.JAVA_CLIENT, simulatorProperties.get("VENDOR"))) .setEnvironment(env); }
public static boolean isMaster(final HazelcastInstance hazelcastInstance, ScheduledExecutorService executor, int delaySeconds) { if (hazelcastInstance == null || !isOldestMember(hazelcastInstance)) { return false; } try { Callable<Boolean> callable = new Callable<Boolean>() { @Override public Boolean call() throws Exception { return isOldestMember(hazelcastInstance); } }; ScheduledFuture<Boolean> future = executor.schedule(callable, delaySeconds, TimeUnit.SECONDS); return future.get(TIMEOUT_SECONDS, TimeUnit.SECONDS); } catch (InterruptedException e) { throw new IllegalStateException(e); } catch (ExecutionException e) { throw new IllegalStateException(e); } catch (TimeoutException e) { throw new IllegalStateException(e); } }
public static String initClientHzConfig(String clientHzConfig, ComponentRegistry componentRegistry, Map<String, String> env, String licenseKey) { ConfigFileTemplate template = new ConfigFileTemplate(clientHzConfig); template.withComponentRegistry(componentRegistry); template.addEnvironment("licenseKey", licenseKey); template.addEnvironment(env); template.addReplacement("<!--MEMBERS-->", createAddressConfig("address", componentRegistry, env.get("HAZELCAST_PORT"))); if (licenseKey != null) { template.addReplacement("<!--LICENSE-KEY-->", format("<license-key>%s</license-key>", licenseKey)); } return template.render(); }
private WorkerParameters loadLiteMemberWorkerParameters() { Map<String, String> env = new HashMap<String, String>(); env.put("AUTOCREATE_HAZELCAST_INSTANCE", "" + options.valueOf(autoCreateHzInstanceSpec)); env.put("LOG4j_CONFIG", loadLog4jConfig()); env.put("JVM_OPTIONS", options.valueOf(clientWorkerVmOptionsSpec)); env.put("WORKER_PERFORMANCE_MONITOR_INTERVAL_SECONDS", Integer.toString(coordinatorParameters.getPerformanceMonitorIntervalSeconds())); env.put("HAZELCAST_CONFIG", initMemberHzConfig(loadMemberHzConfig(), componentRegistry, coordinatorParameters.getLicenseKey(), simulatorProperties.asMap(), true)); return new WorkerParameters() .setVersionSpec(simulatorProperties.getVersionSpec()) .setWorkerStartupTimeout(simulatorProperties.getWorkerStartupTimeoutSeconds()) .setWorkerScript(loadWorkerScript(WorkerType.LITE_MEMBER, simulatorProperties.get("VENDOR"))) .setEnvironment(env); }