Liron Aravot has uploaded a new change for review.

Change subject: core: spm stop isn't executed due to failed tasks
......................................................................

core: spm stop isn't executed due to failed tasks

StopSpmVds command is executed through ResetIrs command  by 
ReconstructMasterDomain and
RecoveryStoragePool commands. StopSpm command checks whether the
current SPM has tasks and only if it doesn't the spm is actually
stopped.

When the ResetIrs command is being executed from the
Reconstruct/Recovery commands it shouldn't be checked whether there are
spm tasks as there is no operational master domain and the spm should be
stopped.

Change-Id: Iac9038aa26d63fbbff321e6461b7bc6f0863d514
Bug-Url: https://bugzilla.redhat.com/853984
Signed-off-by: Liron Aravot <lara...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/ResetIrsVDSCommandParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SpmStopVDSCommandParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetIrsVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SpmStopVDSCommand.java
5 files changed, 38 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/91/8691/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
index 1333bb4..a10be4e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
@@ -178,6 +178,7 @@
                 ResetIrsVDSCommandParameters tempVar2 = new 
ResetIrsVDSCommandParameters(
                         getStoragePool().getId(), spm.gethost_name(), 
spm.getId());
                 tempVar2.setIgnoreStopFailed(true);
+                tempVar2.setCheckSpmTasks(false);
                 commandSucceeded = Backend.getInstance().getResourceManager()
                             .RunVdsCommand(VDSCommandType.ResetIrs, 
tempVar2).getSucceeded();
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/ResetIrsVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/ResetIrsVDSCommandParameters.java
index dc24ae5..578b23a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/ResetIrsVDSCommandParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/ResetIrsVDSCommandParameters.java
@@ -25,12 +25,22 @@
         return _hostName;
     }
 
+    public boolean getCheckSpmTasks() {
+        return checkSpmTasks;
+    }
+
+    public void setCheckSpmTasks(boolean checkSpmTasks) {
+        this.checkSpmTasks = checkSpmTasks;
+    }
+
     private boolean privateIgnoreStopFailed;
 
     public boolean getIgnoreStopFailed() {
         return privateIgnoreStopFailed;
     }
 
+    private boolean checkSpmTasks = true;
+
     public void setIgnoreStopFailed(boolean value) {
         privateIgnoreStopFailed = value;
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SpmStopVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SpmStopVDSCommandParameters.java
index 8b41f57..d786339 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SpmStopVDSCommandParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SpmStopVDSCommandParameters.java
@@ -3,6 +3,15 @@
 import org.ovirt.engine.core.compat.*;
 
 public class SpmStopVDSCommandParameters extends 
GetStorageConnectionsListVDSCommandParameters {
+    public boolean getCheckForSpmRunningTasks() {
+        return checkForSpmRunningTasks;
+    }
+
+    public void setCheckForSpmRunningTasks(boolean checkForSpmRunningTasks) {
+        this.checkForSpmRunningTasks = checkForSpmRunningTasks;
+    }
+
+    private boolean checkForSpmRunningTasks = true;
     public SpmStopVDSCommandParameters(Guid vdsId, Guid storagePoolId) {
         super(vdsId, storagePoolId);
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetIrsVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetIrsVDSCommand.java
index 1450cb2..519304f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetIrsVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetIrsVDSCommand.java
@@ -20,10 +20,12 @@
         if (StringHelper.EqOp(parameters.getHostName(), 
getCurrentIrsProxyData().getmCurrentIrsHost()) ||
                 
StringHelper.isNullOrEmpty(getCurrentIrsProxyData().getmCurrentIrsHost())) {
             Guid vdsId = parameters.getVdsId();
+            SpmStopVDSCommandParameters spmStopParams = new 
SpmStopVDSCommandParameters(vdsId, parameters.getStoragePoolId());
+            
spmStopParams.setCheckForSpmRunningTasks(getParameters().getCheckSpmTasks());
             if (ResourceManager
                     .getInstance()
                     .runVdsCommand(VDSCommandType.SpmStop,
-                            new SpmStopVDSCommandParameters(vdsId, 
parameters.getStoragePoolId())).getSucceeded()
+                            spmStopParams).getSucceeded()
                     || parameters.getIgnoreStopFailed()) {
                 getCurrentIrsProxyData().ResetIrs();
                 storage_pool pool = 
DbFacade.getInstance().getStoragePoolDao().get(parameters.getStoragePoolId());
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SpmStopVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SpmStopVDSCommand.java
index 1189139..760be3c 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SpmStopVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SpmStopVDSCommand.java
@@ -23,19 +23,21 @@
         try {
             if (canVdsBeReached()) {
                 boolean performSpmStop = true;
-                try {
-                    VDSReturnValue vdsReturnValue = ResourceManager
-                            .getInstance()
-                            
.runVdsCommand(VDSCommandType.HSMGetAllTasksStatuses,
-                                    new 
VdsIdVDSCommandParametersBase(getVds().getId()));
-                    performSpmStop =
-                            vdsReturnValue.getReturnValue() != null ? 
((java.util.HashMap<Guid, AsyncTaskStatus>) 
vdsReturnValue.getReturnValue()).isEmpty()
-                                    : true;
-                    
getVDSReturnValue().setSucceeded(vdsReturnValue.getSucceeded());
-                    
getVDSReturnValue().setVdsError(vdsReturnValue.getVdsError());
-                } catch (java.lang.Exception e2) {
-                    log.infoFormat("SpmStopVDSCommand::Could not get tasks on 
vds {0} stopping SPM",
-                            getVds().getvds_name());
+                if (getParameters().getCheckForSpmRunningTasks()) {
+                    try {
+                        VDSReturnValue vdsReturnValue = ResourceManager
+                                .getInstance()
+                                
.runVdsCommand(VDSCommandType.HSMGetAllTasksStatuses,
+                                        new 
VdsIdVDSCommandParametersBase(getVds().getId()));
+                        performSpmStop =
+                                vdsReturnValue.getReturnValue() != null ? 
((java.util.HashMap<Guid, AsyncTaskStatus>) 
vdsReturnValue.getReturnValue()).isEmpty()
+                                        : true;
+                        
getVDSReturnValue().setSucceeded(vdsReturnValue.getSucceeded());
+                        
getVDSReturnValue().setVdsError(vdsReturnValue.getVdsError());
+                    } catch (java.lang.Exception e2) {
+                        log.infoFormat("SpmStopVDSCommand::Could not get tasks 
on vds {0} stopping SPM",
+                                getVds().getvds_name());
+                    }
                 }
                 if (performSpmStop) {
                     log.infoFormat("SpmStopVDSCommand::Stopping SPM on vds 
{0}, pool id {1}", getVds().getvds_name(),


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

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

Reply via email to