Arik Hadas has uploaded a new change for review. Change subject: core: process VMs that went down on separate thread ......................................................................
core: process VMs that went down on separate thread In order to prevent the processing of VMs that went down from blocking the VURTI thread, we'll do the processing in a separate thread. Change-Id: I903992087c7d5975548746f45451fccbfd38b299 Bug-Url: https://bugzilla.redhat.com/1108675 Signed-off-by: Arik Hadas <aha...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/DestroyVmVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java 5 files changed, 20 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/28816/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java index 66d8a8b..6c40ac9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -106,9 +107,16 @@ } @Override - public void processOnVmStop(Guid vmId) { - Backend.getInstance().runInternalAction(VdcActionType.ProcessDownVm, - new IdParameters(vmId)); + public void processOnVmStop(final Collection<Guid> vmIds) { + ThreadPoolUtil.execute(new Runnable() { + @Override + public void run() { + for (Guid vmId : vmIds) { + Backend.getInstance().runInternalAction(VdcActionType.ProcessDownVm, + new IdParameters(vmId)); + } + } + }); } @Override diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java index ed2f7e6..9ce7fcd6 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.common.businessentities; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -25,7 +26,7 @@ EventResult masterDomainNotOperational(Guid storageDomainId, Guid storagePoolId, boolean isReconstructToInactiveDomains, boolean canReconstructToCurrentMaster); // BLL - void processOnVmStop(Guid vmId); + void processOnVmStop(Collection<Guid> vmIds); boolean vdsUpEvent(VDS vds); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/DestroyVmVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/DestroyVmVDSCommand.java index 59f0fc2..5d1df62 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/DestroyVmVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/DestroyVmVDSCommand.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.vdsbroker; +import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.businessentities.VM; @@ -110,7 +111,7 @@ public Void runInTransaction() { ResourceManager.getInstance() .getEventListener() - .processOnVmStop(curVm.getId()); + .processOnVmStop(Collections.singleton(curVm.getId())); return null; } }); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java index 3f42c7e..be822af 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java @@ -173,12 +173,9 @@ } public void HandleVdsFinishedInit(Guid vdsId) { - HashSet<Guid> vms = null; - if ((vms = _vdsAndVmsList.get(vdsId)) != null) { - for (Guid vmId : vms) { - getEventListener().processOnVmStop(vmId); - log.info("Procceed on vm stop entered: " + vmId.toString()); - } + HashSet<Guid> vms = _vdsAndVmsList.get(vdsId); + if (vms != null) { + getEventListener().processOnVmStop(vms); _vdsAndVmsList.remove(vdsId); } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java index 281429e..3803705 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java @@ -447,9 +447,8 @@ } // process all vms that went down - for (Guid vm_guid : _vmsMovedToDown) { - getVdsEventListener().processOnVmStop(vm_guid); - } + getVdsEventListener().processOnVmStop(_vmsMovedToDown); + for (Guid vm_guid : _vmsToRemoveFromAsync) { ResourceManager.getInstance().RemoveAsyncRunningVm(vm_guid); } -- To view, visit http://gerrit.ovirt.org/28816 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I903992087c7d5975548746f45451fccbfd38b299 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Arik Hadas <aha...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches