Michael Kublin has uploaded a new change for review.

Change subject: core: Removed unneeded quartz job scheduling during run vm
......................................................................

core: Removed unneeded quartz job scheduling during run vm

The following patch is simple, I remove a scheduled quarzt job which
should update a db.
The main proble which is solved is a job was scheduled each run vm, so
under load we scheduled a number of jobs equals to number of run vms,
it is similar to DDOS attack on internal quartz scheduler.

Change-Id: I8d2365910f471bf01774d3ff7c7fb49520af5386
Signed-off-by: Michael Kublin <[email protected]>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
1 file changed, 11 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/9373/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
index 9e3a418..73c5be6 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.vdsbroker;
 
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
@@ -13,11 +12,8 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.TransactionScopeOption;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.utils.ThreadUtils;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
-import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
-import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.CreateVDSCommand;
@@ -55,7 +51,7 @@
                             command.Execute();
                             if (command.getVDSReturnValue().getSucceeded()) {
                                 vm.setis_initialized(true);
-                                saveSetInitializedToDbThreaded();
+                                saveSetInitializedToDb(vm.getId());
                             } else {
                                 HandleCommandResult(command);
                             }
@@ -65,7 +61,7 @@
                             command.Execute();
                             HandleCommandResult(command);
                             vm.setis_initialized(true);
-                            saveSetInitializedToDbThreaded();
+                            saveSetInitializedToDb(vm.getId());
                         }
 
                         if (command.getVDSReturnValue().getSucceeded()) {
@@ -149,12 +145,6 @@
                 return false;
             }
         }
-        // if (_vdsManager.VmDict.ContainsKey(CreateVmParameters.Vm.vm_guid))
-        // {
-        // VDSReturnValue.ReturnValue =
-        // _vdsManager.VmDict[CreateVmParameters.Vm.vm_guid].status;
-        // return false;
-        // }
         return true;
     }
 
@@ -174,29 +164,15 @@
         }
     }
 
-    private void saveSetInitializedToDbThreaded() {
-        // TODO use thread pool
-        SchedulerUtilQuartzImpl.getInstance().scheduleAOneTimeJob(this, 
"saveSetInitializedToDbOnTimer", new Class[0],
-                new Object[0], 0, TimeUnit.MILLISECONDS);
-    }
-
-    @OnTimerMethodAnnotation("saveSetInitializedToDbOnTimer")
-    public void saveSetInitializedToDbOnTimer() {
-        for (int i = 1; i < 6; i++) {
-            try {
-                
DbFacade.getInstance().SaveIsInitialized(getParameters().getVm().getStaticData().getId(),
-                        
getParameters().getVm().getStaticData().getis_initialized());
-                return;
-            } catch (RuntimeException ex) {
-                log.infoFormat(
-                        "VDS::Failed save vm static to DB, try number {4}. vm: 
{0} in vds = {1} : {2} error = {3}",
-                        getParameters().getVm().getvm_name(), 
getVds().getId(), getVds().getvds_name(),
-                        ex.getMessage(), i);
-                ThreadUtils.sleep(1000);
-            }
-        }
-        log.errorFormat("VDS::Failed save vm static to DB. vm: {0} in vds = 
{1} : {2}.", getParameters()
-                .getVm().getvm_name(), getVds().getId(), 
getVds().getvds_name());
+    private void saveSetInitializedToDb(final Guid vmId) {
+        TransactionSupport.executeInScope(TransactionScopeOption.RequiresNew,
+                new TransactionMethod<Void>() {
+                    @Override
+                    public Void runInTransaction() {
+                        DbFacade.getInstance().SaveIsInitialized(vmId, true);
+                        return null;
+                    }
+                });
     }
 
     private static Log log = LogFactory.getLog(CreateVmVDSCommand.class);


--
To view, visit http://gerrit.ovirt.org/9373
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8d2365910f471bf01774d3ff7c7fb49520af5386
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

Reply via email to