Ravi Nori has uploaded a new change for review.

Change subject: engine : Zombie tasks should endWithFailure
......................................................................

engine : Zombie tasks should endWithFailure

Zombie tasks that are stopped and cleared should
be marked so they end in failure

Change-Id: I8ab86d97dbf1c94dd887c5ccc2a438a41ccd1f37
Bug-Url: https://bugzilla.redhat.com/1122639
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/SPMTask.java
3 files changed, 22 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/30935/1

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 6fd78c3..1adcbd0 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
@@ -389,11 +389,12 @@
                 AuditLogableBase logable = new AuditLogableBase();
                 logable.addCustomValue("CommandName", 
task.getParameters().getDbAsyncTask().getaction_type().toString());
                 logable.addCustomValue("Date", 
task.getParameters().getDbAsyncTask().getStartTime().toString());
-
                 // if task is not finish and not unknown then it's in running
                 // status
                 if (task.getLastTaskStatus().getStatus() != 
AsyncTaskStatusEnum.finished
                         && task.getLastTaskStatus().getStatus() != 
AsyncTaskStatusEnum.unknown) {
+                    // mark it as a zombie task, Will result in failure of the 
command
+                    task.setZombieTask(true);
                     AuditLogDirector.log(logable, 
AuditLogType.TASK_STOPPING_ASYNC_TASK);
 
                     log.infoFormat("Cleaning zombie tasks: Stopping async task 
{0} that started at {1}",
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
index 8a48cfd..5a56d7f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
@@ -23,6 +23,8 @@
 
     protected final CommandCoordinator coco;
 
+    private boolean zombieTask = false;
+
     public SPMAsyncTask(CommandCoordinator coco, AsyncTaskParameters 
parameters) {
         this.coco = coco;
         setParameters(parameters);
@@ -217,6 +219,13 @@
         if (getState() != AsyncTaskState.Ended) {
             setState(AsyncTaskState.Ended);
             setLastStatusAccessTime();
+        }
+
+        // A zombie task that has been stopped and cleared needs to failed
+        if (isZombieTask()) {
+            
getParameters().getDbAsyncTask().getTaskParameters().setTaskGroupSuccess(false);
+            
ExecutionHandler.endTaskStep(privateParameters.getDbAsyncTask().getStepId(), 
JobExecutionStatus.FAILED);
+            OnTaskEndFailure();
         }
 
         // A task that belongs to a partially submitted command needs to be
@@ -492,4 +501,11 @@
         this.partiallyCompletedCommandTask = val;
     }
 
+    public boolean isZombieTask() {
+        return zombieTask;
+    }
+
+    public void setZombieTask(boolean zombieTask) {
+        this.zombieTask = zombieTask;
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/SPMTask.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/SPMTask.java
index 83aa26f..8b02a82 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/SPMTask.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/SPMTask.java
@@ -60,6 +60,10 @@
 
     boolean isPartiallyCompletedCommandTask();
 
+    void setZombieTask(boolean val);
+
+    boolean isZombieTask();
+
     Map<Guid, VdcObjectType> getEntitiesMap();
 
     void setEntitiesMap(Map<Guid, VdcObjectType> entitiesMap);


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ab86d97dbf1c94dd887c5ccc2a438a41ccd1f37
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to