diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java index ae15608..e19729e 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java @@ -310,34 +310,46 @@ public class DataMinerAccessPoint { */ public TaskOutput getOutput(TaskConfiguration taskConfiguration, TaskComputation taskComputation) throws TaskErrorException, TaskNotExecutableException { - TaskExecutionStatus tes = monitorStatus(taskConfiguration, taskComputation); + TaskExecutionStatus tes = null; - SClient sClient; - ComputationId computationId = DMConverter.toComputationId(taskComputation); - try { - String token = EncrypterUtil.decryptString(taskConfiguration.getMaskedToken()); - sClient = dataMinerService.getClient(token); + try{ + + tes = monitorStatus(taskConfiguration, taskComputation); + + SClient sClient; + ComputationId computationId = DMConverter.toComputationId(taskComputation); + try { + String token = EncrypterUtil.decryptString(taskConfiguration.getMaskedToken()); + sClient = dataMinerService.getClient(token); + } + catch (Exception e) { + logger.error("Error on get DM client", e); + throw new TaskErrorException("Error on getting DataMiner client, Try later"); + } + + List outputMessages = retrieveOutput(computationId, sClient); + + //REMOVING THE TASK FROM MEMORY + switch (tes.getStatus()) { + case COMPLETED: + case CANCELLED: + case FAILED: + logger.info("Removing "+tes+ "from memory"); + removeTaskFromMemory(tes.getTaskConfiguration()); + break; + default: + break; + } + + return new TaskOutput(tes, outputMessages); + + }catch(Exception e){ + if(tes!=null) + removeTaskFromMemory(tes.getTaskConfiguration()); + + logger.error("Get output error: ",e); + throw e; } - catch (Exception e) { - logger.error("Error on get DM client", e); - throw new TaskErrorException("Error on getting DataMiner client, Try later"); - } - - List outputMessages = retrieveOutput(computationId, sClient); - - //REMOVING THE TASK FROM MEMORY - switch (tes.getStatus()) { - case COMPLETED: - case CANCELLED: - case FAILED: - logger.info("Removing "+tes+ "from memory"); - removeTaskFromMemory(tes.getTaskConfiguration()); - break; - default: - break; - } - - return new TaskOutput(tes, outputMessages); }