Michael Kublin has uploaded a new change for review. Change subject: engine: Host statuses - transaction ......................................................................
engine: Host statuses - transaction The following patch will move a transaction inside SetVdsStatusCommand, and transaction will run only on updates of db and not whole SetVdsStatusCommand. Also marked some commands by @NonTransactiveCommandAttribute, like MaintenanceVdsCommand and SetNonOperationalVdsCommand because of only db operation is inside of SetVdsStatusCommand Change-Id: I710a0474798036860f130c8b2bcc2e7a557714ea Signed-off-by: Michael Kublin <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ActivateVdsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetNonOperationalVdsCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/SetVdsStatusVDSCommand.java 5 files changed, 22 insertions(+), 28 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/12669/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ActivateVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ActivateVdsCommand.java index df46248..90d24ba 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ActivateVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ActivateVdsCommand.java @@ -65,15 +65,8 @@ vds.getStoragePoolName()); try { ExecutionHandler.updateSpecificActionJobCompleted(vds.getId(), VdcActionType.MaintenanceVds, false); - TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { - - @Override - public Void runInTransaction() { - runVdsCommand(VDSCommandType.SetVdsStatus, - new SetVdsStatusVDSCommandParameters(getVdsId(), VDSStatus.Unassigned)); - return null; - } - }); + runVdsCommand(VDSCommandType.SetVdsStatus, + new SetVdsStatusVDSCommandParameters(getVdsId(), VDSStatus.Unassigned)); setSucceeded(runVdsCommand(VDSCommandType.ActivateVds, new ActivateVdsVDSCommandParameters(getVdsId())) .getSucceeded()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java index e3579ec..2ed6633 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java @@ -42,6 +42,7 @@ import org.ovirt.engine.core.utils.ejb.EjbUtils; import org.ovirt.engine.core.vdsbroker.irsbroker.IrsBrokerCommand; +@NonTransactiveCommandAttribute public class MaintenanceVdsCommand<T extends MaintenanceVdsParameters> extends VdsCommand<T> { private static final long serialVersionUID = -7604781532599945079L; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java index 6804765..0f7b86d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java @@ -21,8 +21,6 @@ import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; import org.ovirt.engine.core.dal.VdcBllMessages; -import org.ovirt.engine.core.utils.transaction.TransactionMethod; -import org.ovirt.engine.core.utils.transaction.TransactionSupport; public class RestartVdsCommand<T extends FenceVdsActionParameters> extends FenceVdsBaseCommand<T> { protected List<VM> getVmList() { @@ -93,16 +91,7 @@ super.rollback(); final Guid vdsId = getVdsId(); log.warnFormat("Restart host action failed, updating host {0} to {1}", vdsId, VDSStatus.NonResponsive.name()); - TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { - @Override - public Void runInTransaction() { - Backend.getInstance() - .getResourceManager() - .RunVdsCommand(VDSCommandType.SetVdsStatus, - new SetVdsStatusVDSCommandParameters(vdsId, VDSStatus.NonResponsive)); - return null; - } - }); + runVdsCommand(VDSCommandType.SetVdsStatus, new SetVdsStatusVDSCommandParameters(vdsId, VDSStatus.NonResponsive)); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetNonOperationalVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetNonOperationalVdsCommand.java index a1917b6..32d25f6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetNonOperationalVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetNonOperationalVdsCommand.java @@ -19,6 +19,7 @@ * This command will try to migrate all the vds vms (if needed) and move the vds * to Non-Operational state */ +@NonTransactiveCommandAttribute public class SetNonOperationalVdsCommand<T extends SetNonOperationalVdsParameters> extends MaintenanceVdsCommand<T> { public SetNonOperationalVdsCommand(T parameters) { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/SetVdsStatusVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/SetVdsStatusVDSCommand.java index 7428997..cf98014 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/SetVdsStatusVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/SetVdsStatusVDSCommand.java @@ -8,6 +8,8 @@ import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; +import org.ovirt.engine.core.utils.transaction.TransactionMethod; +import org.ovirt.engine.core.utils.transaction.TransactionSupport; public class SetVdsStatusVDSCommand<P extends SetVdsStatusVDSCommandParameters> extends VdsIdVDSCommandBase<P> { public SetVdsStatusVDSCommand(P parameters) { @@ -16,25 +18,33 @@ @Override protected void ExecuteVdsIdCommand() { - SetVdsStatusVDSCommandParameters parameters = getParameters(); + final SetVdsStatusVDSCommandParameters parameters = getParameters(); if (_vdsManager != null) { - VDS vds = getVds(); + final VDS vds = getVds(); updateVdsFromParameters(parameters, vds); - _vdsManager.setStatus(parameters.getStatus(), vds); - _vdsManager.UpdateDynamicData(vds.getDynamicData()); - _vdsManager.UpdateStatisticsData(vds.getStatisticsData()); + TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { + + @Override + public Void runInTransaction() { + _vdsManager.setStatus(parameters.getStatus(), vds); + _vdsManager.UpdateDynamicData(vds.getDynamicData()); + _vdsManager.UpdateStatisticsData(vds.getStatisticsData()); + return null; + } + }); if (vds.getSpmStatus() != VdsSpmStatus.None && parameters.getStatus() != VDSStatus.Up) { - log.infoFormat("VDS {0} is spm and moved from up calling ResetIrs.",vds.getName()); + log.infoFormat("VDS {0} is spm and moved from up calling ResetIrs.", vds.getName()); // check if this host was spm and reset if do. getVDSReturnValue().setSucceeded( ResourceManager .getInstance() .runVdsCommand( VDSCommandType.ResetIrs, - new ResetIrsVDSCommandParameters(vds.getStoragePoolId(), vds.getId())).getSucceeded()); + new ResetIrsVDSCommandParameters(vds.getStoragePoolId(), vds.getId())) + .getSucceeded()); } } else { getVDSReturnValue().setSucceeded(false); -- To view, visit http://gerrit.ovirt.org/12669 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I710a0474798036860f130c8b2bcc2e7a557714ea 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
