Michael Kublin has uploaded a new change for review.

Change subject: engine: AsyncTaskManager - fix restart part 1 (DB)
......................................................................

engine: AsyncTaskManager - fix restart part 1 (DB)

The following patch contains a changes for DB schema which is required in order 
to solve
a problem.
The changes are: added a new two collums to async_task table.
Those columns are respresenting a parameters of command which is associated 
with task

Change-Id: I3beb5c4a675c567abdf789f40c26fd9fa0a1fb4d
Signed-off-by: Michael Kublin <[email protected]>
---
M backend/manager/dbscripts/async_tasks_sp.sql
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
3 files changed, 38 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/12129/1

diff --git a/backend/manager/dbscripts/async_tasks_sp.sql 
b/backend/manager/dbscripts/async_tasks_sp.sql
index 970b2bd..508bffd 100644
--- a/backend/manager/dbscripts/async_tasks_sp.sql
+++ b/backend/manager/dbscripts/async_tasks_sp.sql
@@ -7,6 +7,8 @@
        v_task_id UUID,
        v_action_parameters text,
        v_action_params_class varchar(256),
+    v_task_parameters text,
+       v_task_params_class varchar(256),
        v_step_id UUID,
        v_command_id UUID,
         v_entity_type varchar(128),
@@ -17,8 +19,8 @@
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO async_tasks(action_type, result, status, task_id, 
action_parameters,action_params_class, step_id, command_id, 
started_at,storage_pool_id, task_type)
-       VALUES(v_action_type, v_result, v_status, v_task_id, 
v_action_parameters,v_action_params_class, v_step_id, v_command_id, 
v_started_at, v_storage_pool_id, v_async_task_type);
+INSERT INTO async_tasks(action_type, result, status, task_id, 
action_parameters,action_params_class, task_parameters, task_params_class, 
step_id, command_id, started_at,storage_pool_id, task_type)
+       VALUES(v_action_type, v_result, v_status, v_task_id, 
v_action_parameters,v_action_params_class, v_task_parameters, 
v_task_params_class, v_step_id, v_command_id, v_started_at, v_storage_pool_id, 
v_async_task_type);
 INSERT INTO async_tasks_entities (async_task_id,entity_id,entity_type)
        SELECT v_task_id,fnsplitteruuid(v_entity_ids),v_entity_type;
 END; $procedure$
@@ -31,6 +33,8 @@
        v_task_id UUID,
        v_action_parameters text,
        v_action_params_class varchar(256),
+       v_task_parameters text,
+       v_task_params_class varchar(256),
        v_step_id UUID,
        v_command_id UUID)
 RETURNS VOID
@@ -44,6 +48,8 @@
           status = v_status,
           action_parameters = v_action_parameters,
           action_params_class = v_action_params_class,
+          task_parameters = v_task_parameters,
+          task_params_class = v_task_params_class,
           step_id = v_step_id,
           command_id = v_command_id
       WHERE task_id = v_task_id;
@@ -56,6 +62,8 @@
        v_task_id UUID,
        v_action_parameters text,
        v_action_params_class varchar(256),
+       v_task_parameters text,
+       v_task_params_class varchar(256),
        v_step_id UUID,
        v_command_id UUID,
         v_entity_type varchar(128),
@@ -68,9 +76,9 @@
 BEGIN
       IF NOT EXISTS (SELECT 1 from async_tasks where async_tasks.task_id = 
v_task_id) THEN
             PERFORM Insertasync_tasks(v_action_type, v_result, v_status, 
v_task_id, v_action_parameters,
-            v_action_params_class, v_step_id, v_command_id, v_entity_type, 
v_started_at, v_storage_pool_id, v_async_task_type, v_entity_ids);
+            v_action_params_class, v_task_parameters, v_task_params_class, 
v_step_id, v_command_id, v_entity_type, v_started_at, v_storage_pool_id, 
v_async_task_type, v_entity_ids);
       ELSE
-            PERFORM Updateasync_tasks(v_action_type, v_result, v_status, 
v_task_id, v_action_parameters,  v_action_params_class, v_step_id, 
v_command_id);
+            PERFORM Updateasync_tasks(v_action_type, v_result, v_status, 
v_task_id, v_action_parameters,  v_action_params_class, v_task_parameters, 
v_task_params_class, v_step_id, v_command_id);
       END IF;
 END; $procedure$
 LANGUAGE plpgsql;
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 2052f8f..4d31e72 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
@@ -54,7 +54,8 @@
             
entity.setresult(AsyncTaskResultEnum.forValue(rs.getInt("result")));
             
entity.setstatus(AsyncTaskStatusEnum.forValue(rs.getInt("status")));
             
