Martin Mucha has uploaded a new change for review. Change subject: core: introducing QosDaoCache ......................................................................
core: introducing QosDaoCache Class which caches already queried HostNetworkQos instances loading missing ones as needed. Code was extracted from HostSetupNetworksCommand, because it will be also needed on other locations. Change-Id: Iac75ac3a09cce8790b454178f2d3f7ceda534649 Signed-off-by: Martin Mucha <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java 2 files changed, 36 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/37871/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java index 5522e3f..c7a5682 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java @@ -25,6 +25,7 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.network.Bond; +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; import org.ovirt.engine.core.common.businessentities.network.IpConfiguration; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; @@ -44,7 +45,6 @@ import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.compat.Version; -import org.ovirt.engine.core.dao.network.HostNetworkQosDao; import org.ovirt.engine.core.utils.NetworkUtils; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; @@ -66,6 +66,7 @@ private List<VdsNetworkInterface> existingNics; private List<NetworkAttachment> existingAttachments; private List<HostNetwork> networksToConfigure; + private final QosDaoCache qosDaoCache = new QosDaoCache(getDbFacade().getHostNetworkQosDao()); public HostSetupNetworksCommand(T parameters) { this(parameters, null); @@ -227,13 +228,13 @@ private List<VdsNetworkInterface> getExistingNics() { if (existingNics == null) { existingNics = getDbFacade().getInterfaceDao().getAllInterfacesForVds(getVdsId()); - HostNetworkQosDao qosDao = getDbFacade().getHostNetworkQosDao(); for (VdsNetworkInterface iface : existingNics) { Network network = getNetworkBusinessEntityMap().get(iface.getNetworkName()); - iface.setNetworkImplementationDetails(NetworkUtils.calculateNetworkImplementationDetails(network, - network == null ? null : qosDao.get(network.getQosId()), - iface)); + HostNetworkQos hostNetworkQos = network == null ? null : qosDaoCache.get(network.getQosId()); + VdsNetworkInterface.NetworkImplementationDetails networkImplementationDetails = + NetworkUtils.calculateNetworkImplementationDetails(network, hostNetworkQos, iface); + iface.setNetworkImplementationDetails(networkImplementationDetails); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java new file mode 100644 index 0000000..da6159c --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.core.bll.network.host; + +import java.util.HashMap; +import java.util.Map; + +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.HostNetworkQosDao; + +public class QosDaoCache { + + private final HostNetworkQosDao qosDao; + private final Map<Guid, HostNetworkQos> cache = new HashMap<>(); + + public QosDaoCache(HostNetworkQosDao qosDao) { + this.qosDao = qosDao; + + } + + public HostNetworkQos get(Guid qosId) { + if (cache.containsKey(qosId)) { + return cache.get(qosId); + } + + HostNetworkQos result = qosDao.get(qosId); + cache.put(qosId, result); + + return result; + } +} -- To view, visit http://gerrit.ovirt.org/37871 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iac75ac3a09cce8790b454178f2d3f7ceda534649 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
