diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/orientdb/OrientDBPersistenceConnector.java b/src/main/java/org/gcube/vremanagement/executor/persistence/orientdb/OrientDBPersistenceConnector.java index 1e83419..1205320 100644 --- a/src/main/java/org/gcube/vremanagement/executor/persistence/orientdb/OrientDBPersistenceConnector.java +++ b/src/main/java/org/gcube/vremanagement/executor/persistence/orientdb/OrientDBPersistenceConnector.java @@ -20,7 +20,6 @@ import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConf import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConnector; import org.gcube.vremanagement.executor.plugin.PluginDeclaration; import org.gcube.vremanagement.executor.plugin.PluginStateEvolution; -import org.gcube.vremanagement.executor.plugin.RunOn; import org.gcube.vremanagement.executor.scheduledtask.ScheduledTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +48,7 @@ public class OrientDBPersistenceConnector extends protected final String UUID = "uuid"; protected final String ITERATION = "iteration"; protected final String TIMESTAMP = "timestamp"; - + protected final String RUN_ON = "runOn"; protected OPartitionedDatabasePool oPartitionedDatabasePool; @@ -329,46 +328,11 @@ public class OrientDBPersistenceConnector extends } } } - + @Override public void reserveScheduledTask(ScheduledTask scheduledTask) throws SchedulePersistenceException { - ODatabaseDocumentTx db = null; - try { - db = oPartitionedDatabasePool.acquire(); - UUID uuid = scheduledTask.getUUID(); - - ODocument doc = getScheduledTaskDocument(db, uuid); - - - Long timestamp = doc.field(TIMESTAMP); - if (timestamp!=null && timestamp.compareTo(scheduledTask.getTimestamp())!=0) { - throw new SchedulePersistenceException( - "The ScheduledTask has been already reserved."); - } - - RunOn runOn = ScheduledTask.generateRunOn(); - - ODocument runOnDocument = new ODocument(); - runOnDocument.fromJSON(mapper.writeValueAsString(runOn)); - doc.field(RUN_ON, runOnDocument); - - timestamp = Calendar.getInstance().getTimeInMillis(); - doc.field(TIMESTAMP, timestamp); - - doc.save(); - db.commit(); - - } catch (Exception e) { - if (db != null) { - db.rollback(); - } - throw new SchedulePersistenceException(e); - } finally { - if (db != null) { - db.close(); - } - } + releaseScheduledTask(scheduledTask); } @Override @@ -396,31 +360,7 @@ public class OrientDBPersistenceConnector extends @Override public void removeScheduledTask(ScheduledTask scheduledTask) throws SchedulePersistenceException { - ODatabaseDocumentTx db = null; - try { - db = oPartitionedDatabasePool.acquire(); - UUID uuid = scheduledTask.getUUID(); - - ODocument doc = getScheduledTaskDocument(db, uuid); - - Long timestamp = doc.field(TIMESTAMP); - if (timestamp!=null && timestamp.compareTo(scheduledTask.getTimestamp())!=0) { - throw new SchedulePersistenceException( - "The ScheduledTask has been changed."); - } - - doc.delete(); - db.commit(); - } catch (Exception e) { - if (db != null) { - db.rollback(); - } - throw new SchedulePersistenceException(e); - } finally { - if (db != null) { - db.close(); - } - } + removeScheduledTask(scheduledTask.getUUID()); } @Override @@ -447,29 +387,6 @@ public class OrientDBPersistenceConnector extends @Override public void releaseScheduledTask(ScheduledTask scheduledTask) throws SchedulePersistenceException { - ODatabaseDocumentTx db = null; - try { - db = oPartitionedDatabasePool.acquire(); - UUID uuid = scheduledTask.getUUID(); - ODocument doc = getScheduledTaskDocument(db, uuid); - - Long timestamp = doc.field(TIMESTAMP); - if (timestamp!=null && timestamp.compareTo(scheduledTask.getTimestamp())!=0) { - throw new SchedulePersistenceException( - "The ScheduledTask has been changed."); - } - - doc.removeField(RUN_ON); - doc.save(); - } catch (Exception e) { - if (db != null) { - db.rollback(); - } - throw new SchedulePersistenceException(e); - } finally { - if (db != null) { - db.close(); - } - } + releaseScheduledTask(scheduledTask.getUUID()); } } diff --git a/src/main/java/org/gcube/vremanagement/executor/scheduledtask/ScheduledTask.java b/src/main/java/org/gcube/vremanagement/executor/scheduledtask/ScheduledTask.java index e78a45b..005b824 100644 --- a/src/main/java/org/gcube/vremanagement/executor/scheduledtask/ScheduledTask.java +++ b/src/main/java/org/gcube/vremanagement/executor/scheduledtask/ScheduledTask.java @@ -30,8 +30,6 @@ public class ScheduledTask { public static final String LAUNCH_PARAMETER = "launchParameter"; - protected Long timestamp; - protected UUID uuid; @JsonProperty(value=LAUNCH_PARAMETER) protected LaunchParameter launchParameter; @@ -57,13 +55,6 @@ public class ScheduledTask { this.runOn = runOn; } - /** - * @return the timestamp - */ - public Long getTimestamp() { - return timestamp; - } - /** * @return the uuid */