Author: bleny Date: 2010-07-22 07:44:45 +0000 (Thu, 22 Jul 2010) New Revision: 3086 Log: bugfix, config log4j Modified: isis-fish/branches/3.3.0.4-disworksupport/src/main/java/fr/ifremer/isisfish/simulator/launcher/DisworkSimulatorLauncher.java isis-fish/branches/3.3.0.4-disworksupport/src/main/resources/log4j.properties Modified: isis-fish/branches/3.3.0.4-disworksupport/src/main/java/fr/ifremer/isisfish/simulator/launcher/DisworkSimulatorLauncher.java =================================================================== --- isis-fish/branches/3.3.0.4-disworksupport/src/main/java/fr/ifremer/isisfish/simulator/launcher/DisworkSimulatorLauncher.java 2010-07-22 07:07:38 UTC (rev 3085) +++ isis-fish/branches/3.3.0.4-disworksupport/src/main/java/fr/ifremer/isisfish/simulator/launcher/DisworkSimulatorLauncher.java 2010-07-22 07:44:45 UTC (rev 3086) @@ -41,6 +41,8 @@ protected static final String ISIS_APPLICATION_NAME = "isis-fish"; protected static DisworkDaemon disworkDaemon; + + protected static boolean closed = false; /** for each job id, the corresponding job description */ protected static Map<String, JobDescription> jobs = @@ -48,7 +50,7 @@ public DisworkSimulatorLauncher() {} - protected synchronized static DisworkDaemon getDaemon() { + protected synchronized static DisworkDaemon getDaemon() throws RemoteException { if (disworkDaemon == null) { DisworkConfig config = new DisworkConfig(); config.setBootstrapIp(IsisFish.config.getDisworkBootstrapIp()); @@ -61,25 +63,28 @@ disworkDaemon = new DisworkDaemon(config); } catch (DisworkException e) { log.error("unable to boot diswork FS"); - throw new RuntimeException("unable to boot diswork FS", e); + closed = true; + throw new RemoteException("unable to boot diswork FS", e); } - } - try { - synchronized (jobs) { - for (JobDescription job : disworkDaemon.getAllJobs(ISIS_APPLICATION_NAME)) { + + try { + for (JobDescription job : getDaemon().getAllJobs(ISIS_APPLICATION_NAME)) { jobs.put(job.getJobName(), job); - } + } + log.debug(jobs.size() + " jobs retrieved from diswork"); + } catch (DisworkException e) { + log.error("unable to boot diswork FS"); + throw new RuntimeException("unable to boot diswork FS", e); } - log.info(jobs.size() + "jobs retrieved from diswork"); - } catch (DisworkException e) { - log.error("unable to boot diswork FS"); - throw new RuntimeException("unable to boot diswork FS", e); } + return disworkDaemon; } // TODO 20100628 bleny upload application if needed, whatever the version - protected void submitIsisApplication(String isisVersion) { + protected synchronized void submitIsisApplication(String isisVersion) { + // method is synchronized so two submission at the same time + // will not upload isis twice try { log.info("submitting isis-fish " + isisVersion + " to diswork"); URL url = new URL("http://isis-fish.labs.libre-entreprise.org/download/version3/isis-fish-3.3.0..."); @@ -98,6 +103,19 @@ @Override public void simulate(SimulationService simulationService, SimulationItem simulationItem) throws RemoteException { + if (closed) { + simulationItem.getControl().setText("unable to connect to diswork"); + simulationItem.getControl().setStopSimulationRequest(true); + + // sleep a bit before throwing exception prevent infinite loop + try { + Thread.sleep(1 * 1000); + } catch (InterruptedException e) { + throw new RemoteException("lancher interrupted", e); + } + throw new RemoteException("daemon has been closed"); + } + JobDescription jobDescription = new JobDescription(); String simulationId = simulationItem.getControl().getId(); @@ -180,8 +198,6 @@ protected File downloadResults(JobDescription jobDescription) throws DisworkException { - - OutputStream out = null; try { File tempDir = FileUtil.createTempDirectory("isis-results-" + @@ -215,6 +231,18 @@ @Override public void updateControl(SimulationService simulationService, SimulationControl control) throws RemoteException { + if (closed) { + control.setText("unable to connect to diswork"); + + // sleep a bit before throwing exception prevent infinite loop + try { + Thread.sleep(1 * 1000); + } catch (InterruptedException e) { + throw new RemoteException("lancher interrupted", e); + } + throw new RemoteException("daemon has been closed"); + } + JobDescription jobDescription = jobs.get(control.getId()); if (jobDescription == null) { log.error("unknow Id" + control.getId()); @@ -236,8 +264,23 @@ @Override public void simulationStopRequest(SimulationJob job) throws RemoteException { + if (closed) { + // sleep a bit before throwing exception prevent infinite loop + try { + Thread.sleep(1 * 1000); + } catch (InterruptedException e) { + throw new RemoteException("lancher interrupted", e); + } + throw new RemoteException("daemon has been closed"); + } + try { - getDaemon().deleteJob(jobs.get(job.getId())); + JobDescription jobDescription = jobs.get(job.getId()); + if (jobDescription == null) { + log.warn(job + " is not a know job"); + } else { + getDaemon().deleteJob(jobDescription); + } } catch (DisworkException e) { log.error("error while trying to delete a job", e); throw new RemoteException("error while trying to delete a job", e); @@ -253,9 +296,14 @@ } /** must be called when IsisFish is being closed */ - public static void close() throws DisworkException { + public static void close() throws RemoteException { + closed = true; if (getDaemon() != null) { - getDaemon().close(); + try { + getDaemon().close(); + } catch (DisworkException e) { + throw new RemoteException("unable to close daemon", e); + } } } Modified: isis-fish/branches/3.3.0.4-disworksupport/src/main/resources/log4j.properties =================================================================== --- isis-fish/branches/3.3.0.4-disworksupport/src/main/resources/log4j.properties 2010-07-22 07:07:38 UTC (rev 3085) +++ isis-fish/branches/3.3.0.4-disworksupport/src/main/resources/log4j.properties 2010-07-22 07:44:45 UTC (rev 3086) @@ -8,8 +8,6 @@ # package level log4j.logger.fr.ifremer.isisfish=INFO log4j.logger.org.nuiton=INFO -log4j.logger.org.nuiton.diswork.daemon=DEBUG -log4j.logger.org.nuiton.diswork.fs=INFO log4j.logger.org.nuiton.j2r=DEBUG log4j.logger.analyseplans=INFO log4j.logger.exports=INFO @@ -19,3 +17,8 @@ log4j.logger.sensitivity=INFO log4j.logger.sensitivityexports=INFO log4j.logger.simulators=INFO + +# diswork +log4j.logger.org.nuiton.diswork.daemon=DEBUG +log4j.logger.org.nuiton.diswork.fs=INFO +log4j.logger.org.planx.xmlstore=WARN \ No newline at end of file