Liran Zelkha has uploaded a new change for review.

Change subject: engine : VdsUpdateRuntimeInfo updates the data of a specific 
VDS.
......................................................................

engine : VdsUpdateRuntimeInfo updates the data of a specific VDS.

This change migrates all VM updates the VdsUpdateRuntimeInfo process does to
batch updates - improving performance.

Change-Id: Ie3e9735f4174ebabbe293d397d931aba72bbbd7b
Signed-off-by: [email protected] <[email protected]>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
7 files changed, 116 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/16066/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAO.java
index b120789..c4bd2a7 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAO.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.VmDynamic;
@@ -64,4 +65,10 @@
      *   otherwise
      */
     boolean updateConsoleUserWithOptimisticLocking(VmDynamic vm);
+
+    /**
+     * Store a bunch of VM Dynamic objects in the database in a single batch 
statement
+     * @param vmDynamicToSave
+     */
+    void updateAllInTransaction(Map<Guid, VmDynamic> vmDynamicToSave);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java
index 7b965cd..d054502 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.NGuid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
+import org.ovirt.engine.core.dal.dbbroker.EntityToMapSqlParameterMapper;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 
@@ -177,4 +178,52 @@
             }
         };
     }
+
+    @Override
+    public void updateAllInTransaction(Map<Guid, VmDynamic> vmDynamicToSave) {
+        updateAllInBatch("updatevmdynamic", vmDynamicToSave.values(), new 
EntityToMapSqlParameterMapper<VmDynamic>() {
+
+            @Override
+            public MapSqlParameterSource map(VmDynamic entity) {
+                MapSqlParameterSource paramValue = new MapSqlParameterSource();
+
+                paramValue.addValue("guest_cur_user_name", 
entity.getGuestCurrentUserName());
+                paramValue.addValue("console_cur_user_name", 
entity.getConsoleCurrentUserName());
+                paramValue.addValue("guest_last_login_time", 
entity.getGuestLastLoginTime());
+                paramValue.addValue("guest_last_logout_time", 
entity.getGuestLastLogoutTime());
+                paramValue.addValue("console_user_id", 
entity.getConsoleUserId());
+                paramValue.addValue("guest_os", entity.getGuestOs());
+                paramValue.addValue("migrating_to_vds", 
entity.getMigratingToVds());
+                paramValue.addValue("run_on_vds", entity.getRunOnVds());
+                paramValue.addValue("status", entity.getStatus());
+                paramValue.addValue("vm_guid", entity.getId());
+                paramValue.addValue("vm_host", entity.getVmHost());
+                paramValue.addValue("vm_ip", entity.getVmIp());
+                paramValue.addValue("last_start_time", 
entity.getLastStartTime());
+                paramValue.addValue("vm_pid", entity.getVmPid());
+                paramValue.addValue("display", entity.getDisplay());
+                paramValue.addValue("acpi_enable", entity.getAcpiEnable());
+                paramValue.addValue("session", entity.getSession());
+                paramValue.addValue("display_ip", entity.getDisplayIp());
+                paramValue.addValue("display_type", entity.getDisplayType());
+                paramValue.addValue("kvm_enable", entity.getKvmEnable());
+                paramValue.addValue("boot_sequence", entity.getBootSequence());
+                paramValue.addValue("display_secure_port", 
entity.getDisplaySecurePort());
+                paramValue.addValue("utc_diff", entity.getUtcDiff());
+                paramValue.addValue("last_vds_run_on", 
entity.getLastVdsRunOn());
+                paramValue.addValue("client_ip", entity.getClientIp());
+                paramValue.addValue("guest_requested_memory", 
entity.getGuestRequestedMemory());
+                paramValue.addValue("hibernation_vol_handle", 
entity.getHibernationVolHandle());
+                paramValue.addValue("exit_status", entity.getExitStatus());
+                paramValue.addValue("pause_status", entity.getPauseStatus());
+                paramValue.addValue("exit_message", entity.getExitMessage());
+                paramValue.addValue("hash", entity.getHash());
+                paramValue.addValue("guest_agent_nics_hash", 
entity.getGuestAgentNicsHash());
+                paramValue.addValue("last_watchdog_event", 
entity.getLastWatchdogEvent());
+                paramValue.addValue("last_watchdog_action", 
entity.getLastWatchdogAction());
+
+                return paramValue;
+            }
+        });
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDAO.java
index a00af82..3e89c59 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDAO.java
@@ -1,8 +1,12 @@
 package org.ovirt.engine.core.dao;
 
+import java.util.Map;
+
 import org.ovirt.engine.core.common.businessentities.VmStatistics;
 import org.ovirt.engine.core.compat.Guid;
 
 public interface VmStatisticsDAO extends GenericDao<VmStatistics, Guid>, 
MassOperationsDao<VmStatistics, Guid> {
 
+    void updateAllInTransaction(Map<Guid, VmStatistics> values);
+
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDaoDbFacadeImpl.java
index 6869867..9c089e5 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStatisticsDaoDbFacadeImpl.java
@@ -3,10 +3,12 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.commons.lang.NotImplementedException;
 import org.ovirt.engine.core.common.businessentities.VmStatistics;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.EntityToMapSqlParameterMapper;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 
@@ -69,4 +71,27 @@
         };
     }
 