entity.settask_id(Guid.createGuidFromString(rs.getString("task_id")));
-            
entity.setaction_parameters(deserializeParameters(rs.getString("action_parameters"),rs.getString("action_params_class")));
+            
entity.setActionParameters(deserializeParameters(rs.getString("action_parameters"),rs.getString("action_params_class")));
+            
entity.setTaskParameters(deserializeParameters(rs.getString("task_parameters"),rs.getString("task_params_class")));
             
entity.setStepId(NGuid.createGuidFromString(rs.getString("step_id")));
             
entity.setCommandId(Guid.createGuidFromString(rs.getString("command_id")));
             
entity.setStartTime(DbFacadeUtils.fromDate(rs.getTimestamp("started_at")));
@@ -81,8 +82,10 @@
             addValue("result", task.getresult());
             addValue("status", task.getstatus());
             addValue("task_id", task.gettask_id());
-            addValue("action_parameters", 
serializeParameters(task.getaction_parameters()));
-            
addValue("action_params_class",task.getaction_parameters().getClass().getName());
+            addValue("action_parameters", 
serializeParameters(task.getActionParameters()));
+            
addValue("action_params_class",task.getActionParameters().getClass().getName());
+            addValue("task_parameters", 
serializeParameters(task.getTaskParameters()));
+            
addValue("task_params_class",task.getTaskParameters().getClass().getName());
             addValue("step_id", task.getStepId());
             addValue("command_id", task.getCommandId());
         }
@@ -153,7 +156,7 @@
     }
 
     private static void logNullParameters(AsyncTasks task) {
-        if (task.getaction_parameters() == null) {
+        if (task.getActionParameters() == null) {
             StringBuilder sb = new StringBuilder("Null action_parameters:\n");
             StackTraceElement[] st = Thread.currentThread().getStackTrace();
 
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 653aaf3..047c2ac 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
@@ -12,6 +12,7 @@
 import org.junit.Test;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.AddDiskParameters;
+import org.ovirt.engine.core.common.action.AddImageFromScratchParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
@@ -33,6 +34,7 @@
     private AsyncTasks existingAsyncTask;
 
     private VdcActionParametersBase params;
+    private VdcActionParametersBase taskParams;
 
     @Override
     @Before
@@ -44,6 +46,11 @@
         params.setSessionId("ASESSIONID");
         params.setTransactionScopeOption(TransactionScopeOption.RequiresNew);
 
+        taskParams = new VdcActionParametersBase();
+        taskParams.setSessionId("ASESSIONID");
+        
taskParams.setTransactionScopeOption(TransactionScopeOption.RequiresNew);
+        taskParams.setParentParameters(params);
+
         // create some test data
         newAsyncTask = new AsyncTasks();
         newAsyncTask.settask_id(Guid.NewGuid());
@@ -51,7 +58,8 @@
         newAsyncTask.setaction_type(VdcActionType.AddDisk);
         newAsyncTask.setstatus(AsyncTaskStatusEnum.running);
         newAsyncTask.setresult(AsyncTaskResultEnum.success);
-        newAsyncTask.setaction_parameters(params);
+        newAsyncTask.setActionParameters(params);
+        newAsyncTask.setTaskParameters(taskParams);
         newAsyncTask.setCommandId(Guid.NewGuid());
         newAsyncTask.setTaskType(AsyncTaskType.copyImage);
         newAsyncTask.setStoragePoolId(Guid.NewGuid());
@@ -160,7 +168,11 @@
         existingAsyncTask.setaction_type(VdcActionType.AddDisk);
         AddDiskParameters addDiskToVmParams = new AddDiskParameters();
         addDiskToVmParams.setSessionId("SESSION_ID");
-        existingAsyncTask.setaction_parameters(addDiskToVmParams);
+        AddImageFromScratchParameters taskParameters = new 
AddImageFromScratchParameters();
+        taskParameters.setParentParameters(addDiskToVmParams);
+        taskParameters.setParentCommand(VdcActionType.AddDisk);
+        existingAsyncTask.setActionParameters(addDiskToVmParams);
+        existingAsyncTask.setTaskParameters(taskParameters);
         dao.update(existingAsyncTask);
 
         AsyncTasks result = dao.get(existingAsyncTask.gettask_id());
@@ -196,7 +208,11 @@
         existingAsyncTask.setaction_type(VdcActionType.AddDisk);
         AddDiskParameters addDiskToVmParams = new AddDiskParameters();
         addDiskToVmParams.setSessionId("SESSION_ID");
-        existingAsyncTask.setaction_parameters(addDiskToVmParams);
+        AddImageFromScratchParameters taskParameters = new 
AddImageFromScratchParameters();
+        taskParameters.setParentParameters(addDiskToVmParams);
+        taskParameters.setParentCommand(VdcActionType.AddDisk);
+        existingAsyncTask.setActionParameters(addDiskToVmParams);
+        existingAsyncTask.setTaskParameters(taskParameters);
         List<AsyncTasks> tasks = dao.getAll();
         assertNotNull(tasks);
         int tasksNumber = tasks.size();


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

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

Reply via email to