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