+    @Override
+    public void updateAllInTransaction(Map<Guid, VmStatistics> 
vmStatisticsToSave) {
+        updateAllInBatch("updatevmstatistics",
+                vmStatisticsToSave.values(),
+                new EntityToMapSqlParameterMapper<VmStatistics>() {
+
+                    @Override
+                    public MapSqlParameterSource map(VmStatistics entity) {
+                        MapSqlParameterSource paramValue = new 
MapSqlParameterSource();
+
+                        paramValue.addValue("cpu_sys", entity.getcpu_sys());
+                        paramValue.addValue("cpu_user", entity.getcpu_user());
+                        paramValue.addValue("elapsed_time", 
entity.getelapsed_time());
+                        paramValue.addValue("usage_cpu_percent", 
entity.getusage_cpu_percent());
+                        paramValue.addValue("usage_mem_percent", 
entity.getusage_mem_percent());
+                        paramValue.addValue("usage_network_percent", 
entity.getusage_network_percent());
+                        paramValue.addValue("disks_usage", 
entity.getDisksUsage());
+                        paramValue.addValue("vm_guid", entity.getId());
+
+                        return paramValue;
+                    }
+                });
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDao.java
index 1dbd218..03a6264 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDao.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.core.dao.network;
 
+import java.util.List;
+
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkStatistics;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.GenericDao;
@@ -7,4 +9,6 @@
 
 public interface VmNetworkStatisticsDao extends 
GenericDao<VmNetworkStatistics, Guid>,
         MassOperationsDao<VmNetworkStatistics, Guid> {
+
+    void updateAllInTransaction(List<VmNetworkStatistics> 
vmInterfaceStatisticsToSave);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
index 38685e7..d5f142b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkStatistics;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.EntityToMapSqlParameterMapper;
 import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@@ -58,4 +59,26 @@
             }
         };
     }
+
+    @Override
+    public void updateAllInTransaction(List<VmNetworkStatistics> 
vmInterfaceStatisticsToSave) {
+        updateAllInBatch("updatevm_interface_statistics",
+                vmInterfaceStatisticsToSave,
+                new EntityToMapSqlParameterMapper<VmNetworkStatistics>() {
+
+                    @Override
+                    public MapSqlParameterSource map(VmNetworkStatistics 
entity) {
+                        MapSqlParameterSource paramValue = new 
MapSqlParameterSource();
+                        paramValue.addValue("id", entity.getId());
+                        paramValue.addValue("rx_drop", 
entity.getReceiveDropRate());
+                        paramValue.addValue("rx_rate", 
entity.getReceiveRate());
+                        paramValue.addValue("tx_drop", 
entity.getTransmitDropRate());
+                        paramValue.addValue("tx_rate", 
entity.getTransmitRate());
+                        paramValue.addValue("iface_status", 
entity.getStatus());
+                        paramValue.addValue("vm_id", entity.getVmId());
+
+                        return paramValue;
+                    }
+                });
+    }
 }
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 b198909..901a074 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
@@ -148,8 +148,8 @@
             }
         }
 
-        updateAllInTransaction(_vmDynamicToSave.values(), 
getDbFacade().getVmDynamicDao());
-        updateAllInTransaction(_vmStatisticsToSave.values(), 
getDbFacade().getVmStatisticsDao());
+        
getDbFacade().getVmDynamicDao().updateAllInTransaction(_vmDynamicToSave);
+        
getDbFacade().getVmStatisticsDao().updateAllInTransaction(_vmStatisticsToSave);
 
         final List<VmNetworkStatistics> allVmInterfaceStatistics = new 
LinkedList<VmNetworkStatistics>();
         for (List<VmNetworkInterface> list : 
_vmInterfaceStatisticsToSave.values()) {
@@ -158,7 +158,8 @@
             }
         }
 
-        updateAllInTransaction(allVmInterfaceStatistics, 
getDbFacade().getVmNetworkStatisticsDao());
+        
getDbFacade().getVmNetworkStatisticsDao().updateAllInTransaction(allVmInterfaceStatistics);
+
         updateAllInTransaction(_vmDiskImageDynamicToSave.values(), 
getDbFacade().getDiskImageDynamicDao());
         saveVmDevicesToDb();
         saveVmGuestAgentNetworkDevices();


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie3e9735f4174ebabbe293d397d931aba72bbbd7b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liran Zelkha <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to