You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/06/06 17:39:57 UTC

git commit: updated refs/heads/master to 39f775c

Repository: cloudstack
Updated Branches:
  refs/heads/master ac1b4b031 -> 39f775c38


try-with-resource to prevent resource leaks


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/39f775c3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/39f775c3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/39f775c3

Branch: refs/heads/master
Commit: 39f775c38126bb25a0418f82196caaba463f8c1c
Parents: ac1b4b0
Author: Daan Hoogland <da...@onecht.net>
Authored: Fri Jun 6 17:28:07 2014 +0200
Committer: Daan Hoogland <da...@onecht.net>
Committed: Fri Jun 6 17:38:18 2014 +0200

----------------------------------------------------------------------
 .../com/cloud/upgrade/dao/Upgrade430to440.java  | 267 ++++++-------------
 1 file changed, 87 insertions(+), 180 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/39f775c3/engine/schema/src/com/cloud/upgrade/dao/Upgrade430to440.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade430to440.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade430to440.java
index a3ac447..51494e7 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade430to440.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade430to440.java
@@ -67,28 +67,25 @@ public class Upgrade430to440 implements DbUpgrade {
     }
 
     private void addExtractTemplateAndVolumeColumns(Connection conn) {
-        PreparedStatement pstmt = null;
-        ResultSet rs = null;
 
-        try {
+        try (PreparedStatement selectTemplateInfostmt = conn.prepareStatement("SELECT *  FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'cloud' AND TABLE_NAME = 'template_store_ref' AND COLUMN_NAME = 'download_url_created'");
+             ResultSet templateInfoResults = selectTemplateInfostmt.executeQuery();
+             PreparedStatement addDownloadUrlCreatedToTemplateStorerefstatement = conn.prepareStatement("ALTER TABLE `cloud`.`template_store_ref` ADD COLUMN `download_url_created` datetime");
+             PreparedStatement addDownloadUrlToTemplateStorerefstatement = conn.prepareStatement("ALTER TABLE `cloud`.`template_store_ref` ADD COLUMN `download_url` varchar(255)");
+             PreparedStatement selectVolumeInfostmt = conn.prepareStatement("SELECT *  FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'cloud' AND TABLE_NAME = 'volume_store_ref' AND COLUMN_NAME = 'download_url_created'");
+             ResultSet volumeInfoResults = selectVolumeInfostmt.executeQuery();
+             PreparedStatement addDownloadUrlCreatedToVolumeStorerefstatement = conn.prepareStatement("ALTER TABLE `cloud`.`volume_store_ref` ADD COLUMN `download_url_created` datetime");
+            ) {
 
             // Add download_url_created, download_url to template_store_ref
-            pstmt = conn.prepareStatement("SELECT *  FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'cloud' AND TABLE_NAME = 'template_store_ref' AND COLUMN_NAME = 'download_url_created'");
-            rs = pstmt.executeQuery();
-            if (!rs.next()) {
-                pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`template_store_ref` ADD COLUMN `download_url_created` datetime");
-                pstmt.executeUpdate();
-
-                pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`template_store_ref` ADD COLUMN `download_url` varchar(255)");
-                pstmt.executeUpdate();
+            if (!templateInfoResults.next()) {
+                addDownloadUrlCreatedToTemplateStorerefstatement.executeUpdate();
+                addDownloadUrlToTemplateStorerefstatement.executeUpdate();
             }
 
             // Add download_url_created to volume_store_ref - note download_url already exists
-            pstmt = conn.prepareStatement("SELECT *  FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'cloud' AND TABLE_NAME = 'volume_store_ref' AND COLUMN_NAME = 'download_url_created'");
-            rs = pstmt.executeQuery();
-            if (!rs.next()) {
-                pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`volume_store_ref` ADD COLUMN `download_url_created` datetime");
-                pstmt.executeUpdate();
+            if (!volumeInfoResults.next()) {
+                addDownloadUrlCreatedToVolumeStorerefstatement.executeUpdate();
             }
 
         } catch (SQLException e) {
@@ -96,24 +93,12 @@ public class Upgrade430to440 implements DbUpgrade {
         }
     }
 
-
-
     private void secondaryIpsAccountAndDomainIdsUpdate(Connection conn) {
-        PreparedStatement pstmt = null;
-        PreparedStatement pstmtVm = null;
-        PreparedStatement pstmtNw = null;
-        PreparedStatement pstmtUpdate = null;
-
-        ResultSet rs1 = null;
-        ResultSet vmRs = null;
-        ResultSet networkRs = null;
-
         String secondIpsSql = "SELECT id, vmId, network_id, account_id, domain_id, ip4_address FROM `cloud`.`nic_secondary_ips`";
 
-        try {
-            pstmt = conn.prepareStatement(secondIpsSql);
-            rs1 = pstmt.executeQuery();
-
+        try (PreparedStatement pstmt = conn.prepareStatement(secondIpsSql);
+             ResultSet rs1 = pstmt.executeQuery();
+            ) {
             while(rs1.next()) {
                 long ipId = rs1.getLong(1);
                 long vmId = rs1.getLong(2);
@@ -122,130 +107,77 @@ public class Upgrade430to440 implements DbUpgrade {
                 long domainId = rs1.getLong(5);
                 String ipAddr = rs1.getString(6);
 
-                pstmtVm = conn.prepareStatement("SELECT account_id, domain_id FROM `cloud`.`vm_instance` where id = ?");
-                pstmtVm.setLong(1,vmId);
-
-                vmRs = pstmtVm.executeQuery();
-
-                if (vmRs.next()) {
-                    long vmAccountId = vmRs.getLong(1);
-                    long vmDomainId = vmRs.getLong(2);
-
-                    if (vmAccountId != accountId && vmAccountId != domainId) {
-                        // update the secondary ip accountid and domainid to vm accountid domainid
-                        // check the network type. If network is shared accountid doaminid needs to be updated in
-                        // in both nic_secondary_ips table and user_ip_address table
-
-                        pstmtUpdate = conn.prepareStatement("UPDATE `cloud`.`nic_secondary_ips` SET account_id = ?, domain_id= ? WHERE id = ?");
-                        pstmtUpdate.setLong(1, vmAccountId);
-                        pstmtUpdate.setLong(2,vmDomainId);
-                        pstmtUpdate.setLong(3,ipId);
-                        pstmtUpdate.executeUpdate();
-                        pstmtUpdate.close();
-
-                        pstmtNw = conn.prepareStatement("SELECT guest_type FROM `cloud`.`networks` where id = ?");
-                        pstmtNw.setLong(1,networkId);
-
-                        networkRs = pstmtNw.executeQuery();
-                        if (networkRs.next()) {
-                            String guesttype = networkRs.getString(1);
-
-                            if (guesttype.equals(Network.GuestType.Shared.toString())) {
-                                pstmtUpdate = conn.prepareStatement("UPDATE `cloud`.`user_ip_address` SET account_id = ?, domain_id= ? WHERE public_ip_address = ?");
-                                pstmtUpdate.setLong(1,vmAccountId);
-                                pstmtUpdate.setLong(2,vmDomainId);
-                                pstmtUpdate.setString(3,ipAddr);
-                                pstmtUpdate.executeUpdate();
-                                pstmtUpdate.close();
-
-                            }
-                        }
-                                networkRs.close();
-                        networkRs = null;
-                                pstmtNw.close();
-                        pstmtNw = null;
+                try(PreparedStatement pstmtVm = conn.prepareStatement("SELECT account_id, domain_id FROM `cloud`.`vm_instance` where id = ?");) {
+                    pstmtVm.setLong(1,vmId);
+
+                    try(ResultSet vmRs = pstmtVm.executeQuery();) {
+
+                        if (vmRs.next()) {
+                            long vmAccountId = vmRs.getLong(1);
+                            long vmDomainId = vmRs.getLong(2);
+
+                            if (vmAccountId != accountId && vmAccountId != domainId) {
+                                // update the secondary ip accountid and domainid to vm accountid domainid
+                                // check the network type. If network is shared accountid doaminid needs to be updated in
+                                // in both nic_secondary_ips table and user_ip_address table
+
+                                try(PreparedStatement pstmtUpdate = conn.prepareStatement("UPDATE `cloud`.`nic_secondary_ips` SET account_id = ?, domain_id= ? WHERE id = ?");) {
+                                    pstmtUpdate.setLong(1, vmAccountId);
+                                    pstmtUpdate.setLong(2,vmDomainId);
+                                    pstmtUpdate.setLong(3,ipId);
+                                    pstmtUpdate.executeUpdate();
+                                } catch (SQLException e) {
+                                    throw new CloudRuntimeException("Exception while updating secondary ip for nic " + ipId, e);
+                                }
+
+                                try(PreparedStatement pstmtNw = conn.prepareStatement("SELECT guest_type FROM `cloud`.`networks` where id = ?");) {
+                                    pstmtNw.setLong(1,networkId);
+
+                                    try(ResultSet networkRs = pstmtNw.executeQuery();) {
+                                        if (networkRs.next()) {
+                                            String guesttype = networkRs.getString(1);
+
+                                            if (guesttype.equals(Network.GuestType.Shared.toString())) {
+                                                try(PreparedStatement pstmtUpdate = conn.prepareStatement("UPDATE `cloud`.`user_ip_address` SET account_id = ?, domain_id= ? WHERE public_ip_address = ?");) {
+                                                    pstmtUpdate.setLong(1,vmAccountId);
+                                                    pstmtUpdate.setLong(2,vmDomainId);
+                                                    pstmtUpdate.setString(3,ipAddr);
+                                                    pstmtUpdate.executeUpdate();
+                                                } catch (SQLException e) {
+                                                    throw new CloudRuntimeException("Exception while updating public ip  " + ipAddr, e);
+                                                }
+                                            }
+                                        }
+                                    } catch (SQLException e) {
+                                        throw new CloudRuntimeException("Exception while retrieving guest type for network " + networkId, e);
+                                    }
+
+                                } catch (SQLException e) {
+                                    throw new CloudRuntimeException("Exception while retrieving guest type for network " + networkId, e);
+                                }
+                            } // if
+                        } // if
                     }
-                } //if
-
-                pstmtVm.close();
-                pstmtVm = null;
-                        vmRs.close();
-                vmRs = null;
+                }
             } // while
-
-
         } catch (SQLException e) {
             throw new CloudRuntimeException("Exception while Moving private zone information to dedicated resources", e);
-        } finally {
-
-            if (pstmt != null) {
-                try {
-                    pstmt.close();
-
-                } catch (SQLException e) {
-                }
-            }
-
-
-            if (rs1 != null) {
-                try {
-                    rs1.close();
-                } catch (SQLException e) {
-                }
-            }
-
-
-
-            if (pstmtVm != null) {
-                try {
-                    pstmtVm.close();
-                } catch (SQLException e) {
-                }
-            }
-
-            if (vmRs != null) {
-                try {
-                    vmRs.close();
-                } catch (SQLException e) {
-                }
-            }
-
-
-
-            if (pstmtNw != null) {
-                try {
-                    pstmtNw.close();
-
-                } catch (SQLException e) {
-                }
-            }
-
-
-            if (networkRs != null) {
-                try {
-                    networkRs.close();
-                } catch (SQLException e) {
-                }
-            }
         }
         s_logger.debug("Done updating vm nic secondary ip  account and domain ids");
     }
 
 
     private void moveCidrsToTheirOwnTable(Connection conn) {
-        PreparedStatement pstmtItem = null;
-        PreparedStatement pstmtCidr = null;
-        ResultSet rsItems = null;
+        s_logger.debug("Moving network acl item cidrs to a row per cidr");
 
         String networkAclItemSql = "SELECT id, cidr FROM `cloud`.`network_acl_item`";
+        String networkAclItemCidrSql = "INSERT INTO `cloud`.`network_acl_item_cidrs` (network_acl_item_id, cidr) VALUES (?,?)";
 
-        s_logger.debug("Moving network acl item cidrs to a row per cidr");
-        try {
-            pstmtItem = conn.prepareStatement(networkAclItemSql);
-            rsItems = pstmtItem.executeQuery();
+        try (PreparedStatement pstmtItem = conn.prepareStatement(networkAclItemSql);
+             ResultSet rsItems = pstmtItem.executeQuery();
+             PreparedStatement pstmtCidr = conn.prepareStatement(networkAclItemCidrSql);
+            ) {
 
-            String networkAclItemCidrSql = "INSERT INTO `cloud`.`network_acl_item_cidrs` (network_acl_item_id, cidr) VALUES (?,?)";
-            pstmtCidr = conn.prepareStatement(networkAclItemCidrSql);
 
             // for each network acl item
             while(rsItems.next()) {
@@ -264,58 +196,33 @@ public class Upgrade430to440 implements DbUpgrade {
             }
         } catch (SQLException e) {
             throw new CloudRuntimeException("Exception while Moving network acl item cidrs to a row per cidr", e);
-        } finally {
-
-            if (pstmtItem != null) {
-                try {
-                    pstmtItem.close();
-
-                } catch (SQLException e) {
-                }
-            }
-            if (pstmtCidr != null) {
-                try {
-                    pstmtCidr.close();
-
-                } catch (SQLException e) {
-                }
-            }
         }
         s_logger.debug("Done moving network acl item cidrs to a row per cidr");
     }
 
     private void updateVlanUris(Connection conn) {
         s_logger.debug("updating vlan URIs");
-        PreparedStatement pstmt = null;
-        ResultSet rs = null;
-        try {
-            pstmt = conn.prepareStatement("SELECT id, vlan_id FROM `cloud`.`vlan` where vlan_id not like '%:%'");
-            rs = pstmt.executeQuery();
-            while (rs.next()) {
-                long id = rs.getLong(1);
-                String vlan = rs.getString(2);
+        try(PreparedStatement selectstatement = conn.prepareStatement("SELECT id, vlan_id FROM `cloud`.`vlan` where vlan_id not like '%:%'");
+            ResultSet results = selectstatement.executeQuery()) {
+
+            while (results.next()) {
+                long id = results.getLong(1);
+                String vlan = results.getString(2);
                 if (vlan == null || "".equals(vlan)) {
                     continue;
                 }
                 String vlanUri = BroadcastDomainType.Vlan.toUri(vlan).toString();
-                pstmt = conn.prepareStatement("update `cloud`.`vlan` set vlan_id=? where id=?");
-                pstmt.setString(1, vlanUri);
-                pstmt.setLong(2, id);
-                pstmt.executeUpdate();
+                try(PreparedStatement updatestatement = conn.prepareStatement("update `cloud`.`vlan` set vlan_id=? where id=?");)
+                {
+                    updatestatement.setString(1, vlanUri);
+                    updatestatement.setLong(2, id);
+                    updatestatement.executeUpdate();
+                } catch (SQLException e) {
+                    throw new CloudRuntimeException("Unable to update vlan URI " + vlanUri + " for vlan record " + id, e);
+                }
             }
         } catch (SQLException e) {
             throw new CloudRuntimeException("Unable to update vlan URIs ", e);
-        } finally {
-            try {
-                if (rs != null) {
-                    rs.close();
-                }
-
-                if (pstmt != null) {
-                    pstmt.close();
-                }
-            } catch (SQLException e) {
-            }
         }
         s_logger.debug("Done updateing vlan URIs");
     }