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

Reply via email to