Michael Kublin has uploaded a new change for review.

Change subject: engine: AsyncTask manger part 2 - vms scenario
......................................................................

engine: AsyncTask manger part 2 - vms scenario

The following fiix should sol;ve a following paroblem:
1. Part of vm scenarious are creating async task with out parent and child task
   tat's why appropriate check should be added to EntityAsyncTask
2. Fixing also VdcActionParametersBase accordingly, because of imageParameters 
are not
   passed to DB

Change-Id: I43320dfb32a2477308cd881cb7d27c49f3f9f346
Signed-off-by: Michael Kublin <[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/EntityAsyncTask.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
4 files changed, 16 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/12156/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 389471e..d85991e 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
@@ -13,7 +13,6 @@
 import org.ovirt.engine.core.bll.tasks.AsyncTaskUtils;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.SetNonOperationalVdsParameters;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskCreationInfo;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskParameters;
@@ -24,7 +23,6 @@
 import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
-import org.ovirt.engine.core.common.businessentities.AsyncTasks;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
@@ -455,17 +453,9 @@
         return AsyncTaskFactory.Construct(taskType, taskParameters);
     }
 
-    public synchronized void UpdateTaskWithActionParameters(Guid taskID, 
VdcActionParametersBase actionParameters) {
-        if (_tasks.containsKey(taskID)) {
-            AsyncTasks currentDbAsyncTask = 
_tasks.get(taskID).getParameters().getDbAsyncTask();
-            currentDbAsyncTask.setActionParameters(actionParameters);
-            AsyncTaskUtils.updateAsyncTaskInDB(_tasks.get(taskID));
-        }
-    }
-
     public synchronized void StartPollingTask(Guid taskID) {
         if (_tasks.containsKey(taskID)) {
-                _tasks.get(taskID).StartPollingTask();
+            _tasks.get(taskID).StartPollingTask();
         }
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EntityAsyncTask.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EntityAsyncTask.java
index 13b1467..8f54703 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EntityAsyncTask.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EntityAsyncTask.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.core.bll;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -115,14 +116,19 @@
         ExecutionContext context = null;
 
         AsyncTasks dbAsyncTask = getParameters().getDbAsyncTask();
+        ArrayList<VdcActionParametersBase> imagesParameters = new 
ArrayList<VdcActionParametersBase>();
         for (EndedTaskInfo taskInfo : 
entityInfo.getEndedTasksInfo().getTasksInfo()) {
             VdcActionParametersBase childTaskParameters =
                     
taskInfo.getTaskParameters().getDbAsyncTask().getTaskParameters();
-            dbAsyncTask.getActionParameters().getImagesParameters()
-                    .add(childTaskParameters);
+            boolean childTaskGroupSuccess =
+                    childTaskParameters.getTaskGroupSuccess() && 
taskInfo.getTaskStatus().getTaskEndedSuccessfully();
             childTaskParameters
-                    
.setTaskGroupSuccess(taskInfo.getTaskStatus().getTaskEndedSuccessfully());
+                    .setTaskGroupSuccess(childTaskGroupSuccess);
+            if 
(!childTaskParameters.equals(dbAsyncTask.getActionParameters())) {
+                imagesParameters.add(childTaskParameters);
+            }
         }
+        
dbAsyncTask.getActionParameters().setImagesParameters(imagesParameters);
 
         try {
             log.infoFormat("EntityAsyncTask::EndCommandAction [within thread] 
context: Attempting to EndAction '{0}', executionIndex: '{1}'",
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
index 9f880f8..e07e6d1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
@@ -279,7 +279,6 @@
 
             if (!vdsRetValue2.getSucceeded()) {
                 if (startPollingTasks) {
-                    updateTasksWithActionParameters();
                     AsyncTaskManager.getInstance().StartPollingTask(guid1);
                 }
                 return false;
@@ -289,19 +288,12 @@
             getTaskIdList().add(guid2);
 
             if (startPollingTasks) {
-                updateTasksWithActionParameters();
                 AsyncTaskManager.getInstance().StartPollingTask(guid1);
                 AsyncTaskManager.getInstance().StartPollingTask(guid2);
             }
         }
 
         return true;
-    }
-
-    private void updateTasksWithActionParameters() {
-        for (Guid taskID : getReturnValue().getTaskIdList()) {
-            getAsyncTaskManager().UpdateTaskWithActionParameters(taskID, 
getParameters());
-        }
     }
 
     @Override
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 aa93b03..0d87ced 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
@@ -157,9 +157,6 @@
     }
 
     public ArrayList<VdcActionParametersBase> getImagesParameters() {
-        if (imagesParameters == null) {
-            imagesParameters = new ArrayList<VdcActionParametersBase>();
-        }
         return imagesParameters;
     }
 
@@ -169,11 +166,13 @@
 
     public boolean getTaskGroupSuccess() {
         boolean childrenTasksSuccess = taskGroupSuccess;
-        for (VdcActionParametersBase childParameters : getImagesParameters()) {
-            childrenTasksSuccess &= childParameters.getTaskGroupSuccess();
+        if (imagesParameters != null) {
+            for (VdcActionParametersBase childParameters : imagesParameters) {
+                childrenTasksSuccess &= childParameters.getTaskGroupSuccess();
 
-            if (!childrenTasksSuccess) {
-                break;
+                if (!childrenTasksSuccess) {
+                    break;
+                }
             }
         }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I43320dfb32a2477308cd881cb7d27c49f3f9f346
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