diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41610to41700.sql b/engine/schema/src/main/resources/META-INF/db/schema-41610to41700.sql index 6885e499222..f51f88aef84 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41610to41700.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41610to41700.sql @@ -887,9 +887,8 @@ left join `cloud`.`mshost_status` on ((`cloud`.`mshost`.`uuid` = `cloud`.`mshost_status`.`ms_id`))); -- Alter event table to add resource_id and resource_type -ALTER TABLE `cloud`.`event` - ADD COLUMN `resource_id` bigint unsigned COMMENT 'ID of the resource associated with the event' AFTER `domain_id`, - ADD COLUMN `resource_type` varchar(32) COMMENT 'Type of the resource associated with the event' AFTER `resource_id`; +CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.event','resource_id', 'bigint unsigned COMMENT "ID of the resource associated with the event" AFTER `domain_id`'); +CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.event','resource_type', 'VARCHAR(32) COMMENT "Type of the resource associated with the event" AFTER `resource_id`'); DROP VIEW IF EXISTS `cloud`.`event_view`; CREATE VIEW `cloud`.`event_view` AS diff --git a/framework/db/src/main/java/com/cloud/utils/db/ConnectionConcierge.java b/framework/db/src/main/java/com/cloud/utils/db/ConnectionConcierge.java index a1c473d5ffd..2ae0de90f26 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/ConnectionConcierge.java +++ b/framework/db/src/main/java/com/cloud/utils/db/ConnectionConcierge.java @@ -174,7 +174,7 @@ public class ConnectionConcierge { Connection conn = TransactionLegacy.getStandaloneConnection(); if (conn == null) { - return "Unable to get anotehr db connection"; + return "Unable to get another db connection"; } concierge.reset(conn); @@ -198,9 +198,13 @@ public class ConnectionConcierge { protected void runInContext() { s_logger.trace("connection concierge keep alive task"); for (Map.Entry entry : _conns.entrySet()) { + String name = entry.getKey(); ConnectionConcierge concierge = entry.getValue(); if (concierge.keepAlive()) { - testValidity(entry.getKey(), entry.getValue().conn()); + if (testValidity(name, concierge.conn()) != null) { + s_logger.info("Resetting DB connection " + name); + resetConnection(name); + } } } } diff --git a/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java b/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java index 47537a69d19..68b32e577db 100644 --- a/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java +++ b/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java @@ -502,7 +502,7 @@ public class Ipv6ServiceImpl extends ComponentLifecycleBase implements Ipv6Servi ipAddressDao.listByAssociatedVpc(network.getVpcId(), true); for (IPAddressVO address : addresses) { VlanVO vlan = vlanDao.findById(address.getVlanId()); - final List ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getPhysicalNetworkId(), vlan.getVlanTag()); + final List ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getDataCenterId(), vlan.getVlanTag()); if (CollectionUtils.isEmpty(ranges)) { s_logger.error(String.format("Unable to find IPv6 address for zone ID: %d, physical network ID: %d, VLAN: %s", network.getDataCenterId(), network.getPhysicalNetworkId(), vlan.getVlanTag())); InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, network.getDataCenterId()); diff --git a/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java b/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java index 3b55717d209..b1883a7f4f8 100644 --- a/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java +++ b/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java @@ -593,10 +593,10 @@ public class Ipv6ServiceImplTest { @Test public void testCheckNetworkIpv6UpgradeForNoIpv6Vlan() { - final long physicalNetworkId = 1L; + final long zoneId = 1L; Mockito.when(dataCenterGuestIpv6PrefixDao.listByDataCenterId(Mockito.anyLong())).thenReturn(List.of(Mockito.mock(DataCenterGuestIpv6PrefixVO.class))); Network network = Mockito.mock(Network.class); - Mockito.when(network.getPhysicalNetworkId()).thenReturn(physicalNetworkId); + Mockito.when(network.getDataCenterId()).thenReturn(zoneId); Mockito.when(network.getVpcId()).thenReturn(null); Mockito.when(ipAddressDao.listByAssociatedNetwork(Mockito.anyLong(), Mockito.anyBoolean())).thenReturn(List.of(Mockito.mock(IPAddressVO.class))); VlanVO vlanVO = Mockito.mock(VlanVO.class); @@ -611,16 +611,16 @@ public class Ipv6ServiceImplTest { @Test public void testCheckNetworkIpv6UpgradeForNetwork() { - final long physicalNetworkId = 1L; + final long zoneId = 1L; Mockito.when(dataCenterGuestIpv6PrefixDao.listByDataCenterId(Mockito.anyLong())).thenReturn(List.of(Mockito.mock(DataCenterGuestIpv6PrefixVO.class))); Network network = Mockito.mock(Network.class); - Mockito.when(network.getPhysicalNetworkId()).thenReturn(physicalNetworkId); + Mockito.when(network.getDataCenterId()).thenReturn(zoneId); Mockito.when(network.getVpcId()).thenReturn(null); Mockito.when(ipAddressDao.listByAssociatedNetwork(Mockito.anyLong(), Mockito.anyBoolean())).thenReturn(List.of(Mockito.mock(IPAddressVO.class))); VlanVO vlanVO = Mockito.mock(VlanVO.class); Mockito.when(vlanVO.getVlanTag()).thenReturn(vlan); Mockito.when(vlanDao.findById(Mockito.anyLong())).thenReturn(vlanVO); - Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(physicalNetworkId, vlan)).thenReturn(List.of(vlanVO)); + Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(zoneId, vlan)).thenReturn(List.of(vlanVO)); try { ipv6Service.checkNetworkIpv6Upgrade(network); } catch (InsufficientAddressCapacityException | ResourceAllocationException e) {