Author: chatellier Date: 2010-01-22 15:20:26 +0000 (Fri, 22 Jan 2010) New Revision: 2932 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java Log: Improve monitoring for ended simulation : now take care of downloaded failed simulations 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 2010-01-22 15:15:12 UTC (rev 2931) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2010-01-22 15:20:26 UTC (rev 2932) @@ -43,10 +43,12 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.xwork.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.SimulationInformation; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.SimulationControl; import fr.ifremer.isisfish.simulator.SimulationParameter; @@ -196,8 +198,7 @@ restartSimulation(service, file, simulationId, simulationProperties); } catch (IOException e) { if (log.isErrorEnabled()) { - log.error("Can't get launcher for this simulation", - e); + log.error("Can't get launcher for this simulation", e); } } finally { IOUtils.closeQuietly(propertiesFileIS); @@ -524,11 +525,26 @@ // WARNING this condition is VERY important // and set by end of // fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher#localSimulateSameThread(SimulationControl, SimulationStorage) - - // FIXME check SimulationStorage.exists(control.getId()) condition - if (control.getProgress() > 0 - && control.getProgress() >= control.getProgressMax() && SimulationStorage.exists(control.getId())) { - simulationEnded = true; + + File simulationRoot = SimulationStorage.getSimulationDirectory(control.getId()); + + // si la simulation n'est pas localement presente, c'est pas fini + if (simulationRoot.isDirectory()) { + // cas d'une simulation terminée + if (control.getProgress() > 0 && + control.getProgress() >= control.getProgressMax()) { + simulationEnded = true; + } + else { + + // cas d'une simulation arretee par exception + + File informationFile = SimulationStorage.getSimulationInformationFile(simulationRoot); + SimulationInformation information = new SimulationInformation(informationFile); + if (StringUtils.isNotEmpty(information.getException())) { + simulationEnded = true; + } + } } } } catch (RemoteException e) {
participants (1)
-
chatellier@users.labs.libre-entreprise.org