From a600d8408ea86782318139c17cf346c8497943d0 Mon Sep 17 00:00:00 2001 From: Santhosh Edukulla Date: Wed, 2 Jul 2014 14:08:16 +0530 Subject: [PATCH] Fixed Resource Leaks, null dereferences, few other issues reported by coverity --- .../src/com/cloud/dc/dao/VlanDaoImpl.java | 30 ++-- .../storage/dao/StoragePoolWorkDaoImpl.java | 26 ++- .../com/cloud/upgrade/DatabaseCreator.java | 4 +- .../usage/dao/UsageIPAddressDaoImpl.java | 21 ++- .../dao/UsageLoadBalancerPolicyDaoImpl.java | 20 ++- .../dao/UsageNetworkOfferingDaoImpl.java | 22 ++- .../dao/UsagePortForwardingRuleDaoImpl.java | 20 ++- .../usage/dao/UsageSecurityGroupDaoImpl.java | 73 ++++---- .../cloud/usage/dao/UsageStorageDaoImpl.java | 100 ++++++----- .../cloud/usage/dao/UsageVPNUserDaoImpl.java | 20 ++- .../cloud/usage/dao/UsageVolumeDaoImpl.java | 19 ++- .../datastore/db/PrimaryDataStoreDaoImpl.java | 70 ++++---- .../StorageCacheRandomAllocator.java | 2 +- .../datastore/PrimaryDataStoreHelper.java | 8 +- .../dao/ManagementServerHostDaoImpl.java | 160 ++++++++++-------- .../db/src/com/cloud/utils/db/DbUtil.java | 2 +- .../com/cloud/utils/db/GenericDaoBase.java | 4 +- .../kvm/resource/BridgeVifDriver.java | 4 + .../SamplePrimaryDataStoreLifeCycleImpl.java | 1 - .../cloud/storage/VolumeApiServiceImpl.java | 2 +- .../cloud/tags/TaggedResourceManagerImpl.java | 2 +- .../vm/snapshot/VMSnapshotManagerImpl.java | 2 +- 22 files changed, 336 insertions(+), 276 deletions(-) diff --git a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java index a38a96eaa4f..1003053f90b 100755 --- a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java +++ b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java @@ -301,27 +301,25 @@ public class VlanDaoImpl extends GenericDaoBase implements VlanDao @Override @DB public List searchForZoneWideVlans(long dcId, String vlanType, String vlanId) { - StringBuilder sql = new StringBuilder(FindZoneWideVlans); - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql.toString()); - pstmt.setLong(1, dcId); - pstmt.setString(2, vlanType); - pstmt.setString(3, vlanId); - - ResultSet rs = pstmt.executeQuery(); - List zoneWideVlans = new ArrayList(); - - while (rs.next()) { - zoneWideVlans.add(toEntityBean(rs, false)); + List zoneWideVlans = new ArrayList(); + try(PreparedStatement pstmt = txn.prepareStatement(sql.toString());){ + if(pstmt != null) { + pstmt.setLong(1, dcId); + pstmt.setString(2, vlanType); + pstmt.setString(3, vlanId); + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + zoneWideVlans.add(toEntityBean(rs, false)); + } + }catch (SQLException e) { + throw new CloudRuntimeException("searchForZoneWideVlans:Exception:" + e.getMessage(), e); + } } - return zoneWideVlans; } catch (SQLException e) { - throw new CloudRuntimeException("Unable to execute " + pstmt.toString(), e); + throw new CloudRuntimeException("searchForZoneWideVlans:Exception:" + e.getMessage(), e); } } diff --git a/engine/schema/src/com/cloud/storage/dao/StoragePoolWorkDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/StoragePoolWorkDaoImpl.java index c6e1b74f754..99e96a520fa 100644 --- a/engine/schema/src/com/cloud/storage/dao/StoragePoolWorkDaoImpl.java +++ b/engine/schema/src/com/cloud/storage/dao/StoragePoolWorkDaoImpl.java @@ -116,25 +116,23 @@ public class StoragePoolWorkDaoImpl extends GenericDaoBase searchForPoolIdsForPendingWorkJobs(long msId) { - StringBuilder sql = new StringBuilder(FindPoolIds); - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql.toString()); - pstmt.setLong(1, msId); - - ResultSet rs = pstmt.executeQuery(); - List poolIds = new ArrayList(); - - while (rs.next()) { - poolIds.add(rs.getLong("pool_id")); + List poolIds = new ArrayList(); + try (PreparedStatement pstmt = txn.prepareStatement(sql.toString());){ + if(pstmt != null) { + pstmt.setLong(1, msId); + try (ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + poolIds.add(rs.getLong("pool_id")); + } + } catch (SQLException e) { + throw new CloudRuntimeException("searchForPoolIdsForPendingWorkJobs:Exception:" + e.getMessage(), e); + } } return poolIds; } catch (SQLException e) { - throw new CloudRuntimeException("Unable to execute " + pstmt.toString(), e); + throw new CloudRuntimeException("searchForPoolIdsForPendingWorkJobs:Exception:" + e.getMessage(), e); } - } } diff --git a/engine/schema/src/com/cloud/upgrade/DatabaseCreator.java b/engine/schema/src/com/cloud/upgrade/DatabaseCreator.java index b04607decc0..2509d6972c3 100755 --- a/engine/schema/src/com/cloud/upgrade/DatabaseCreator.java +++ b/engine/schema/src/com/cloud/upgrade/DatabaseCreator.java @@ -86,8 +86,8 @@ public class DatabaseCreator { private static void initDB(String dbPropsFile, String rootPassword, String[] databases, boolean dryRun) { Properties dbProperties = new Properties(); - try { - dbProperties.load(new FileInputStream(new File(dbPropsFile))); + try(FileInputStream f_stream = new FileInputStream(new File(dbPropsFile));) { + dbProperties.load(f_stream); } catch (IOException e) { System.out.println("IOError: unable to load/read db properties file: " + e); System.exit(1); diff --git a/engine/schema/src/com/cloud/usage/dao/UsageIPAddressDaoImpl.java b/engine/schema/src/com/cloud/usage/dao/UsageIPAddressDaoImpl.java index 17d5dc8e825..358e638b547 100644 --- a/engine/schema/src/com/cloud/usage/dao/UsageIPAddressDaoImpl.java +++ b/engine/schema/src/com/cloud/usage/dao/UsageIPAddressDaoImpl.java @@ -18,6 +18,7 @@ package com.cloud.usage.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -25,6 +26,7 @@ import java.util.TimeZone; import javax.ejb.Local; +import com.cloud.exception.CloudException; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -57,20 +59,25 @@ public class UsageIPAddressDaoImpl extends GenericDaoBase im @Override public void removeBy(long accountId, long volId, int storageType) { TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); - PreparedStatement pstmt = null; try { txn.start(); String sql = REMOVE_BY_USERID_STORAGEID; - pstmt = txn.prepareAutoCloseStatement(sql); - pstmt.setLong(1, accountId); - pstmt.setLong(2, volId); - pstmt.setInt(3, storageType); - pstmt.executeUpdate(); + try( PreparedStatement pstmt = txn.prepareStatement(sql);) { + pstmt.setLong(1, accountId); + pstmt.setLong(2, volId); + pstmt.setInt(3, storageType); + pstmt.executeUpdate(); + }catch(SQLException e) + { + throw new CloudException("removeBy:Exception:"+e.getMessage(),e); + } txn.commit(); } catch (Exception e) { txn.rollback(); - s_logger.warn("Error removing usageStorageVO", e); + s_logger.error("Error removing usageStorageVO", e); } finally { txn.close(); } @@ -112,21 +117,26 @@ public class UsageStorageDaoImpl extends GenericDaoBase im @Override public void update(UsageStorageVO usage) { TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); - PreparedStatement pstmt = null; try { txn.start(); if (usage.getDeleted() != null) { - pstmt = txn.prepareAutoCloseStatement(UPDATE_DELETED); - pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted())); - pstmt.setLong(2, usage.getAccountId()); - pstmt.setLong(3, usage.getId()); - pstmt.setInt(4, usage.getStorageType()); + try(PreparedStatement pstmt = txn.prepareStatement(UPDATE_DELETED);) { + if (pstmt != null) { + pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted())); + pstmt.setLong(2, usage.getAccountId()); + pstmt.setLong(3, usage.getId()); + pstmt.setInt(4, usage.getStorageType()); + pstmt.executeUpdate(); + } + }catch (SQLException e) + { + throw new CloudException("UsageStorageVO update Error:"+e.getMessage(),e); + } } - pstmt.executeUpdate(); txn.commit(); } catch (Exception e) { txn.rollback(); - s_logger.warn("Error updating UsageStorageVO", e); + s_logger.error("Error updating UsageStorageVO:"+e.getMessage(), e); } finally { txn.close(); } @@ -157,11 +167,8 @@ public class UsageStorageDaoImpl extends GenericDaoBase im } TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); - PreparedStatement pstmt = null; - - try { - int i = 1; - pstmt = txn.prepareAutoCloseStatement(sql); + int i = 1; + try (PreparedStatement pstmt = txn.prepareStatement(sql);){ if (param1 != null) { pstmt.setLong(i++, param1); } @@ -172,38 +179,41 @@ public class UsageStorageDaoImpl extends GenericDaoBase im pstmt.setString(i++, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), startDate)); pstmt.setString(i++, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), endDate)); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) { - //id, zone_id, account_id, domain_id, storage_type, size, created, deleted - Long id = Long.valueOf(rs.getLong(1)); - Long zoneId = Long.valueOf(rs.getLong(2)); - Long acctId = Long.valueOf(rs.getLong(3)); - Long dId = Long.valueOf(rs.getLong(4)); - Integer type = Integer.valueOf(rs.getInt(5)); - Long sourceId = Long.valueOf(rs.getLong(6)); - Long size = Long.valueOf(rs.getLong(7)); - Long virtualSize = Long.valueOf(rs.getLong(10)); - Date createdDate = null; - Date deletedDate = null; - String createdTS = rs.getString(8); - String deletedTS = rs.getString(9); + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + //id, zone_id, account_id, domain_id, storage_type, size, created, deleted + Long id = Long.valueOf(rs.getLong(1)); + Long zoneId = Long.valueOf(rs.getLong(2)); + Long acctId = Long.valueOf(rs.getLong(3)); + Long dId = Long.valueOf(rs.getLong(4)); + Integer type = Integer.valueOf(rs.getInt(5)); + Long sourceId = Long.valueOf(rs.getLong(6)); + Long size = Long.valueOf(rs.getLong(7)); + Long virtualSize = Long.valueOf(rs.getLong(10)); + Date createdDate = null; + Date deletedDate = null; + String createdTS = rs.getString(8); + String deletedTS = rs.getString(9); - if (createdTS != null) { - createdDate = DateUtil.parseDateString(s_gmtTimeZone, createdTS); - } - if (deletedTS != null) { - deletedDate = DateUtil.parseDateString(s_gmtTimeZone, deletedTS); - } + if (createdTS != null) { + createdDate = DateUtil.parseDateString(s_gmtTimeZone, createdTS); + } + if (deletedTS != null) { + deletedDate = DateUtil.parseDateString(s_gmtTimeZone, deletedTS); + } - usageRecords.add(new UsageStorageVO(id, zoneId, acctId, dId, type, sourceId, size, virtualSize, createdDate, deletedDate)); + usageRecords.add(new UsageStorageVO(id, zoneId, acctId, dId, type, sourceId, size, virtualSize, createdDate, deletedDate)); + } + }catch(SQLException e) + { + throw new CloudException("getUsageRecords:"+e.getMessage(),e); } - } catch (Exception e) { + }catch (Exception e) { txn.rollback(); - s_logger.warn("Error getting usage records", e); + s_logger.error("getUsageRecords:Exception:"+e.getMessage(), e); } finally { txn.close(); } - return usageRecords; } } diff --git a/engine/schema/src/com/cloud/usage/dao/UsageVPNUserDaoImpl.java b/engine/schema/src/com/cloud/usage/dao/UsageVPNUserDaoImpl.java index 64d3ecd7fe9..e2251dfcd61 100644 --- a/engine/schema/src/com/cloud/usage/dao/UsageVPNUserDaoImpl.java +++ b/engine/schema/src/com/cloud/usage/dao/UsageVPNUserDaoImpl.java @@ -18,6 +18,7 @@ package com.cloud.usage.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -25,6 +26,7 @@ import java.util.TimeZone; import javax.ejb.Local; +import com.cloud.exception.CloudException; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -52,20 +54,24 @@ public class UsageVPNUserDaoImpl extends GenericDaoBase im @Override public void update(UsageVPNUserVO usage) { TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); - PreparedStatement pstmt = null; try { txn.start(); if (usage.getDeleted() != null) { - pstmt = txn.prepareAutoCloseStatement(UPDATE_DELETED); - pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted())); - pstmt.setLong(2, usage.getAccountId()); - pstmt.setLong(3, usage.getUserId()); + try(PreparedStatement pstmt = txn.prepareStatement(UPDATE_DELETED);) { + if (pstmt != null) { + pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted())); + pstmt.setLong(2, usage.getAccountId()); + pstmt.setLong(3, usage.getUserId()); + pstmt.executeUpdate(); + } + }catch (SQLException e) { + throw new CloudException("Error updating UsageVPNUserVO"+e.getMessage(), e); + } } - pstmt.executeUpdate(); txn.commit(); } catch (Exception e) { txn.rollback(); - s_logger.warn("Error updating UsageVPNUserVO", e); + s_logger.error("Error updating UsageVPNUserVO:"+e.getMessage(), e); } finally { txn.close(); } diff --git a/engine/schema/src/com/cloud/usage/dao/UsageVolumeDaoImpl.java b/engine/schema/src/com/cloud/usage/dao/UsageVolumeDaoImpl.java index 7bf058c3f4c..5beafa60393 100644 --- a/engine/schema/src/com/cloud/usage/dao/UsageVolumeDaoImpl.java +++ b/engine/schema/src/com/cloud/usage/dao/UsageVolumeDaoImpl.java @@ -18,6 +18,7 @@ package com.cloud.usage.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -25,6 +26,7 @@ import java.util.TimeZone; import javax.ejb.Local; +import com.cloud.exception.CloudException; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -55,18 +57,21 @@ public class UsageVolumeDaoImpl extends GenericDaoBase impl @Override public void removeBy(long accountId, long volId) { TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); - PreparedStatement pstmt = null; try { txn.start(); - String sql = REMOVE_BY_USERID_VOLID; - pstmt = txn.prepareAutoCloseStatement(sql); - pstmt.setLong(1, accountId); - pstmt.setLong(2, volId); - pstmt.executeUpdate(); + try(PreparedStatement pstmt = txn.prepareStatement(REMOVE_BY_USERID_VOLID);) { + if (pstmt != null) { + pstmt.setLong(1, accountId); + pstmt.setLong(2, volId); + pstmt.executeUpdate(); + } + }catch (SQLException e) { + throw new CloudException("Error removing usageVolumeVO:"+e.getMessage(), e); + } txn.commit(); } catch (Exception e) { txn.rollback(); - s_logger.warn("Error removing usageVolumeVO", e); + s_logger.warn("Error removing usageVolumeVO:"+e.getMessage(), e); } finally { txn.close(); } diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java index 92793f1fb1a..cb8ec31fdbd 100644 --- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java +++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java @@ -263,9 +263,8 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase sql.delete(sql.length() - 4, sql.length()); sql.append(DetailsSqlSuffix); TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql.toString()); + try (PreparedStatement pstmt = txn.prepareStatement(sql.toString());){ + List pools = new ArrayList(); int i = 1; pstmt.setLong(i++, dcId); pstmt.setLong(i++, podId); @@ -274,14 +273,16 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase pstmt.setLong(i++, clusterId); } pstmt.setInt(i++, details.size()); - ResultSet rs = pstmt.executeQuery(); - List pools = new ArrayList(); - while (rs.next()) { - pools.add(toEntityBean(rs, false)); + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + pools.add(toEntityBean(rs, false)); + } + }catch (SQLException e) { + throw new CloudRuntimeException("Unable to execute :" + e.getMessage(), e); } return pools; } catch (SQLException e) { - throw new CloudRuntimeException("Unable to execute " + pstmt, e); + throw new CloudRuntimeException("Unable to execute :" + e.getMessage(), e); } } @@ -378,21 +379,24 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase sql.delete(sql.length() - 4, sql.length()); sql.append(ZoneWideDetailsSqlSuffix); TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql.toString()); - int i = 1; - pstmt.setLong(i++, dcId); - pstmt.setString(i++, ScopeType.ZONE.toString()); - pstmt.setInt(i++, details.size()); - ResultSet rs = pstmt.executeQuery(); + try (PreparedStatement pstmt = txn.prepareStatement(sql.toString());){ List pools = new ArrayList(); - while (rs.next()) { - pools.add(toEntityBean(rs, false)); + if (pstmt != null) { + int i = 1; + pstmt.setLong(i++, dcId); + pstmt.setString(i++, ScopeType.ZONE.toString()); + pstmt.setInt(i++, details.size()); + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + pools.add(toEntityBean(rs, false)); + } + }catch (SQLException e) { + throw new CloudRuntimeException("findZoneWideStoragePoolsByTags:Exception:" + e.getMessage(), e); + } } return pools; } catch (SQLException e) { - throw new CloudRuntimeException("Unable to execute " + pstmt, e); + throw new CloudRuntimeException("findZoneWideStoragePoolsByTags:Exception:" + e.getMessage(), e); } } } @@ -400,27 +404,25 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase @Override @DB public List searchForStoragePoolDetails(long poolId, String value) { - StringBuilder sql = new StringBuilder(FindPoolTagDetails); - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql.toString()); - pstmt.setLong(1, poolId); - pstmt.setString(2, value); - - ResultSet rs = pstmt.executeQuery(); - List tags = new ArrayList(); - - while (rs.next()) { - tags.add(rs.getString("name")); + List tags = new ArrayList(); + try(PreparedStatement pstmt = txn.prepareStatement(sql.toString());) { + if (pstmt != null) { + pstmt.setLong(1, poolId); + pstmt.setString(2, value); + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + tags.add(rs.getString("name")); + } + }catch (SQLException e) { + throw new CloudRuntimeException("searchForStoragePoolDetails:Exception:" + e.getMessage(), e); + } } return tags; } catch (SQLException e) { - throw new CloudRuntimeException("Unable to execute " + pstmt.toString(), e); + throw new CloudRuntimeException("searchForStoragePoolDetails:Exception:" + e.getMessage(), e); } - } @Override diff --git a/engine/storage/cache/src/org/apache/cloudstack/storage/cache/allocator/StorageCacheRandomAllocator.java b/engine/storage/cache/src/org/apache/cloudstack/storage/cache/allocator/StorageCacheRandomAllocator.java index b4ef595e99f..ba1ee3cc540 100644 --- a/engine/storage/cache/src/org/apache/cloudstack/storage/cache/allocator/StorageCacheRandomAllocator.java +++ b/engine/storage/cache/src/org/apache/cloudstack/storage/cache/allocator/StorageCacheRandomAllocator.java @@ -52,7 +52,7 @@ public class StorageCacheRandomAllocator implements StorageCacheAllocator { } List cacheStores = dataStoreMgr.getImageCacheStores(scope); - if (cacheStores.size() <= 0) { + if ((cacheStores == null) || (cacheStores.size() <= 0)) { s_logger.debug("Can't find staging storage in zone: " + scope.getScopeId()); return null; } diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java b/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java index 6b129755009..ef0db853520 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java @@ -67,11 +67,14 @@ public class PrimaryDataStoreHelper { protected StoragePoolHostDao storagePoolHostDao; public DataStore createPrimaryDataStore(PrimaryDataStoreParameters params) { + if(params == null) + { + throw new InvalidParameterValueException("createPrimaryDataStore: Input params is null, please check"); + } StoragePoolVO dataStoreVO = dataStoreDao.findPoolByUUID(params.getUuid()); if (dataStoreVO != null) { throw new CloudRuntimeException("duplicate uuid: " + params.getUuid()); } - dataStoreVO = new StoragePoolVO(); dataStoreVO.setStorageProviderName(params.getProviderName()); dataStoreVO.setHostAddress(params.getHost()); @@ -114,7 +117,6 @@ public class PrimaryDataStoreHelper { dataStoreVO.setPath(updatedPath); } - String tags = params.getTags(); if (tags != null) { String[] tokens = tags.split(","); @@ -127,9 +129,7 @@ public class PrimaryDataStoreHelper { details.put(tag, "true"); } } - dataStoreVO = dataStoreDao.persist(dataStoreVO, details); - return dataStoreMgr.getDataStore(dataStoreVO.getId(), DataStoreRole.Primary); } diff --git a/framework/cluster/src/com/cloud/cluster/dao/ManagementServerHostDaoImpl.java b/framework/cluster/src/com/cloud/cluster/dao/ManagementServerHostDaoImpl.java index 3d0c3f56309..89d7d278259 100644 --- a/framework/cluster/src/com/cloud/cluster/dao/ManagementServerHostDaoImpl.java +++ b/framework/cluster/src/com/cloud/cluster/dao/ManagementServerHostDaoImpl.java @@ -53,15 +53,14 @@ public class ManagementServerHostDaoImpl extends GenericDaoBase listOrphanMsids() { List orphanList = new ArrayList(); - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - pstmt = - txn.prepareAutoCloseStatement("select t.mgmt_server_id from (select mgmt_server_id, count(*) as count from host group by mgmt_server_id) as t WHERE t.count > 0 AND t.mgmt_server_id NOT IN (select msid from mshost)"); - - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) { - orphanList.add(rs.getLong(1)); + try (PreparedStatement pstmt = + txn.prepareStatement("select t.mgmt_server_id from (select mgmt_server_id, count(*) as count from host group by mgmt_server_id) as t WHERE t.count > 0 AND t.mgmt_server_id NOT IN (select msid from mshost)");) + { + try(ResultSet rs = pstmt.executeQuery();) { + while (rs.next()) { + orphanList.add(rs.getLong(1)); + } + }catch (SQLException e) { + throw new CloudRuntimeException("listOrphanMsids:Exception:" + e.getMessage(), e); } + return orphanList; } catch (SQLException e) { - throw new CloudRuntimeException("DB exception on " + pstmt.toString(), e); + throw new CloudRuntimeException("listOrphanMsids:Exception:" + e.getMessage(), e); } - - return orphanList; } @Override diff --git a/framework/db/src/com/cloud/utils/db/DbUtil.java b/framework/db/src/com/cloud/utils/db/DbUtil.java index 792573cbce1..43ed46272ca 100755 --- a/framework/db/src/com/cloud/utils/db/DbUtil.java +++ b/framework/db/src/com/cloud/utils/db/DbUtil.java @@ -257,7 +257,7 @@ public class DbUtil { rs = pstmt.executeQuery(); if (rs != null && rs.first()) return rs.getInt(1) > 0; - s_logger.error("RELEASE_LOCK() returns unexpected result : " + rs.getInt(1)); + s_logger.error("releaseGlobalLock:RELEASE_LOCK() returns unexpected result"); } catch (SQLException e) { s_logger.error("RELEASE_LOCK() throws exception ", e); } catch (Throwable e) { diff --git a/framework/db/src/com/cloud/utils/db/GenericDaoBase.java b/framework/db/src/com/cloud/utils/db/GenericDaoBase.java index 2052aadffdd..4c474044380 100755 --- a/framework/db/src/com/cloud/utils/db/GenericDaoBase.java +++ b/framework/db/src/com/cloud/utils/db/GenericDaoBase.java @@ -1486,9 +1486,9 @@ public abstract class GenericDaoBase extends Compone if (length < str.length()) { try { if (attr.is(Attribute.Flag.Encrypted)) { - pstmt.setBytes(j, DBEncryptionUtil.encrypt(str.substring(0, column.length())).getBytes("UTF-8")); + pstmt.setBytes(j, DBEncryptionUtil.encrypt(str.substring(0, length)).getBytes("UTF-8")); } else { - pstmt.setBytes(j, str.substring(0, column.length()).getBytes("UTF-8")); + pstmt.setBytes(j, str.substring(0, length).getBytes("UTF-8")); } } catch (UnsupportedEncodingException e) { // no-way it can't support UTF-8 encoding diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java index e684b8de5f6..839cbaa35ec 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java @@ -101,6 +101,10 @@ public class BridgeVifDriver extends VifDriverBase { } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) { throw new InternalErrorException("Nicira NVP Logicalswitches are not supported by the BridgeVifDriver"); } + if ((vNetId == null)||(protocol == null)) + { + throw new InternalErrorException("plug: protocol or vNetId value is null"); + } String trafficLabel = nic.getName(); if (nic.getType() == Networks.TrafficType.Guest) { Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0; diff --git a/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/lifecycle/SamplePrimaryDataStoreLifeCycleImpl.java b/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/lifecycle/SamplePrimaryDataStoreLifeCycleImpl.java index 579cc2414e1..ee38072879b 100644 --- a/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/lifecycle/SamplePrimaryDataStoreLifeCycleImpl.java +++ b/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/lifecycle/SamplePrimaryDataStoreLifeCycleImpl.java @@ -61,7 +61,6 @@ public class SamplePrimaryDataStoreLifeCycleImpl implements PrimaryDataStoreLife @Override public DataStore initialize(Map dsInfos) { - DataStore store = primaryStoreHelper.createPrimaryDataStore(null); return providerMgr.getPrimaryDataStore(store.getId()); } diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index a557c0e7a4c..e788cb2971c 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -1642,7 +1642,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic try { return orchestrateMigrateVolume(vol.getId(), destPool.getId(), liveMigrateVolume); } finally { - if (VmJobEnabled.value()) + if ((VmJobEnabled.value())&&(placeHolder != null)) _workJobDao.expunge(placeHolder.getId()); } diff --git a/server/src/com/cloud/tags/TaggedResourceManagerImpl.java b/server/src/com/cloud/tags/TaggedResourceManagerImpl.java index b77c55e090c..ea032ad9190 100644 --- a/server/src/com/cloud/tags/TaggedResourceManagerImpl.java +++ b/server/src/com/cloud/tags/TaggedResourceManagerImpl.java @@ -190,7 +190,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso accountId = Account.ACCOUNT_ID_SYSTEM; } - if ( ((accountId != null) && (domainId == -1)) || (domainId == null) ) + if ((domainId == null) || ((accountId != null) && (domainId.longValue() == -1))) { domainId = _accountDao.getDomainIdForGivenAccountId(accountId); } diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index e085b8d8fed..e46adeddd1c 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -727,7 +727,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana try { return orchestrateDeleteAllVMSnapshots(vmId, type); } finally { - if (VmJobEnabled.value()) + if ( (VmJobEnabled.value()) && (placeHolder != null)) _workJobDao.expunge(placeHolder.getId()); }