Yair Zaslavsky has uploaded a new change for review. Change subject: Revert "engine : VdsUpdateRuntimeInfo updates the data of a specific VDS." ......................................................................
Revert "engine : VdsUpdateRuntimeInfo updates the data of a specific VDS." This reverts commit ada255ebded1bf71f0e19c005dd2982914309173. Change-Id: I0c1d190fc24c0c31d871c3269bd7faee25a721ea Signed-off-by: Yair Zaslavsky <[email protected]> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDynamicDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsGenericDaoDbFacade.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDeviceDAODbFacadeImpl.java 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/VmStatisticsDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterOptionDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterServerServiceDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.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 M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java 17 files changed, 67 insertions(+), 233 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/19160/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDynamicDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDynamicDAODbFacadeImpl.java index 0a71eb6..ea7deaa 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDynamicDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDynamicDAODbFacadeImpl.java @@ -5,7 +5,6 @@ import org.ovirt.engine.core.common.businessentities.DiskImageDynamic; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -63,25 +62,5 @@ @Override protected RowMapper<DiskImageDynamic> createEntityRowMapper() { return DiskImageDynamicRowMapper.instance; - } - - @Override - public MapSqlParameterMapper<DiskImageDynamic> getBatchMapper() { - return new MapSqlParameterMapper<DiskImageDynamic>() { - - @Override - public MapSqlParameterSource map(DiskImageDynamic entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource() - .addValue("image_id", entity.getId()) - .addValue("read_rate", entity.getread_rate()) - .addValue("write_rate", entity.getwrite_rate()) - .addValue("actual_size", entity.getactual_size()) - .addValue("read_latency_seconds", entity.getReadLatency()) - .addValue("write_latency_seconds", entity.getWriteLatency()) - .addValue("flush_latency_seconds", entity.getFlushLatency()); - - return paramValue; - } - }; } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsDao.java index c71f67f..9d8ac3b 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsDao.java @@ -4,6 +4,7 @@ import java.util.Collection; import org.ovirt.engine.core.common.businessentities.BusinessEntity; +import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; /** * Data Access Object which supports mass operations for the given entity type. @@ -43,15 +44,17 @@ void removeAll(Collection<ID> ids); /** - * Calls an update stored procedure multiple times in a batch + * Calls an update stored procedure multiple timse in a batch + * * @param procedureName * @param entities */ - void updateAllInBatch(Collection<T> entities); + void updateAllInBatch(String procedureName, Collection<T> paramValues, MapSqlParameterMapper<T> mapper); /** * Saves the given entities using a more efficient method to save all of them at once, rather than each at a time. * The procedure name to be used is "InsertEntityName" where EntityName stands for the name of the entity + * * @param entities * The entities to insert */ diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsGenericDaoDbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsGenericDaoDbFacade.java index 53726d4..12bb977 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsGenericDaoDbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/MassOperationsGenericDaoDbFacade.java @@ -40,12 +40,13 @@ } } + @Override /** * Enables to send update procedure name as a parameter that overrides the default * one. * In case this parameter is null the default procedure is used. */ - protected void updateAllInBatch(String procedureName, + public void updateAllInBatch(String procedureName, Collection<T> paramValues, MapSqlParameterMapper<T> mapper) { getCallsHandler().executeStoredProcAsBatch(procedureName == null ? getProcedureNameForUpdate() : procedureName, @@ -65,11 +66,4 @@ save(entity); } } - - @Override - public void updateAllInBatch(Collection<T> entities) { - updateAllInBatch(getProcedureNameForUpdate(), entities, getBatchMapper()); - } - - public abstract MapSqlParameterMapper<T> getBatchMapper(); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDeviceDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDeviceDAODbFacadeImpl.java index 9ce5d2f..8a68ec0 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDeviceDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDeviceDAODbFacadeImpl.java @@ -11,7 +11,6 @@ import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.utils.SerializationFactory; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -197,19 +196,4 @@ } - @Override - public MapSqlParameterMapper<VmDevice> getBatchMapper() { - return new MapSqlParameterMapper<VmDevice>() { - @Override - public MapSqlParameterSource map(VmDevice entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource() - .addValue("device_id", entity.getDeviceId()) - .addValue("vm_id", entity.getVmId()) - .addValue("address", entity.getAddress()) - .addValue("alias", entity.getAlias()); - - return paramValue; - } - }; - } } 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 0b8c494..b120789 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 @@ -64,5 +64,4 @@ * otherwise */ boolean updateConsoleUserWithOptimisticLocking(VmDynamic vm); - } 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 9c7d125..ee37de2 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 @@ -15,7 +15,6 @@ import org.ovirt.engine.core.common.businessentities.VmPauseStatus; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -27,6 +26,7 @@ setProcedureNameForGet("GetVmDynamicByVmGuid"); } + @SuppressWarnings("unchecked") @Override public List<VmDynamic> getAllRunningForVds(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() @@ -173,50 +173,5 @@ return entity; } }; - } - - @Override - public MapSqlParameterMapper<VmDynamic> getBatchMapper() { - return new MapSqlParameterMapper<VmDynamic>() { - @Override - public MapSqlParameterSource map(VmDynamic entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource() - .addValue("guest_cur_user_name", entity.getGuestCurrentUserName()) - .addValue("console_cur_user_name", entity.getConsoleCurrentUserName()) - .addValue("guest_last_login_time", entity.getGuestLastLoginTime()) - .addValue("guest_last_logout_time", entity.getGuestLastLogoutTime()) - .addValue("console_user_id", entity.getConsoleUserId()) - .addValue("guest_os", entity.getGuestOs()) - .addValue("migrating_to_vds", entity.getMigratingToVds()) - .addValue("run_on_vds", entity.getRunOnVds()) - .addValue("status", entity.getStatus()) - .addValue("vm_guid", entity.getId()) - .addValue("vm_host", entity.getVmHost()) - .addValue("vm_ip", entity.getVmIp()) - .addValue("last_start_time", entity.getLastStartTime()) - .addValue("vm_pid", entity.getVmPid()) - .addValue("display", entity.getDisplay()) - .addValue("acpi_enable", entity.getAcpiEnable()) - .addValue("session", entity.getSession()) - .addValue("display_ip", entity.getDisplayIp()) - .addValue("display_type", entity.getDisplayType()) - .addValue("kvm_enable", entity.getKvmEnable()) - .addValue("boot_sequence", entity.getBootSequence()) - .addValue("display_secure_port", entity.getDisplaySecurePort()) - .addValue("utc_diff", entity.getUtcDiff()) - .addValue("last_vds_run_on", entity.getLastVdsRunOn()) - .addValue("client_ip", entity.getClientIp()) - .addValue("guest_requested_memory", entity.getGuestRequestedMemory()) - .addValue("hibernation_vol_handle", entity.getHibernationVolHandle()) - .addValue("exit_status", entity.getExitStatus()) - .addValue("pause_status", entity.getPauseStatus()) - .addValue("exit_message", entity.getExitMessage()) - .addValue("hash", entity.getHash()) - .addValue("guest_agent_nics_hash", entity.getGuestAgentNicsHash()) - .addValue("last_watchdog_event", entity.getLastWatchdogEvent()) - .addValue("last_watchdog_action", entity.getLastWatchdogAction()); - - return paramValue; - }}; } } 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 1c6b31d..e89b626 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 @@ -7,7 +7,6 @@ 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.MapSqlParameterMapper; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -69,23 +68,4 @@ }; } - @Override - public MapSqlParameterMapper<VmStatistics> getBatchMapper() { - return new MapSqlParameterMapper<VmStatistics>() { - @Override - public MapSqlParameterSource map(VmStatistics entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource() - .addValue("cpu_sys", entity.getcpu_sys()) - .addValue("cpu_user", entity.getcpu_user()) - .addValue("elapsed_time", entity.getelapsed_time()) - .addValue("usage_cpu_percent", entity.getusage_cpu_percent()) - .addValue("usage_mem_percent", entity.getusage_mem_percent()) - .addValue("usage_network_percent", entity.getusage_network_percent()) - .addValue("disks_usage", entity.getDisksUsage()) - .addValue("vm_guid", entity.getId()); - - return paramValue; - } - }; - } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java index 4f076b9..d859808 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java @@ -10,7 +10,6 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -158,11 +157,5 @@ @Override protected RowMapper<GlusterBrickEntity> createEntityRowMapper() { return brickRowMapper; - } - - @Override - public MapSqlParameterMapper<GlusterBrickEntity> getBatchMapper() { - // TODO: Implement this - throw new RuntimeException("Unsupported operation"); } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java index 6479590..60b7027 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java @@ -12,7 +12,6 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerHook; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -298,12 +297,6 @@ @Override protected MapSqlParameterSource createIdParameterMapper(Guid id) { return getCustomMapSqlParameterSource().addValue("id", id); - } - - @Override - public MapSqlParameterMapper<GlusterHookEntity> getBatchMapper() { - // TODO: Implement this - throw new RuntimeException("Unsupported operation"); } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterOptionDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterOptionDaoDbFacadeImpl.java index c418afd..6399952 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterOptionDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterOptionDaoDbFacadeImpl.java @@ -8,7 +8,6 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -92,11 +91,5 @@ @Override protected RowMapper<GlusterVolumeOptionEntity> createEntityRowMapper() { return optionRowMapper; - } - - @Override - public MapSqlParameterMapper<GlusterVolumeOptionEntity> getBatchMapper() { - // TODO: Implement this - throw new RuntimeException("Unsupported operation"); } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterServerServiceDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterServerServiceDaoDbFacadeImpl.java index d3b3525..c17aa3c 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterServerServiceDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterServerServiceDaoDbFacadeImpl.java @@ -9,7 +9,6 @@ import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; @@ -113,11 +112,5 @@ entity.setHostName(rs.getString("vds_name")); return entity; } - } - - @Override - public MapSqlParameterMapper<GlusterServerService> getBatchMapper() { - // TODO: Implement this - throw new RuntimeException("Unsupported operation"); } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java index 9434541..9af0993 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java @@ -20,7 +20,6 @@ import org.ovirt.engine.core.common.job.StepEnum; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -426,11 +425,5 @@ for (TransportType transportType : transportTypes) { removeTransportType(volumeId, transportType); } - } - - @Override - public MapSqlParameterMapper<GlusterVolumeEntity> getBatchMapper() { - // TODO: Implement this - throw new RuntimeException("Unsupported operation"); } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java index 1f0d6d4..6804b92 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java @@ -8,7 +8,6 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.DAO; -//TODO: Split to 2 interfaces - one for statistics and one for interfaces. Both should extend MassOperation public interface InterfaceDao extends DAO { /** * Saves the specified statistics @@ -51,17 +50,9 @@ */ void updateInterfaceForVds(VdsNetworkInterface iface); - - /** - * Updates the given collection of vds network interface using a more efficient method to update all of them at - * once, rather than each at a time. - * @param statistics - * The collection of statistics to update. - */ - void massUpdateInterfacesForVds(List<VdsNetworkInterface> dbIfacesToBatch); - /** * Retrieves all interfaces for the given VDS id. + * * @param id * the VDS id * @return the list of interfaces @@ -136,5 +127,4 @@ * @return */ List<VdsNetworkInterface> getAllInterfacesWithIpAddress(Guid clusterId, String ipAddress); - } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java index 4bb05f6..25ff0b8 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java @@ -14,7 +14,6 @@ import org.ovirt.engine.core.common.businessentities.network.VdsNetworkStatistics; import org.ovirt.engine.core.common.businessentities.network.Vlan; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.dao.BaseDAODbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -81,41 +80,6 @@ executions); } - @Override - public void massUpdateInterfacesForVds(List<VdsNetworkInterface> dbIfacesToBatch) { - updateAllInBatch("Updatevds_interface", dbIfacesToBatch, new MapSqlParameterMapper<VdsNetworkInterface>() { - @Override - public MapSqlParameterSource map(VdsNetworkInterface entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource().addValue("addr", entity.getAddress()) - .addValue("bond_name", entity.getBondName()) - .addValue("bond_type", entity.getBondType()) - .addValue("gateway", entity.getGateway()) - .addValue("id", entity.getId()) - .addValue("is_bond", entity.getBonded()) - .addValue("bond_opts", entity.getBondOptions()) - .addValue("mac_addr", entity.getMacAddress()) - .addValue("name", entity.getName()) - .addValue("network_name", entity.getNetworkName()) - .addValue("speed", entity.getSpeed()) - .addValue("subnet", entity.getSubnet()) - .addValue("boot_protocol", entity.getBootProtocol()) - .addValue("type", entity.getType()) - .addValue("vds_id", entity.getVdsId()) - .addValue("vlan_id", entity.getVlanId()) - .addValue("mtu", entity.getMtu()) - .addValue("bridged", entity.isBridged()); - return paramValue; - } - }); - } - - public void updateAllInBatch(String procedureName, - Collection<VdsNetworkInterface> paramValues, - MapSqlParameterMapper<VdsNetworkInterface> mapper) { - getCallsHandler().executeStoredProcAsBatch(procedureName, - paramValues, mapper); - } - /** * Update the {@link VdsNetworkStatistics} in the DB using the given {@link SimpleJdbcCall}. * @@ -176,6 +140,7 @@ vdsNetworkInterfaceRowMapper, parameterSource); } + @SuppressWarnings("unchecked") @Override public List<VdsNetworkInterface> getAllInterfacesForVds(Guid id, Guid userID, boolean isFiltered) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() @@ -294,5 +259,4 @@ return iface; } }; - } 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 bc81b1e..5b21cdb 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,7 +8,6 @@ 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.MapSqlParameterMapper; import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -56,26 +55,6 @@ entity.setTransmitDropRate(rs.getDouble("tx_drop")); entity.setStatus(InterfaceStatus.forValue(rs.getInt("iface_status"))); return entity; - } - }; - } - - @Override - public MapSqlParameterMapper<VmNetworkStatistics> getBatchMapper() { - return new MapSqlParameterMapper<VmNetworkStatistics>() { - - @Override - public MapSqlParameterSource map(VmNetworkStatistics entity) { - MapSqlParameterSource paramValue = new MapSqlParameterSource() - .addValue("id", entity.getId()) - .addValue("rx_drop", entity.getReceiveDropRate()) - .addValue("rx_rate", entity.getReceiveRate()) - .addValue("tx_drop", entity.getTransmitDropRate()) - .addValue("tx_rate", entity.getTransmitRate()) - .addValue("iface_status", entity.getStatus()) - .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 39a4caf..c6e14e4 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 @@ -1,6 +1,8 @@ package org.ovirt.engine.core.vdsbroker; +import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -16,6 +18,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -62,6 +65,7 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; +import org.ovirt.engine.core.dao.MassOperationsDao; import org.ovirt.engine.core.utils.NetworkUtils; import org.ovirt.engine.core.utils.ObjectIdentityChecker; import org.ovirt.engine.core.utils.log.Log; @@ -155,8 +159,8 @@ } } - getDbFacade().getVmDynamicDao().updateAllInBatch(_vmDynamicToSave.values()); - getDbFacade().getVmStatisticsDao().updateAllInBatch(_vmStatisticsToSave.values()); + updateAllInTransaction(_vmDynamicToSave.values(), getDbFacade().getVmDynamicDao()); + updateAllInTransaction(_vmStatisticsToSave.values(), getDbFacade().getVmStatisticsDao()); final List<VmNetworkStatistics> allVmInterfaceStatistics = new LinkedList<VmNetworkStatistics>(); for (List<VmNetworkInterface> list : _vmInterfaceStatisticsToSave.values()) { @@ -165,9 +169,8 @@ } } - getDbFacade().getVmNetworkStatisticsDao().updateAllInBatch(allVmInterfaceStatistics); - - getDbFacade().getDiskImageDynamicDao().updateAllInBatch(_vmDiskImageDynamicToSave.values()); + updateAllInTransaction(allVmInterfaceStatistics, getDbFacade().getVmNetworkStatisticsDao()); + updateAllInTransaction(_vmDiskImageDynamicToSave.values(), getDbFacade().getDiskImageDynamicDao()); saveVmDevicesToDb(); saveVmGuestAgentNetworkDevices(); ResourceManager.getInstance().getEventListener().addExternallyManagedVms(_externalVmsToAdd); @@ -197,7 +200,7 @@ } private void saveVmDevicesToDb() { - getDbFacade().getVmDeviceDao().updateAllInBatch(vmDeviceToSave.values()); + updateAllInTransaction("UpdateVmDeviceRuntimeInfo", vmDeviceToSave.values(), getDbFacade().getVmDeviceDao()); if (!removedDeviceIds.isEmpty()) { TransactionSupport.executeInScope(TransactionScopeOption.Required, @@ -224,6 +227,53 @@ } /** + * Update all the given entities in a transaction, so that a new connection/transaction won't be opened for each + * entity update. + * + * @param <T> + * The type of entity. + * @param entities + * The entities to update. + * @param dao + * The DAO used for updating. + */ + private static <T extends BusinessEntity<ID> & Comparable<T>, ID extends Serializable & Comparable<? super ID>> void updateAllInTransaction(final Collection<T> entities, + final MassOperationsDao<T, ID> dao) { + updateAllInTransaction(null, entities, dao); + } + + /** + * Update all the given entities in a transaction, so that a new connection/transaction won't be opened for each + * entity update. + * + * @param <T> + * The type of entity. + * @param procedureName + * The name of stored procedure to use for update + * @param entities + * The entities to update. + * @param dao + * The DAO used for updating. + */ + + private static <T extends BusinessEntity<ID> & Comparable<T>, ID extends Serializable & Comparable<? super ID>> void updateAllInTransaction + (final String procedureName, final Collection<T> entities, final MassOperationsDao<T, ID> dao) { + final List<T> sortedList = new ArrayList<T>(entities); + Collections.sort(sortedList); + if (!entities.isEmpty()) { + TransactionSupport.executeInScope(TransactionScopeOption.Required, + new TransactionMethod<Void>() { + + @Override + public Void runInTransaction() { + dao.updateAll(procedureName, sortedList); + return null; + } + }); + } + } + + /** * check if value is less than configurable threshold , if yes , generated event log message * * @param stat diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java index 6143bf8..44cce51 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java @@ -162,20 +162,16 @@ List<VdsNetworkInterface> dbIfaces = interfaceDAO.getAllInterfacesForVds(vds.getId()); List<String> updatedIfaces = new ArrayList<String>(); - List<VdsNetworkInterface> dbIfacesToBatch = new ArrayList<>(); - // First we check what interfaces need to update/delete for (VdsNetworkInterface dbIface : dbIfaces) { boolean found = false; - for (VdsNetworkInterface vdsIface : vds.getInterfaces()) { if (dbIface.getName().equals(vdsIface.getName())) { // we preserve only the ID from the Database // everything else is what we got from getVdsCapabilities vdsIface.setId(dbIface.getId()); - // interfaceDAO.updateInterfaceForVds(vdsIface); - dbIfacesToBatch.add(vdsIface); + interfaceDAO.updateInterfaceForVds(vdsIface); updatedIfaces.add(vdsIface.getName()); found = true; break; @@ -185,10 +181,6 @@ interfaceDAO.removeInterfaceFromVds(dbIface.getId()); interfaceDAO.removeStatisticsForVds(dbIface.getId()); } - } - - if (!dbIfacesToBatch.isEmpty()) { - interfaceDAO.massUpdateInterfacesForVds(dbIfacesToBatch); } // now all that left is add the interfaces that not exists in the Database -- To view, visit http://gerrit.ovirt.org/19160 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0c1d190fc24c0c31d871c3269bd7faee25a721ea Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
