Yair Zaslavsky has uploaded a new change for review.

Change subject: core: Adding startTime field to async_tasks entity
......................................................................

core: Adding startTime field to async_tasks entity

This patch adds startTime field to async_tasks entity
And removes it from the VdcActionParametersBase class.
This change is possible, as in upgrade path from 3.0 all 3.0
takss will be cleared before 3.1 engine is started

Change-Id: I23cc8694c17471d38f5e24f26f77c78a7b3b1035
Bug-Url: https://bugzilla.redhat.com/868636
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/async_tasks.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
8 files changed, 36 insertions(+), 24 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/22/8722/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskManager.java
index 2b154ab..9d1feba 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskManager.java
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.bll;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -176,11 +175,10 @@
                 .AddMinutes((-1) * Config.<Integer> 
GetValue(ConfigValues.AsyncTaskZombieTaskLifeInMinutes)).getTime();
         for (SPMAsyncTask task : _tasks.values()) {
 
-            if 
(task.getParameters().getDbAsyncTask().getaction_parameters().getTaskStartTime()
 < maxTime) {
+            if (task.getParameters().getDbAsyncTask().getStartTime().getTime() 
< maxTime) {
                 AuditLogableBase logable = new AuditLogableBase();
                 logable.AddCustomValue("CommandName", 
task.getParameters().getDbAsyncTask().getaction_type().toString());
-                logable.AddCustomValue("Date", new 
Date(task.getParameters().getDbAsyncTask()
-                        
.getaction_parameters().getTaskStartTime()).toString());
+                logable.AddCustomValue("Date", 
task.getParameters().getDbAsyncTask().getStartTime().toString());
 
                 // if task is not finish and not unknown then it's in running
                 // status
@@ -189,16 +187,16 @@
                     AuditLogDirector.log(logable, 
AuditLogType.TASK_STOPPING_ASYNC_TASK);
 
                     log.infoFormat("Cleaning zombie tasks: Stopping async task 
{0} that started at {1}",
-                            
task.getParameters().getDbAsyncTask().getaction_type(), new Date(task
-                                    
.getParameters().getDbAsyncTask().getaction_parameters().getTaskStartTime()));
+                            
task.getParameters().getDbAsyncTask().getaction_type(), task
+                                    
.getParameters().getDbAsyncTask().getStartTime());
 
                     task.StopTask();
                 } else {
                     AuditLogDirector.log(logable, 
AuditLogType.TASK_CLEARING_ASYNC_TASK);
 
                     log.infoFormat("Cleaning zombie tasks: Clearing async task 
{0} that started at {1}",
-                            
task.getParameters().getDbAsyncTask().getaction_type(), new Date(task
-                                    
.getParameters().getDbAsyncTask().getaction_parameters().getTaskStartTime()));
+                            
task.getParameters().getDbAsyncTask().getaction_type(), task
+                                    
.getParameters().getDbAsyncTask().getStartTime());
 
                     task.ClearAsyncTask();
                 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index fcffeed..2dbac35 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -281,7 +281,6 @@
             if (actionAllowed) {
                 getReturnValue().setCanDoAction(true);
                 getReturnValue().setIsSyncronious(true);
-                getParameters().setTaskStartTime(System.currentTimeMillis());
                 execute();
             } else {
                 getReturnValue().setCanDoAction(false);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
index b50560b..d0f72a4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
@@ -140,7 +140,7 @@
      */
     boolean isTaskOverPrePollingLapse() {
         AsyncTaskParameters parameters = getParameters();
-        long taskStartTime = 
parameters.getDbAsyncTask().getaction_parameters().getTaskStartTime();
+        long taskStartTime = 
parameters.getDbAsyncTask().getStartTime().getTime();
         Integer prePollingPeriod = Config.<Integer> 
GetValue(UknownTaskPrePollingLapse);
         boolean idlePeriodPassed =
                 System.currentTimeMillis() - taskStartTime > prePollingPeriod;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
index 88b40bd..43f1eab 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
@@ -49,8 +49,6 @@
 
     private boolean taskGroupSuccess = true;
 
-    private long taskStartTime;
-
     private ArrayList<Guid> taskIds;
 
     /**
@@ -65,7 +63,6 @@
         shouldbelogged = true;
         transctionOption = TransactionScopeOption.Required;
         setTaskGroupSuccess(true);
-        taskStartTime = System.currentTimeMillis();
         setParentCommand(VdcActionType.Unknown);
     }
 
@@ -219,14 +216,6 @@
         entityId = value;
     }
 
-    public long getTaskStartTime() {
-        return taskStartTime;
-    }
-
-    public void setTaskStartTime(long value) {
-        taskStartTime = value;
-    }
-
     public ArrayList<Guid> getTaskIds() {
         return taskIds;
     }
@@ -249,7 +238,6 @@
         int result = 1;
         result = prime * result + ((imagesParameters == null) ? 0 : 
imagesParameters.hashCode());
         result = prime * result + (shouldbelogged ? 1231 : 1237);
-        result = prime * result + (int) (taskStartTime ^ (taskStartTime >>> 
32));
         result = prime * result + ((transctionOption == null) ? 0 : 
transctionOption.hashCode());
         result = prime * result + ((entityId == null) ? 0 : 
entityId.hashCode());
         result = prime * result + ((httpSessionId == null) ? 0 : 
httpSessionId.hashCode());
@@ -277,8 +265,6 @@
         } else if (!imagesParameters.equals(other.imagesParameters))
             return false;
         if (shouldbelogged != other.shouldbelogged)
-            return false;
-        if (taskStartTime != other.taskStartTime)
             return false;
         if (transctionOption != other.transctionOption)
             return false;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/async_tasks.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/async_tasks.java
index 5bf5187..c871f1a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/async_tasks.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/async_tasks.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.common.businessentities;
 
 import java.io.Serializable;
+import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -53,6 +54,18 @@
     @Column(name = "result", nullable = false)
     @Enumerated
     private AsyncTaskResultEnum result = AsyncTaskResultEnum.forValue(0);
+
+
+    private Date startTime;
+
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
 
     public AsyncTaskResultEnum getresult() {
         return this.result;
@@ -133,6 +146,7 @@
         results = prime * results + ((taskId == null) ? 0 : taskId.hashCode());
         results = prime * results + ((stepId == null) ? 0 : stepId.hashCode());
         results = prime * results + ((commandId == null) ? 0 : 
commandId.hashCode());
+        results =  prime * results + ((startTime == null) ? 0 : 
startTime.hashCode());
         return results;
     }
 
@@ -175,6 +189,13 @@
         } else if (!commandId.equals(other.commandId)) {
             return false;
         }
+        if (startTime == null) {
+            if (other.startTime != null) {
+                return false;
+            }
+        } else if (!startTime.equals(other.startTime)) {
+            return false;
+        }
 
         return true;
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
index f37b390..b65bfa6 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
@@ -55,6 +55,7 @@
             
entity.setaction_parameters(deserializeParameters(rs.getString("action_parameters"),rs.getString("action_params_class")));
             
entity.setStepId(NGuid.createGuidFromString(rs.getString("step_id")));
             
entity.setCommandId(Guid.createGuidFromString(rs.getString("command_id")));
+            entity.setStartTime(rs.getDate("started_at"));
             return entity;
         }
 
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
index bc509a0..48a1c11 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
@@ -123,6 +123,10 @@
         dao.save(newAsyncTask);
 
         async_tasks result = dao.get(newAsyncTask.gettask_id());
+        //Setting startTime to null is required as DB auto generates
+        //the value of start time
+        //Without this, the comparison would fail
+        result.setStartTime(null);
 
         assertEquals(newAsyncTask, result);
     }
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 085d4b9..eb540a6 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -38,6 +38,7 @@
         <column>result</column>
         <column>action_parameters</column>
         <column>command_id</column>
+        <column>started_at</column>
         <row>
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0aa</value>
             <value>1</value> <!--  Add VM -->
@@ -45,6 +46,7 @@
             <value>0</value> <!--  Success -->
             <null />
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0aa</value>
+            <value>2010-12-01 14:13:07</value>
         </row>
         <row>
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0ab</value>
@@ -53,6 +55,7 @@
             <value>0</value> <!--  Success -->
             <null />
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0ab</value>
+            <value>2010-12-01 14:13:07</value>
         </row>
     </table>
 


--
To view, visit http://gerrit.ovirt.org/8722
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I23cc8694c17471d38f5e24f26f77c78a7b3b1035
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to