List of usage examples for com.google.common.util.concurrent Monitor enter
public void enter()
From source file:org.apache.marmotta.commons.locking.ObjectLocks.java
public void lock(Object name) { Monitor lock; synchronized (stringLocks) { lock = stringLocks.getUnchecked(name); }/* w w w. jav a 2 s . c o m*/ lock.enter(); }
From source file:com.github.nethad.clustermeister.provisioning.ec2.AmazonEC2JPPFDeployer.java
public String deploy() { String uuid = null;/*from w ww . j a v a 2s . co m*/ SshClient ssh = getSSHClient(); ssh.connect(); JCloudsSshClientWrapper jCloudsSshClientWrapper = new JCloudsSshClientWrapper(sshClient, metadata.getLoginPort()); RemoteResourceManager remoteResourceManager = new RemoteResourceManager(jCloudsSshClientWrapper); Resource jppfZipResource = new InputStreamResource(String.format("/%s", zipFile), this.getClass(), zipFile, getDirectoryName()); jppfZipResource.setUnzipContents(true); remoteResourceManager.addResource(jppfZipResource); try { checkPrecondition(); final String nodeTypeStr = nodeConfiguration.getType().toString(); logger.debug("Deploying JPPF-{} to {} ({}).", new Object[] { nodeTypeStr, metadata.getId(), getPublicIp() }); prepareJPPF(remoteResourceManager); sendEvent(Event.DEPLOYMENT_PREPARED); Monitor monitor = getMonitor(); monitor.enter(); try { remoteResourceManager.uploadResources(); for (File artifact : nodeConfiguration.getArtifactsToPreload()) { remoteResourceManager .addResource(new FileResource(artifact, getDirectoryName() + jppfFolder + "lib")); } remoteResourceManager.uploadResources(); remoteResourceManager.deployResources(); sendEvent(Event.RESOURCES_PRELOADED); } finally { monitor.leave(); } setupJPPF(); uploadConfiguration("JPPF Node Configuration generated by Clustermeister.", getSettings(), jppfConfigFileName); uploadConfiguration("LOG4J Configuration generated by Clustermeister.", NodeConfigurationUtils.getLog4JConfiguration( nodeConfiguration.getLogLevel().or(LogLevel.INFO).toString(), nodeConfiguration.isRemoteLoggingActivataed().or(Boolean.FALSE), nodeConfiguration.getDriverAddress(), //TODO: driver address may not be correct in a remote driver scenario! configurable port nodeConfiguration.getRemoteLoggingPort().or(52321)), log4jConfigFileName); sendEvent(Event.JPPF_CONFIGURATED); logger.debug("Starting JPPF-{} on {}...", nodeTypeStr, metadata.getId()); startJPPF(); uuid = getUUID(); sendEvent(Event.DEPLOYMENT_FINISHED); logger.debug("JPPF-{} deployed on {}.", nodeTypeStr, metadata.getId()); } catch (Throwable ex) { logger.debug("Deployment of JPPF-{} failed.", nodeConfiguration.getType().toString()); throw new IllegalStateException(ex); } finally { if (ssh != null) { ssh.disconnect(); } } return uuid; }
From source file:com.github.nethad.clustermeister.provisioning.jppf.LocalDriverBuilder.java
@Override protected ClustermeisterLauncher doBuild() { JPPFDriverConfigurationSource.serverPort = serverPort; JPPFDriverConfigurationSource.managementPort = managementPort; JPPFDriverConfigurationSource.jvmOptions = configuration .getString(ConfigurationKeys.JVM_OPTIONS_LOCAL_DRIVER, ""); Map<String, String> loadBalancingConfigValues = new DriverLoadBalancing(configuration) .getLoadBalancingConfigValues(); if (loadBalancingConfigValues.isEmpty()) { // logger.info("No load balancing settings set."); } else {//w w w.ja va 2 s .c o m for (Map.Entry<String, String> entry : loadBalancingConfigValues.entrySet()) { // logger.info("{} => {}", entry.getKey(), entry.getValue()); } } JPPFDriverConfigurationSource.loadBalancing = new DriverLoadBalancing(configuration) .getLoadBalancingConfigValues(); final ClustermeisterLauncher launcher = new ClustermeisterDriverLauncher(true); final AtomicBoolean initialized = new AtomicBoolean(false); final Monitor initializationMonitor = new Monitor(false); final Monitor.Guard isInitialized = new Monitor.Guard(initializationMonitor) { @Override public boolean isSatisfied() { return initialized.get(); } }; launcher.addObserver(new Observer() { @Override public void update(Observable o, Object arg) { initializationMonitor.enter(); try { initialized.set(true); } finally { initializationMonitor.leave(); } } }); Thread driverThread = new Thread(new Runnable() { @Override public void run() { try { launcher.doLaunch(true, ClustermeisterProcessLauncher.StreamSink.LOG); } catch (Throwable ex) { logger.warn("Execption from local driver thread.", ex); } } }); driverThread.setName(String.format("%s-%s", DRIVER_THREAD_NAME, driverThread.getId())); driverThread.start(); //wait for driver to initialize. initializationMonitor.enter(); try { try { initializationMonitor.waitFor(isInitialized); } catch (InterruptedException ex) { logger.warn("Interrupted while waiting for local driver to initialize! " + "Initialization may not be complete.", ex); } } finally { initializationMonitor.leave(); } return launcher; }