Arik Hadas has uploaded a new change for review. Change subject: core: in-memory lock for imported vm ......................................................................
core: in-memory lock for imported vm Lock the VM that is being imported with in-memory lock for the whole import operation. Change-Id: I13970306bfc01e11a1d130f5ae818971e18c9634 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommandBase.java 2 files changed, 26 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/38032/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java index 89f2bae..9bdf3d7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java @@ -163,14 +163,6 @@ getVmIsBeingImportedMessage())); } - private String getVmIsBeingImportedMessage() { - StringBuilder builder = new StringBuilder(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_BEING_IMPORTED.name()); - if (getVmName() != null) { - builder.append(String.format("$VmName %1$s", getVmName())); - } - return builder.toString(); - } - protected ImportVmCommand(Guid commandId) { super(commandId); } @@ -261,7 +253,7 @@ } private void initImportClonedVm() { - Guid guid = Guid.newGuid(); + Guid guid = getParameters().getVm().getId(); getVm().setId(guid); setVmId(guid); getVm().setName(getParameters().getVm().getName()); @@ -318,7 +310,7 @@ VM vm = LinqUtils.firstOrNull(vms, new Predicate<VM>() { @Override public boolean eval(VM evalVm) { - return evalVm.getId().equals(getParameters().getVm().getId()); + return evalVm.getId().equals(getParameters().getVmId()); } }); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommandBase.java index 9a5565b..561e7e5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommandBase.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -66,18 +65,39 @@ } @Override + @SuppressWarnings("serial") protected Map<String, Pair<String, String>> getExclusiveLocks() { if (getParameters().getVm() != null && !StringUtils.isBlank(getParameters().getVm().getName())) { - return Collections.singletonMap(getParameters().getVm().getName(), - LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM_NAME, - VdcBllMessages.ACTION_TYPE_FAILED_NAME_ALREADY_USED)); + return new HashMap<String, Pair<String, String>>() { + { + put(getParameters().getVm().getName(), + LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM_NAME, + VdcBllMessages.ACTION_TYPE_FAILED_NAME_ALREADY_USED)); + + put(getParameters().getVm().getId().toString(), + LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM, + getVmIsBeingImportedMessage())); + } + }; } + return null; + } + + protected String getVmIsBeingImportedMessage() { + StringBuilder builder = new StringBuilder(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_BEING_IMPORTED.name()); + if (getVmName() != null) { + builder.append(String.format("$VmName %1$s", getVmName())); + } + return builder.toString(); } @Override protected void postConstruct() { T parameters = getParameters(); + if (parameters.isImportAsNewEntity() && parameters.getVmId().equals(parameters.getVm().getId())) { + parameters.getVm().setId(Guid.newGuid()); + } setStoragePoolId(parameters.getStoragePoolId()); imageToDestinationDomainMap = parameters.getImageToDestinationDomainMap(); } -- To view, visit http://gerrit.ovirt.org/38032 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I13970306bfc01e11a1d130f5ae818971e18c9634 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
