diff --git a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/AbstractEcologicalEngineMapper.java b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/AbstractEcologicalEngineMapper.java index 77ad53a..464799b 100644 --- a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/AbstractEcologicalEngineMapper.java +++ b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/AbstractEcologicalEngineMapper.java @@ -248,14 +248,14 @@ public class AbstractEcologicalEngineMapper extends AbstractAnnotatedAlgorithm i float previousStatus = -3; String host = WPSConfig.getInstance().getWPSConfig().getServer().getHostname(); - public void updateStatus(float status) { + public void updateStatus(float status, boolean canWrite) { if (agent != null) { if (status != previousStatus) { LOGGER.debug("STATUS update to: {} ", status ); previousStatus = status; super.update(new Integer((int) status)); try { - updateComputationOnWS(status, null); + if (canWrite) updateComputationOnWS(status, null); } catch (Exception e) { LOGGER.warn("error updating compution on WS"); } @@ -425,11 +425,11 @@ public class AbstractEcologicalEngineMapper extends AbstractAnnotatedAlgorithm i LOGGER.info("9 - Running the computation and updater"); LOGGER.info("Initializing the WPS status of the computation"); - updateStatus(0); + updateStatus(0, canWriteOnShub); LOGGER.info("Initializing the computation"); agent.init(); LOGGER.info("Updating status"); - runStatusUpdater(); + runStatusUpdater(canWriteOnShub); LOGGER.info("Running the computation"); agent.compute(); LOGGER.info("The computation has finished. Retrieving output"); @@ -505,8 +505,12 @@ public class AbstractEcologicalEngineMapper extends AbstractAnnotatedAlgorithm i private boolean checkWriteAuthorization(String username) { if (env!=null && env.getShubUsersExcluded()!=null) { - if (env.getShubUsersExcluded().isEmpty()) return false; - else if (env.getShubUsersExcluded().contains(username)) return false; + if (env.getShubUsersExcluded().isEmpty()) { + return false; + } + if (env.getShubUsersExcluded().contains(username)) { + return false; + } } return true; } @@ -533,12 +537,18 @@ public class AbstractEcologicalEngineMapper extends AbstractAnnotatedAlgorithm i } public class StatusUpdater implements Runnable { - + + private boolean canWrite = true; + + public StatusUpdater(boolean canWrite) { + this.canWrite = canWrite; + } + @Override public void run() { while (agent != null && !isCancelled() && agent.getStatus() < 100) { try { - updateStatus(agent.getStatus()); + updateStatus(agent.getStatus(), canWrite); Thread.sleep(10000); } catch (InterruptedException e) {} } @@ -546,8 +556,8 @@ public class AbstractEcologicalEngineMapper extends AbstractAnnotatedAlgorithm i } } - private void runStatusUpdater() { - StatusUpdater updater = new StatusUpdater(); + private void runStatusUpdater(boolean canWrite) { + StatusUpdater updater = new StatusUpdater(canWrite); Thread t = new Thread(updater); t.start(); diff --git a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/ConfigurationManager.java b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/ConfigurationManager.java index 53b1c8b..97dc538 100644 --- a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/ConfigurationManager.java +++ b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/ConfigurationManager.java @@ -29,6 +29,8 @@ public class ConfigurationManager { private static Boolean useStorage = null; static boolean simulationMode = false; + EnvironmentVariableManager env = null; + public static synchronized Integer getMaxComputations(){ return maxComputations; } @@ -78,10 +80,11 @@ public class ConfigurationManager { public ConfigurationManager(EnvironmentVariableManager env) { if (env == null) inizializePropertiesUsingTemplateFile(); - } - - public ConfigurationManager() { - inizializePropertiesUsingTemplateFile(); + else { + maxComputations = env.getMaxComputation(); + useStorage = env.isSaveOnStorage(); + simulationMode = env.isSimulationMode(); + } } public AlgorithmConfiguration getConfig() { diff --git a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/EnvironmentVariableManager.java b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/EnvironmentVariableManager.java index 5db302b..5470d08 100644 --- a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/EnvironmentVariableManager.java +++ b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/EnvironmentVariableManager.java @@ -9,6 +9,7 @@ public class EnvironmentVariableManager { this.maxComputation = maxComputation; this.saveOnStorage = saveOnStorage; this.simulationMode = simulationMode; + this.shubUsersExcluded = shubUsersExcluded; } private int maxComputation; private boolean saveOnStorage;