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