cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d...@apache.org
Subject git commit: updated refs/heads/4.4-forward to 3c5f64c
Date Mon, 16 Jun 2014 12:23:20 GMT
Repository: cloudstack
Updated Branches:
  refs/heads/4.4-forward 54e4c0752 -> 3c5f64c97


Fixed few resource leak issues

Signed-off-by: Daan Hoogland <daan@onecht.net>


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

Branch: refs/heads/4.4-forward
Commit: 3c5f64c97ab071451aee7f232d8f2cec6d89044d
Parents: 54e4c07
Author: Santhosh Edukulla <santhosh.edukulla@gmail.com>
Authored: Fri Jun 13 01:25:20 2014 +0530
Committer: Daan Hoogland <daan@onecht.net>
Committed: Mon Jun 16 14:14:33 2014 +0200

----------------------------------------------------------------------
 .../src/com/cloud/vm/dao/UserVmDaoImpl.java     | 164 ++++++++++++-------
 1 file changed, 106 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c5f64c9/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
index f72690e..8c460b5 100755
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
@@ -356,91 +356,139 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long>
implements Use
     @Override
     public List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId) {
         TransactionLegacy txn = TransactionLegacy.currentTxn();
-        PreparedStatement pstmt = null;
         List<Long> result = new ArrayList<Long>();
+        String sql = LIST_PODS_HAVING_VMS_FOR_ACCOUNT;
 
-        try {
-            String sql = LIST_PODS_HAVING_VMS_FOR_ACCOUNT;
-            pstmt = txn.prepareAutoCloseStatement(sql);
+        try(PreparedStatement pstmt = txn.prepareStatement(sql)) {
             pstmt.setLong(1, zoneId);
             pstmt.setLong(2, accountId);
-
-            ResultSet rs = pstmt.executeQuery();
-            while (rs.next()) {
-                result.add(rs.getLong(1));
+            try(ResultSet rs = pstmt.executeQuery();)
+            {
+                while (rs.next()) {
+                    result.add(rs.getLong(1));
+                }
             }
+            catch (Exception e) {
+                s_logger.error("listPodIdsHavingVmsforAccount:Exception: " +  e.getMessage());
+                throw new CloudRuntimeException("listPodIdsHavingVmsforAccount:Exception:
" + e.getMessage(), e);
+            }
+            txn.commit();
             return result;
-        } catch (SQLException e) {
-            throw new CloudRuntimeException("DB Exception on: " + LIST_PODS_HAVING_VMS_FOR_ACCOUNT,
e);
-        } catch (Throwable e) {
-            throw new CloudRuntimeException("Caught: " + LIST_PODS_HAVING_VMS_FOR_ACCOUNT,
e);
+        } catch (Exception e) {
+            s_logger.error("listPodIdsHavingVmsforAccount:Exception : " +  e.getMessage());
+            throw new CloudRuntimeException("listPodIdsHavingVmsforAccount:Exception: " +
e.getMessage(), e);
+        }
+        finally {
+            try{
+                if (txn != null)
+                {
+                    txn.close();
+                }
+            }
+            catch (Exception e)
+            {
+                s_logger.error("listVmDetails:Exception:" + e.getMessage());
+            }
         }
+
     }
 
     @Override
     public Hashtable<Long, UserVmData> listVmDetails(Hashtable<Long, UserVmData>
userVmDataHash) {
         TransactionLegacy txn = TransactionLegacy.currentTxn();
-        PreparedStatement pstmt = null;
-
         try {
             int curr_index = 0;
-
             List<UserVmData> userVmDataList = new ArrayList(userVmDataHash.values());
-
-            if (userVmDataList.size() > VM_DETAILS_BATCH_SIZE) {
-                pstmt = txn.prepareStatement(VM_DETAILS + getQueryBatchAppender(VM_DETAILS_BATCH_SIZE));
-                while ((curr_index + VM_DETAILS_BATCH_SIZE) <= userVmDataList.size())
{
-                    // set the vars value
-                    for (int k = 1, j = curr_index; j < curr_index + VM_DETAILS_BATCH_SIZE;
j++, k++) {
-                        pstmt.setLong(k, userVmDataList.get(j).getId());
-                    }
-                    ResultSet rs = pstmt.executeQuery();
-                    while (rs.next()) {
-                        long vm_id = rs.getLong("vm_instance.id");
-                        //check if the entry is already there
-                        UserVmData uvm = userVmDataHash.get(vm_id);
-                        if (uvm == null) {
-                            uvm = new UserVmData();
-                            uvm.setId(vm_id);
+            if (userVmDataList.size() > VM_DETAILS_BATCH_SIZE)
+            {
+                try (PreparedStatement pstmt = txn.prepareStatement(VM_DETAILS + getQueryBatchAppender(VM_DETAILS_BATCH_SIZE));)
+                {
+                    while ((curr_index + VM_DETAILS_BATCH_SIZE) <= userVmDataList.size())
{
+                        // set the vars value
+                        for (int k = 1, j = curr_index; j < curr_index + VM_DETAILS_BATCH_SIZE;
j++, k++) {
+                            pstmt.setLong(k, userVmDataList.get(j).getId());
+                        }
+                        try(ResultSet rs = pstmt.executeQuery();)
+                        {
+                            while (rs.next()) {
+                                long vm_id = rs.getLong("vm_instance.id");
+                                //check if the entry is already there
+                                UserVmData uvm = userVmDataHash.get(vm_id);
+                                if (uvm == null) {
+                                    uvm = new UserVmData();
+                                    uvm.setId(vm_id);
+                                }
+                                // initialize the data with this row
+                                setUserVmData(uvm, rs);
+                            }
                         }
-                        // initialize the data with this row
-                        setUserVmData(uvm, rs);
+                        catch (Exception e)
+                        {
+                            s_logger.error("listVmDetails:Exception:" + e.getMessage());
+                            throw new CloudRuntimeException("listVmDetails: Exception:" +
e.getMessage(),e);
+                        }
+                        curr_index += VM_DETAILS_BATCH_SIZE;
                     }
-                    rs.close();
-                    curr_index += VM_DETAILS_BATCH_SIZE;
+                }
+                catch (Exception e)
+                {
+                    s_logger.error("listVmDetails:Exception:" + e.getMessage());
+                    throw new CloudRuntimeException("listVmDetails: Exception:" + e.getMessage(),e);
                 }
             }
 
             if (curr_index < userVmDataList.size()) {
                 int batch_size = (userVmDataList.size() - curr_index);
-                pstmt = txn.prepareStatement(VM_DETAILS + getQueryBatchAppender(batch_size));
-                // set the vars value
-                for (int k = 1, j = curr_index; j < curr_index + batch_size; j++, k++)
{
-                    pstmt.setLong(k, userVmDataList.get(j).getId());
-                }
-                ResultSet rs = pstmt.executeQuery();
-                while (rs.next()) {
-                    long vm_id = rs.getLong("vm_instance.id");
-                    //check if the entry is already there
-                    UserVmData uvm = userVmDataHash.get(vm_id);
-                    if (uvm == null) {
-                        uvm = new UserVmData();
-                        uvm.setId(vm_id);
+                try (PreparedStatement vm_details_pstmt = txn.prepareStatement(VM_DETAILS
+ getQueryBatchAppender(batch_size)))
+                {
+                    // set the vars value
+                    for (int k = 1, j = curr_index; j < curr_index + batch_size; j++,
k++) {
+                        vm_details_pstmt.setLong(k, userVmDataList.get(j).getId());
+                    }
+                    try(ResultSet rs = vm_details_pstmt.executeQuery();) {
+                        while (rs.next()) {
+                            long vm_id = rs.getLong("vm_instance.id");
+                            //check if the entry is already there
+                            UserVmData uvm = userVmDataHash.get(vm_id);
+                            if (uvm == null) {
+                                uvm = new UserVmData();
+                                uvm.setId(vm_id);
+                            }
+                            // initialize the data with this row
+                            setUserVmData(uvm, rs);
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        s_logger.error("listVmDetails: Exception:" + e.getMessage());
+                        throw new CloudRuntimeException("listVmDetails: Exception:" + e.getMessage(),e);
                     }
-                    // initialize the data with this row
-                    setUserVmData(uvm, rs);
                 }
-                rs.close();
+                catch (Exception e)
+                {
+                    s_logger.error("listVmDetails:Exception:" + e.getMessage());
+                    throw new CloudRuntimeException("listVmDetails: Exception:" + e.getMessage(),e);
+                }
             }
-
-            if (pstmt != null)
-                pstmt.close();
+            txn.commit();
             return userVmDataHash;
-        } catch (SQLException e) {
-            throw new CloudRuntimeException("DB Exception on: " + VM_DETAILS, e);
-        } catch (Throwable e) {
-            throw new CloudRuntimeException("Caught: " + VM_DETAILS, e);
+        } catch (Exception e) {
+            s_logger.error("listVmDetails:Exception:" + e.getMessage());
+            throw new CloudRuntimeException("listVmDetails:Exception : ", e);
         }
+        finally {
+            try{
+                if (txn != null)
+                {
+                    txn.close();
+                }
+            }
+            catch (Exception e)
+            {
+                s_logger.error("listVmDetails:Exception:" + e.getMessage());
+            }
+        }
+
     }
 
     public static UserVmData setUserVmData(UserVmData userVmData, ResultSet rs) throws SQLException
{


Mime
View raw message