Liran Zelkha has uploaded a new change for review.

Change subject: core: Eliminate unneeded updates to VdsDynamic
......................................................................

core: Eliminate unneeded updates to VdsDynamic

This patch tries to minimize updates to VdsDynamic by checking the
database value before updating the entity.

Change-Id: Icab3ed7d251573f150d28f966d0ad2363ecc3441
Bug-Url: https://bugzilla.redhat.com/1016634
Signed-off-by: lzel...@redhat.com <lzel...@redhat.com>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
3 files changed, 22 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/23852/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
index 9b72477..82f060b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
@@ -35,4 +35,11 @@
      * @param controlledByPmPolicy - a new value for the flag
      */
     void updateVdsDynamicPowerManagementPolicyFlag(Guid id, boolean 
controlledByPmPolicy);
+
+    /**
+     * Update entity but check database before update to make sure update is 
neccessary
+     * @param dynamicData
+     *            - entity
+     */
+    void updateIfNeeded(VdsDynamic vdsDynamic);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java
index 78a4e7c..87a8b1e 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java
@@ -14,6 +14,8 @@
 import org.ovirt.engine.core.compat.RpmVersion;
 import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
 import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.utils.serialization.json.JsonObjectDeserializer;
 import org.ovirt.engine.core.utils.serialization.json.JsonObjectSerializer;
 import org.springframework.jdbc.core.RowMapper;
@@ -26,6 +28,8 @@
  *
  */
 public class VdsDynamicDAODbFacadeImpl extends 
MassOperationsGenericDaoDbFacade<VdsDynamic, Guid> implements VdsDynamicDAO {
+
+    private static Log log = 
LogFactory.getLog(VdsDynamicDAODbFacadeImpl.class);
 
     public VdsDynamicDAODbFacadeImpl() {
         super("VdsDynamic");
@@ -262,4 +266,14 @@
     protected RowMapper<VdsDynamic> createEntityRowMapper() {
         return VdcDynamicRowMapper.instance;
     }
+
+    @Override
+    public void updateIfNeeded(VdsDynamic vdsDynamic) {
+        VdsDynamic dbData = get(vdsDynamic.getId());
+        if (!dbData.equals(vdsDynamic)) {
+            update(vdsDynamic);
+        } else {
+            log.info("Ignored an unneeded update of VdsDynamic");
+        }
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
index bbb2639..109c2f8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
@@ -370,7 +370,7 @@
      * @param dynamicData
      */
     public void updateDynamicData(VdsDynamic dynamicData) {
-        DbFacade.getInstance().getVdsDynamicDao().update(dynamicData);
+        DbFacade.getInstance().getVdsDynamicDao().updateIfNeeded(dynamicData);
     }
 
     /**


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icab3ed7d251573f150d28f966d0ad2363ecc3441
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liran Zelkha <liran.zel...@gmail.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to