r2138 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: . simulator/launcher
Author: chatellier Date: 2009-04-23 14:08:36 +0000 (Thu, 23 Apr 2009) New Revision: 2138 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java Log: Add semaphore to control simulteaneous thread on caparmor Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -362,6 +362,14 @@ int result = getOptionAsInt(Option.SIMULATOR_SSH_CONTROLCHECKINTERVAL.key); return result; } + + /** + * TODO comment + */ + public int getSimulatorSshMaxSimulteaneousSimulation() { + int result = getOptionAsInt(Option.SIMULATOR_SSH_MAX_SIMULTEANEOUS_SIMULATION.key); + return result; + } /** * Retourne la clé privée de l'utilisteur courant. @@ -727,6 +735,8 @@ SIMULATOR_SSH_ADDSCRIPTTOQUEUECOMMAND("simulation.ssh.addscripttoqueuecommand", _("isisfish.config.main.simulation.ssh.addscripttoqueuecommand.description"), "/usr/pbs/bin/qsub"), /** Serveur accessible par SSH : interval de check du fichier de control */ SIMULATOR_SSH_CONTROLCHECKINTERVAL("simulation.ssh.control.check.interval", _("isisfish.config.main.simulation.ssh.control.check.interval.description"), "5"), + /** Serveur accessible par SSH : nombre de simulations simultanées sur caparmor */ + SIMULATOR_SSH_MAX_SIMULTEANEOUS_SIMULATION("simulation.ssh.max.simultaneous.simulation", _("isisfish.config.main.simulation.max.simultaneous.simulation.description"), "20"), LOCALE("locale", _("isisfish.config.main.locale.description"), "fr_FR"), // REGION_MAP("regionMap", _("isisfish.config.main.regionMap.description"), "maps"), Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -527,4 +527,22 @@ } } + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationEnded() + */ + @Override + public void simulationEnded() { + // TODO Auto-generated method stub + + } + + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationStarted() + */ + @Override + public void simulationStarted() { + // TODO Auto-generated method stub + + } + } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -246,4 +246,22 @@ // TODO Auto-generated method stub } + + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationEnded() + */ + @Override + public void simulationEnded() { + // TODO Auto-generated method stub + + } + + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationStarted() + */ + @Override + public void simulationStarted() { + // TODO Auto-generated method stub + + } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.concurrent.Semaphore; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; @@ -81,6 +82,8 @@ protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-qsub.seq"; //protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-cron.seq"; + protected static Semaphore semaphore = new Semaphore(IsisFish.config.getSimulatorSshMaxSimulteaneousSimulation()); + /** * Opened session. Stored in static context to not reask passphrase at each * connection. @@ -96,7 +99,29 @@ initFreemarker(); } + /** + * @return the semaphore + */ + public static Semaphore getSemaphore() { + return semaphore; + } + + public void simulationStarted() { + try { + semaphore.acquire(); + } catch (InterruptedException e) { + if (log.isErrorEnabled()) { + log.error("Semaphore aquiere has been interrupted", e); + } + } + } + + public void simulationEnded() { + semaphore.release(); + } + + /** * Init freemarker configuration. */ protected void initFreemarker() { @@ -180,6 +205,9 @@ SimulationControl control, File simulationZip, String simulationPrescript) throws RemoteException { + // ask for available resources on caparmor + simulationStarted(); + // start ssh session try { // connection @@ -501,10 +529,9 @@ // FIXME This is a workaround to make the simulations work on caparmor // FIXME We need to find a way to make it work the old way. - //String command = "if [ ! -d \"" + remotePath + "\" ] ; then mkdir \"" - // + remotePath + "\"; fi"; - String command = "if ( ! -d \"" + remotePath + "\" ) mkdir \"" - + remotePath + "\""; + String command = "test -d \"" + remotePath + "\"||mkdir \"" + remotePath + "\""; + //String command = "if ( ! -d \"" + remotePath + "\" ) mkdir \"" + // + remotePath + "\""; if (log.isInfoEnabled()) { log.info("Creating remote temp directory (if not exists) " + remotePath); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -453,6 +453,9 @@ SimulationService service = SimulationService.getService(); SimulationControl control = job.getItem().getControl(); + // TODO comment + launcher.simulationEnded(); + if (log.isInfoEnabled()) { log.info("Do post simulation operation for " + control.getId()); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -105,4 +105,9 @@ */ public void updateControl(SimulationService simulationService, SimulationControl control) throws RemoteException; + + + public void simulationStarted(); + + public void simulationEnded(); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-04-22 17:03:14 UTC (rev 2137) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-04-23 14:08:36 UTC (rev 2138) @@ -308,4 +308,22 @@ SimulationStorage.readControl(simulationId, control, "stop"); } + + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationEnded() + */ + @Override + public void simulationEnded() { + // TODO Auto-generated method stub + + } + + /* + * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulationStarted() + */ + @Override + public void simulationStarted() { + // TODO Auto-generated method stub + + } }
participants (1)
-
chatellier@users.labs.libre-entreprise.org