Ravi Nori has uploaded a new change for review.

Change subject: engine : Tunnel calls to AsyncTaskManager and indroduce CoCo
......................................................................

engine : Tunnel calls to AsyncTaskManager and indroduce CoCo

All calls to AsyncTaskManager are made through TaskManagerUtil.
This lets us move the code around without effecting other classes.

CreateTask, CreateConcreteTask, CancelTask and RevertTask have
been moved to CommandCoordinator, a new class. Which just has these
four functions for now.

Change-Id: Id270e2b9b5927a10f4272a3a6907a954b4d54de8
Signed-off-by: Ravi Nori <[email protected]>
---
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/GetTasksStatusesByTasksIDsQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
10 files changed, 42 insertions(+), 153 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/13820/1

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 cac8cf5..f87817d 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
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.bll;
 
 import org.ovirt.engine.core.bll.tasks.SPMAsyncTask;
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -33,8 +32,8 @@
 import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
 import org.ovirt.engine.core.bll.quota.QuotaVdsDependent;
 import org.ovirt.engine.core.bll.session.SessionDataContainer;
-import org.ovirt.engine.core.bll.tasks.AsyncTaskUtils;
 import org.ovirt.engine.core.bll.tasks.SPMAsyncTaskHandler;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -43,14 +42,9 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskCreationInfo;
-import org.ovirt.engine.core.common.asynctasks.AsyncTaskParameters;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.ActionVersionMap;
-import org.ovirt.engine.core.common.businessentities.AsyncTaskResultEnum;
-import org.ovirt.engine.core.common.businessentities.AsyncTaskStatus;
-import org.ovirt.engine.core.common.businessentities.AsyncTaskStatusEnum;
-import org.ovirt.engine.core.common.businessentities.AsyncTasks;
 import org.ovirt.engine.core.common.businessentities.BusinessEntity;
 import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot;
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot.EntityStatusSnapshot;
@@ -62,12 +56,10 @@
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.errors.VdcFault;
 import org.ovirt.engine.core.common.interfaces.IVdcUser;
-import org.ovirt.engine.core.common.job.ExternalSystemType;
 import org.ovirt.engine.core.common.job.Step;
 import org.ovirt.engine.core.common.job.StepEnum;
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.common.utils.ValidationUtils;
-import 
org.ovirt.engine.core.common.vdscommands.SPMTaskGuidBaseVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
@@ -95,7 +87,6 @@
 import org.ovirt.engine.core.utils.lock.LockManagerFactory;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
-import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
 import org.ovirt.engine.core.utils.transaction.RollbackHandler;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
@@ -1036,7 +1027,7 @@
      * @param parameters parameter of the creating command
      * @return
      */
