From 7bae4e3155add4bdd4c46a43ba54cd6fda5f2bd1 Mon Sep 17 00:00:00 2001 From: alena Date: Thu, 19 May 2011 15:25:12 -0700 Subject: [PATCH] Fixed upgrade bug related with the fact that some db upgrade steps were missed in 2.2.0/2.2.1 to 2.2.2 db upgrade --- .../cloud/upgrade/dao/Upgrade224to225.java | 10 +-- setup/db/db/schema-21to22-cleanup.sql | 61 +------------------ setup/db/db/schema-221to222-cleanup.sql | 11 ---- 3 files changed, 8 insertions(+), 74 deletions(-) diff --git a/server/src/com/cloud/upgrade/dao/Upgrade224to225.java b/server/src/com/cloud/upgrade/dao/Upgrade224to225.java index 19a1f5f2412..69b03234615 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade224to225.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade224to225.java @@ -214,11 +214,11 @@ public class Upgrade224to225 implements DbUpgrade { } private void dropTableColumnsIfExist(Connection conn, String tableName, List columns) { - + PreparedStatement pstmt = null; try { for (String column : columns) { try { - PreparedStatement pstmt = conn.prepareStatement("SELECT " + column + " FROM " + tableName); + pstmt = conn.prepareStatement("SELECT " + column + " FROM " + tableName); pstmt.executeQuery(); } catch (SQLException e) { @@ -227,12 +227,13 @@ public class Upgrade224to225 implements DbUpgrade { continue; } - PreparedStatement pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP COLUMN " + column); + pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP COLUMN " + column); pstmt.executeUpdate(); s_logger.debug("Column " + column + " is dropped successfully from the table " + tableName); pstmt.close(); } } catch (SQLException e) { + s_logger.warn("Unable to drop columns using query " + pstmt + " due to exception", e); throw new CloudRuntimeException("Unable to drop columns due to ", e); } } @@ -241,7 +242,7 @@ public class Upgrade224to225 implements DbUpgrade { HashMap> foreignKeys = new HashMap>(); HashMap> indexes = new HashMap>(); - // account table + // console proxy table List keys = new ArrayList(); keys.add("fk_console_proxy__vlan_id"); foreignKeys.put("console_proxy", keys); @@ -276,6 +277,7 @@ public class Upgrade224to225 implements DbUpgrade { keys = new ArrayList(); keys.add("fk_user_vm__domain_router_id"); keys.add("fk_user_vm__external_vlan_db_id"); + keys.add("fk_user_vm__external_ip_address"); foreignKeys.put("user_vm", keys); // user_vm_details table diff --git a/setup/db/db/schema-21to22-cleanup.sql b/setup/db/db/schema-21to22-cleanup.sql index b3c654d7e43..2d7d7a7f623 100644 --- a/setup/db/db/schema-21to22-cleanup.sql +++ b/setup/db/db/schema-21to22-cleanup.sql @@ -5,10 +5,6 @@ DROP TABLE IF EXISTS `cloud`.`disk_template_ref`; -- Then remove columns -ALTER TABLE `cloud`.`volumes` DROP COLUMN `mirror_state`; -ALTER TABLE `cloud`.`volumes` DROP COLUMN `mirror_vol`; -ALTER TABLE `cloud`.`volumes` DROP COLUMN `destroyed`; - DROP TABLE `cloud`.`ip_forwarding`; ALTER TABLE `cloud`.`host` DROP COLUMN `sequence`; @@ -22,72 +18,22 @@ ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `storage_ip`; DROP TABLE `cloud`.`pricing`; -ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__domain_router_id`; -ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__domain_router_id`; ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__service_offering_id`; ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__service_offering_id`; ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__account_id`; ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__account_id`; -ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__external_ip_address`; -ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__external_ip_address`; -ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__external_vlan_db_id`; -ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__external_vlan_db_id`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `domain_router_id`; ALTER TABLE `cloud`.`user_vm` DROP COLUMN `service_offering_id`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `vnet`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `dc_vlan`; ALTER TABLE `cloud`.`user_vm` DROP COLUMN `account_id`; ALTER TABLE `cloud`.`user_vm` DROP COLUMN `domain_id`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_ip_address`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_mac_address`; -ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_vlan_db_id`; ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__account_id`; -ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__public_ip_address`; -ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__vlan_id`; ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__account_id`; -ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__public_ip_address`; -ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__vlan_id`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `gateway`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dns1`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dns2`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `guest_dc_mac_address`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `vnet`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dc_vlan`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `vlan_db_id`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `vlan_id`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `domain_id`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `account_id`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dhcp_ip_address`; -ALTER TABLE `cloud`.`console_proxy` DROP FOREIGN KEY `fk_console_proxy__vlan_id`; -ALTER TABLE `cloud`.`console_proxy` DROP INDEX `i_console_proxy__vlan_id`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `gateway`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `dns1`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `dns2`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `domain`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `guest_mac_address`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `guest_ip_address`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `guest_netmask`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `vlan_db_id`; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `vlan_id`; - -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `gateway`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `dns1`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `dns2`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `domain`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guest_mac_address`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guest_ip_address`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guest_netmask`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `vlan_db_id`; -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `vlan_id`; #ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guid`; #ALTER TABLE `cloud`.`vlan` ADD CONSTRAINT `fk_vlan__network_id` FOREIGN KEY `fk_vlan__network_id`(`network_id`) REFERENCES `networks`(`id`); -DROP TABLE `cloud`.`vm_disk`; - -ALTER TABLE `cloud`.`disk_offering` DROP COLUMN `mirrored`; +DROP TABLE IF EXISTS `cloud`.`vm_disk`; ALTER TABLE `cloud`.`load_balancer_vm_map` DROP COLUMN `pending`; @@ -101,22 +47,19 @@ ALTER TABLE `cloud`.`load_balancer_vm_map` ADD CONSTRAINT `fk_load_balancer_vm_m ALTER TABLE `cloud`.`user_ip_address` DROP PRIMARY KEY; ALTER TABLE `cloud`.`user_ip_address` ADD PRIMARY KEY (`id`); ALTER TABLE `cloud`.`user_ip_address` DROP INDEX public_ip_address; -ALTER TABLE `cloud`.`user_ip_address` DROP KEY `i_user_ip_address__public_ip_address`; +#ALTER TABLE `cloud`.`user_ip_address` DROP KEY `i_user_ip_address__public_ip_address`; ALTER TABLE `cloud`.`user_ip_address` ADD UNIQUE (`public_ip_address`, `source_network_id`); ALTER TABLE `cloud`.`user_ip_address` ADD CONSTRAINT `fk_user_ip_address__source_network_id` FOREIGN KEY (`source_network_id`) REFERENCES `networks`(`id`); ALTER TABLE `cloud`.`user_ip_address` ADD CONSTRAINT `fk_user_ip_address__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks`(`id`); ALTER TABLE `cloud`.`vm_instance` ADD CONSTRAINT `fk_vm_instance__service_offering_id` FOREIGN KEY `fk_vm_instance__service_offering_id` (`service_offering_id`) REFERENCES `service_offering` (`id`); -ALTER TABLE `cloud`.`template_spool_ref` ADD CONSTRAINT `fk_template_spool_ref__pool_id` FOREIGN KEY (`pool_id`) REFERENCES `storage_pool`(`id`) ON DELETE CASCADE; - ALTER TABLE `cloud`.`volumes` MODIFY COLUMN `state` VARCHAR(32) NOT NULL; ALTER TABLE `cloud`.`snapshot_policy` ADD KEY `volume_id` (`volume_id`); DELETE FROM op_ha_work WHERE taken IS NOT NULL; DELETE FROM op_ha_work WHERE host_id NOT IN (SELECT DISTINCT id FROM host); -ALTER TABLE `cloud`.`op_ha_work` ADD CONSTRAINT `fk_op_ha_work__host_id` FOREIGN KEY `fk_op_ha_work__host_id` (`host_id`) REFERENCES `host` (`id`); UPDATE `cloud`.`vm_instance` SET last_host_id=NULL WHERE last_host_id NOT IN (SELECT DISTINCT id FROM host); ALTER TABLE `cloud`.`vm_instance` ADD CONSTRAINT `fk_vm_instance__last_host_id` FOREIGN KEY `fk_vm_instance__last_host_id` (`last_host_id`) REFERENCES `host`(`id`); diff --git a/setup/db/db/schema-221to222-cleanup.sql b/setup/db/db/schema-221to222-cleanup.sql index 987335addbe..b01d1ebb7ce 100644 --- a/setup/db/db/schema-221to222-cleanup.sql +++ b/setup/db/db/schema-221to222-cleanup.sql @@ -1,14 +1,3 @@ alter table firewall_rules drop column is_static_nat; delete from configuration where name='router.cleanup'; -ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `ram_size`; - -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `ram_size`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `domain`; -ALTER TABLE `cloud`.`domain_router` DROP COLUMN `guest_mac_address`; - -ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `ram_size`; - -ALTER TABLE `cloud`.`service_offering` DROP COLUMN `guest_ip_type`; - -ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `mirrored_vols`;