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