-    protected VdcActionParametersBase getParametersForTask(VdcActionType 
parentCommandType,
+    public VdcActionParametersBase getParametersForTask(VdcActionType 
parentCommandType,
             VdcActionParametersBase parameters) {
         // If there is no parent command, the command that its type
         // will be stored in the DB for thr task is the one creating the 
command
@@ -1149,7 +1140,7 @@
         // rollback the transaction.
         if (!executeWithoutTransaction()) {
             if (TransactionSupport.current() == null) {
-                cancelTasks();
+                TaskManagerUtil.cancelTasks(this);
             }
 
             // we don't want to commit transaction here
@@ -1192,7 +1183,7 @@
         }
     }
 
-    private boolean hasTasks() {
+    public boolean hasTasks() {
         return !getReturnValue().getTaskIdList().isEmpty();
     }
 
@@ -1216,7 +1207,7 @@
         return annotation == null;
     }
 
-    protected T getParameters() {
+    public T getParameters() {
         return _parameters;
     }
 
@@ -1273,9 +1264,19 @@
             VdcActionType parentCommand,
             VdcObjectType entityType,
             Guid... entityIds) {
-        return createTask(asyncTaskCreationInfo, parentCommand, null, 
entityType, entityIds);
+        return TaskManagerUtil.createTask(this, asyncTaskCreationInfo, 
parentCommand, null, entityType, entityIds);
     }
 
+    /**
+     * Create the {@link SPMAsyncTask} object to be run
+     * @param asyncTaskCreationInfo Info on how to create the task
+     * @param parentCommand The type of command issuing the task
+     * @return An {@link SPMAsyncTask} object representing the task to be run
+     */
+    public SPMAsyncTask concreteCreateTask
+            (AsyncTaskCreationInfo asyncTaskCreationInfo, VdcActionType 
parentCommand) {
+        return TaskManagerUtil.concreteCreateTask(this, asyncTaskCreationInfo, 
parentCommand);
+    }
     /**
      * Use this method in order to create task in the AsyncTaskManager in a 
safe way. If you use this method within a
      * certain command, make sure that the command implemented the 
ConcreteCreateTask method.
@@ -1292,86 +1293,11 @@
      */
     protected Guid createTask(AsyncTaskCreationInfo asyncTaskCreationInfo,
             VdcActionType parentCommand) {
-        return createTask(asyncTaskCreationInfo, parentCommand, null, null, 
EMPTY_GUID_ARRAY);
-    }
-
-    /**
-     * Use this method in order to create task in the AsyncTaskManager in a 
safe way. If you use this method within a
-     * certain command, make sure that the command implemented the 
ConcreteCreateTask method.
-     *
-     * @param asyncTaskCreationInfo
-     *            info to send to AsyncTaskManager when creating the task.
-     * @param parentCommand
-     *            VdcActionType of the command that its EndAction we want to 
invoke when tasks are finished.
-     * @param description
-     *            A message which describes the task
-     * @param entityType
-     *            type of entities that are associated with the task
-     * @param entityIds
-     *            Ids of entities to be associated with task
-     * @return Guid of the created task.
-     */
-    protected Guid createTask(AsyncTaskCreationInfo asyncTaskCreationInfo,
-            VdcActionType parentCommand,
-            String description, VdcObjectType entityType, Guid... entityIds) {
-        Guid retValue = Guid.Empty;
-
-        Transaction transaction = TransactionSupport.suspend();
-
-        try {
-            Step taskStep =
-                    ExecutionHandler.addTaskStep(getExecutionContext(),
-                            
StepEnum.getStepNameByTaskType(asyncTaskCreationInfo.getTaskType()),
-                            description);
-            if (taskStep != null) {
-                asyncTaskCreationInfo.setStepId(taskStep.getId());
-            }
-            SPMAsyncTask task = concreteCreateTask(asyncTaskCreationInfo, 
parentCommand);
-            retValue = task.getTaskID();
-            task.setEntityType(entityType);
-            task.setAssociatedEntities(entityIds);
-            AsyncTaskUtils.addOrUpdateTaskInDB(task);
-            getAsyncTaskManager().lockAndAddTaskToManager(task);
-            retValue = task.getTaskID();
-            ExecutionHandler.updateStepExternalId(taskStep, retValue, 
ExternalSystemType.VDSM);
-        } catch (RuntimeException ex) {
-            log.errorFormat("Error during CreateTask for command: {0}. 
Exception {1}", getClass().getName(), ex);
-        } finally {
-            TransactionSupport.resume(transaction);
-        }
-
-        return retValue;
-    }
-
-    /**
-     * Create the {@link SPMAsyncTask} object to be run
-     * @param asyncTaskCreationInfo Info on how to create the task
-     * @param parentCommand The type of command issuing the task
-     * @return An {@link SPMAsyncTask} object representing the task to be run
-     */
-    protected SPMAsyncTask concreteCreateTask
-            (AsyncTaskCreationInfo asyncTaskCreationInfo, VdcActionType 
parentCommand) {
-
-        VdcActionParametersBase parentParameters = 
getParametersForTask(parentCommand, getParameters());
-        if (parentParameters.getParametersCurrentUser() == null && 
getCurrentUser() != null) {
-            parentParameters.setParametersCurrentUser(getCurrentUser());
-        }
-        AsyncTaskParameters p =
-                new AsyncTaskParameters(asyncTaskCreationInfo, new 
AsyncTasks(parentCommand,
-                        AsyncTaskResultEnum.success,
-                        AsyncTaskStatusEnum.running,
-                        asyncTaskCreationInfo.getTaskID(),
-                        parentParameters,
-                        getParameters(),
-                        asyncTaskCreationInfo.getStepId(),
-                        
getCommandId(),asyncTaskCreationInfo.getStoragePoolID(),
-                        asyncTaskCreationInfo.getTaskType()));
-        p.setEntityId(getParameters().getEntityId());
-        return 
AsyncTaskManager.getInstance().CreateTask(internalGetTaskType(), p);
+        return TaskManagerUtil.createTask(this, asyncTaskCreationInfo, 
parentCommand, null, null, EMPTY_GUID_ARRAY);
     }
 
     /** @return The type of task that should be created for this command. 
Commands that do not create async tasks should throw a {@link 
UnsupportedOperationException} */
-    private AsyncTaskType internalGetTaskType() {
+    public AsyncTaskType internalGetTaskType() {
         if (hasTaskHandlers()) {
             if (getParameters().getExecutionReason() == 
CommandExecutionReason.REGULAR_FLOW) {
                 return getCurrentTaskHandler().getTaskType();
@@ -1388,7 +1314,7 @@
 
     protected void startPollingAsyncTasks(Collection<Guid> taskIds) {
         for (Guid taskID : taskIds) {
-            getAsyncTaskManager().StartPollingTask(taskID);
+            TaskManagerUtil.startPollingTask(taskID);
         }
     }
 
@@ -1411,45 +1337,11 @@
         } catch (NullPointerException e) {
             log.error("RollbackQuota: failed (may be because quota is 
disabled)", e);
         }
-        cancelTasks();
-    }
-
-    private void cancelTasks() {
-        if (hasTasks()) {
-            ThreadPoolUtil.execute(new Runnable() {
-                @Override
-                public void run() {
-                    log.infoFormat("Rollback for command: {0}.", 
CommandBase.this.getClass().getName());
-                    try {
-                        
getAsyncTaskManager().CancelTasks(getReturnValue().getTaskIdList());
-                    } catch (Exception e) {
-                        log.errorFormat("Failed to cancel tasks for command: 
{0}.",
-                                CommandBase.this.getClass().getName());
-                    }
-                }
-            });
-        }
+        TaskManagerUtil.cancelTasks(this);
     }
 
     protected void revertTasks() {
-        if (getParameters().getTaskIds() != null) {
-            // list to send to the PollTasks method
-            ArrayList<Guid> taskIdAsList = new ArrayList<Guid>();
-
-            for (Guid taskId : getParameters().getTaskIds()) {
-                taskIdAsList.add(taskId);
-                ArrayList<AsyncTaskStatus> tasksStatuses = 
getAsyncTaskManager().PollTasks(
-                        taskIdAsList);
-                // call revert task only if ended successfully
-                if (tasksStatuses.get(0).getTaskEndedSuccessfully()) {
-                    SPMTaskGuidBaseVDSCommandParameters tempVar = new 
SPMTaskGuidBaseVDSCommandParameters(
-                            getStoragePool().getId(), taskId);
-                    
tempVar.setCompatibilityVersion(getStoragePool().getcompatibility_version().toString());
-                    
getBackend().getResourceManager().RunVdsCommand(VDSCommandType.SPMRevertTask, 
tempVar);
-                }
-                taskIdAsList.clear();
-            }
-        }
+        TaskManagerUtil.revertTasks(this);
     }
 
     private boolean isReleaseExecute = true;
@@ -1814,10 +1706,6 @@
 
     protected QuotaManager getQuotaManager() {
         return QuotaManager.getInstance();
-    }
-
-    protected AsyncTaskManager getAsyncTaskManager() {
-        return AsyncTaskManager.getInstance();
     }
 
     protected List<SPMAsyncTaskHandler> getTaskHandlers() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTasksStatusesByTasksIDsQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTasksStatusesByTasksIDsQuery.java
index f0a217b..12240ea 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTasksStatusesByTasksIDsQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTasksStatusesByTasksIDsQuery.java
@@ -1,6 +1,6 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.common.queries.*;
 
 public class GetTasksStatusesByTasksIDsQuery<P extends 
GetTasksStatusesByTasksIDsParameters>
@@ -11,6 +11,6 @@
 
     @Override
     protected void executeQueryCommand() {
-        
getQueryReturnValue().setReturnValue(AsyncTaskManager.getInstance().PollTasks(getParameters().getTasksIDs()));
+        
getQueryReturnValue().setReturnValue(TaskManagerUtil.pollTasks(getParameters().getTasksIDs()));
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
index 954ca31..6efc5dc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
@@ -1,10 +1,10 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.AuditLogType;
@@ -245,7 +245,7 @@
                 getReturnValue().getCanDoActionMessages()
                         
.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_NOT_UP.toString());
             } else {
-                if (AsyncTaskManager.getInstance().EntityHasTasks(getVmId())) {
+                if (TaskManagerUtil.entityHasTasks(getVmId())) {
                     retValue = false;
                     
addCanDoActionMessage(VdcBllMessages.VM_CANNOT_SUSPENDE_HAS_RUNNING_TASKS);
                 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index e8e8236..0c7f8b5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -1,7 +1,5 @@
 package org.ovirt.engine.core.bll;
 
-
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import javax.annotation.PostConstruct;
 import javax.ejb.DependsOn;
 import javax.ejb.Singleton;
@@ -10,6 +8,7 @@
 import org.ovirt.engine.core.bll.gluster.GlusterManager;
 import org.ovirt.engine.core.bll.network.MacPoolManager;
 import org.ovirt.engine.core.bll.storage.StoragePoolStatusHandler;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.utils.exceptions.InitializationException;
@@ -39,7 +38,7 @@
     public void create() {
 
         ResourceManager.getInstance().init();
-        AsyncTaskManager.getInstance().InitAsyncTaskManager();
+        TaskManagerUtil.initAsyncTaskManager();
         OvfDataUpdater.getInstance().initOvfDataUpdater();
 
         if (Config.<Boolean> GetValue(ConfigValues.EnableVdsLoadBalancing)) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
index 1c0b1dd..4532e8d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
@@ -2,6 +2,7 @@
 
 import java.util.Collections;
 import java.util.Map;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.ImagesContainterParametersBase;
@@ -45,7 +46,8 @@
 
         if (vdsReturnValue != null && vdsReturnValue.getCreationInfo() != 
null) {
             getReturnValue().getInternalTaskIdList().add(
-                    createTask(vdsReturnValue.getCreationInfo(),
+                    TaskManagerUtil.createTask(this,
+                            vdsReturnValue.getCreationInfo(),
                             VdcActionType.RemoveSnapshot,
                             
ExecutionMessageDirector.resolveStepMessage(StepEnum.MERGE_SNAPSHOTS, 
getJobMessageProperties()),
                             VdcObjectType.Storage,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
index 912efae..e95080c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
@@ -1,6 +1,5 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -15,6 +14,7 @@
 import org.ovirt.engine.core.bll.snapshots.SnapshotsManager;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.storage.StoragePoolValidator;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.AuditLogType;
@@ -180,7 +180,7 @@
             }
 
             // If it is force, we cannot remove if there are task
-            if 
(AsyncTaskManager.getInstance().HasTasksByStoragePoolId(getVm().getStoragePoolId()))
 {
+            if 
(TaskManagerUtil.hasTasksByStoragePoolId(getVm().getStoragePoolId())) {
                 return 
failCanDoAction(VdcBllMessages.VM_CANNOT_REMOVE_HAS_RUNNING_TASKS);
             }
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java
index 0681574..1a2f9ed 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java
@@ -1,12 +1,12 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -68,7 +68,7 @@
         // not using getVm() since its overridden to get vm from export domain
         VM vm = getVmDAO().get(getVmId());
         if (vm != null && vm.getStatus() == VMStatus.ImageLocked) {
-            if 
(AsyncTaskManager.getInstance().hasTasksForEntityIdAndAction(vm.getId(), 
VdcActionType.ExportVm)) {
+            if (TaskManagerUtil.hasTasksForEntityIdAndAction(vm.getId(), 
VdcActionType.ExportVm)) {
                 
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_DURING_EXPORT);
                 return false;
             }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index 98c18b3..c0c05ff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -1,6 +1,5 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -15,6 +14,7 @@
 import org.ovirt.engine.core.bll.job.ExecutionContext;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.bll.storage.StoragePoolStatusHandler;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.FenceVdsActionParameters;
 import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase;
@@ -231,9 +231,9 @@
     @Override
     public void storagePoolUpEvent(storage_pool storagePool, boolean isNewSpm) 
{
         if (isNewSpm) {
-            AsyncTaskManager.getInstance().StopStoragePoolTasks(storagePool);
+            TaskManagerUtil.stopStoragePoolTasks(storagePool);
         } else {
-            
AsyncTaskManager.getInstance().AddStoragePoolExistingTasks(storagePool);
+            TaskManagerUtil.addStoragePoolExistingTasks(storagePool);
         }
     }
 
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 6007102..c07a795 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
@@ -1,11 +1,11 @@
 package org.ovirt.engine.core.bll;
 
-import org.ovirt.engine.core.bll.tasks.AsyncTaskManager;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
 import org.ovirt.engine.core.bll.network.MacPoolManager;
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -280,7 +280,7 @@
 
             if (!vdsRetValue2.getSucceeded()) {
                 if (startPollingTasks) {
-                    AsyncTaskManager.getInstance().StartPollingTask(guid1);
+                    TaskManagerUtil.startPollingTask(guid1);
                 }
                 return false;
             }
@@ -289,8 +289,8 @@
             getTaskIdList().add(guid2);
 
             if (startPollingTasks) {
-                AsyncTaskManager.getInstance().StartPollingTask(guid1);
-                AsyncTaskManager.getInstance().StartPollingTask(guid2);
+                TaskManagerUtil.startPollingTask(guid1);
+                TaskManagerUtil.startPollingTask(guid2);
             }
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
index 2fb54f1..f8d9bb9 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
@@ -46,7 +46,7 @@
 /**
  * AsyncTaskManager: Singleton, manages all tasks in the system.
  */
-public final class AsyncTaskManager {
+final class AsyncTaskManager {
     private static final Log log = LogFactory.getLog(AsyncTaskManager.class);
 
     /** Map which consist all tasks that currently are monitored **/


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

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

Reply via email to