Roy Golan has uploaded a new change for review.

Change subject: core: Lazy init ArrayList when monitoring lun
......................................................................

core: Lazy init ArrayList when monitoring lun

Since lun case is really rare we can save the repeated ArrayList
creation.

Change-Id: Id43aa4995f9170cafea45e5998c2c305e9d1462c
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
2 files changed, 20 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/37497/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java
index 629fbef..8ce6aed 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java
@@ -74,6 +74,7 @@
     private boolean stable;
     private boolean autoVmToRun;
     private boolean externalVm;
+    private List<LUNs> updatesLuns = Collections.emptyList();
 
     //dependencies
     private final VmsMonitoring vmsMonitoring; // aggregate all data using it.
@@ -842,10 +843,17 @@
                             lunFromDB.getLUN_id(), lunFromDB.getDeviceSize(), 
lunFromMap.getDeviceSize());
 
                     lunFromDB.setDeviceSize(lunFromMap.getDeviceSize());
-                    vmsMonitoring.getVmLunDisksToSave().add(lunFromDB);
+                    addUpdatedLun(lunFromDB);
                 }
             }
         }
+    }
+
+    private void addUpdatedLun(LUNs lun) {
+        if (updatesLuns.equals(Collections.emptyList())) {
+            updatesLuns = new ArrayList<>(1); // 1 should be enough on most 
lun cases
+        }
+        updatesLuns.add(lun);
     }
 
     protected void updateVmJobs() {
@@ -1017,4 +1025,8 @@
     public VdsManager getVdsManager() {
         return vmsMonitoring.getVdsManager();
     }
+
+    public List<LUNs> getUpdatedLuns() {
+        return updatesLuns;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
index 452fc25..edd6754 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
@@ -86,13 +86,13 @@
     private final List<VmDynamic> poweringUpVms = new ArrayList<>();
     private final List<VmDevice> newVmDevices = new ArrayList<>();
     private final List<VmDeviceId> removedDeviceIds = new ArrayList<>();
-    private final List<LUNs> vmLunDisksToSave = new ArrayList<>();
     private final List<Guid> autoVmsToRun = new ArrayList<>();
     private final List<VmStatic> externalVmsToAdd = new ArrayList<>();
     private final Map<Guid, VmJob> vmJobsToUpdate = new HashMap<>();
     private final List<Guid> vmJobIdsToRemove = new ArrayList<>();
     private final List<Guid> existingVmJobIds = new ArrayList<>();
     private List<Pair<VM, VmInternalData>> externalVms = new ArrayList<>();
+    private List<LUNs> vmLunDisksToSave = Collections.emptyList();
     //*** data collectors ***//
 
     private static final String HOSTED_ENGINE_VM_NAME = "HostedEngine";
@@ -199,7 +199,7 @@
                 // to varargs version to avoid creating the list
                 // over and over again - updateSlaPolicies(Guid vdsId, Guid... 
vmIds)
                 getVdsEventListener().updateSlaPolicies(
-                        Arrays.asList(new Guid[] 
{vmUpdater.getDbVm().getId()}),
+                        Arrays.asList(new Guid[] { vmUpdater.getDbVm().getId() 
}),
                         vdsManager.getVdsId());
             }
 
@@ -228,6 +228,11 @@
 
             if (vmUpdater.isExternalVm()) {
                 externalVms.add(new Pair<>(vmUpdater.getDbVm(), 
vmUpdater.getVdsmVm()));
+            }
+
+            if (!vmUpdater.getUpdatedLuns().isEmpty()) {
+                vmUpdater.getUpdatedLuns().addAll(vmLunDisksToSave);
+                vmLunDisksToSave = vmUpdater.getUpdatedLuns();
             }
         }
 
@@ -657,15 +662,6 @@
      */
     protected List<VmDeviceId> getRemovedVmDevices() {
         return Collections.unmodifiableList(removedDeviceIds);
-    }
-
-    /**
-     * An access method for test usages
-     *
-     * @return The LUNs to update in DB
-     */
-    protected List<LUNs> getVmLunDisksToSave() {
-        return Collections.unmodifiableList(vmLunDisksToSave);
     }
 
     protected List<VmDynamic> getPoweringUpVms() {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id43aa4995f9170cafea45e5998c2c305e9d1462c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <rgo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to