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
