+1 Any commit that is not findbug compliant should be reverted. On 14/07/14 10:14 am, "Koushik Das" <koushik....@citrix.com> wrote:
>Should commits be reverted if they are not "Findbugs" compliant? >Otherwise defect density would never come down. > >-----Original Message----- >From: Santhosh Edukulla [mailto:santhosh.eduku...@citrix.com] >Sent: Friday, 11 July 2014 8:59 PM >To: dev@cloudstack.apache.org >Subject: Coverity Scan Report: July 11 2014 > >Hi All, > >FYI, >Current Defect Density :3.58 >Newly Detected: 7, below are new defects reported by coverity scan >service. > >A small note, we should not allow adding new defects to the existing >reported count, otherwise, current technical debt will never come down. >Few of these issues can be equally, found by running findbugs or other >static analysis tools, using IDE locally. Some of these, reported below >could be fp as well. > >How to use findbugs @link below: >https://cwiki.apache.org/confluence/display/CLOUDSTACK/Using+FindBugs > >I believe review submissions, can be made little stringent, if we can >enforce\atleast inquire for findbugs reports from users for submitted >reviews. > >Regards >Santhosh > >============================================================ >Defect(s) Reported-by: Coverity Scan >Showing 7 of 7 defect(s) > > >** CID 1225198: Explicit null dereferenced (FORWARD_NULL) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1055 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() > >** CID 1225199: Resource leak (RESOURCE_LEAK) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1031 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1041 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1069 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1077 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() > >** CID 1225204: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Secu >rityGroupHttpClient.java: 144 in >com.cloud.baremetal.networkservice.SecurityGroupHttpClient.echo(java.lang. >String, long, long)() > >** CID 1225203: WMI: Inefficient Map Iterator >(FB.WMI_WRONG_MAP_ITERATOR) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade440to450.java: 84 in >com.cloud.upgrade.dao.Upgrade440to450.dropInvalidKeyFromStoragePoolTable(j >ava.sql.Connection)() > >** CID 1225202: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/engine/schema/src/com/cloud/usage/dao/UsageSecurityGroupDaoImpl.java: >145 in >com.cloud.usage.dao.UsageSecurityGroupDaoImpl.getUsageRecords(java.lang.Lo >ng, java.lang.Long, java.util.Date, java.util.Date, boolean, int)() > >** CID 1225201: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java: 211 in >com.cloud.usage.dao.UsageStorageDaoImpl.getUsageRecords(java.lang.Long, >java.lang.Long, java.util.Date, java.util.Date, boolean, int)() > >** CID 1225200: SIC: Inner class could be made static >(FB.SIC_INNER_SHOULD_BE_STATIC) >/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datast >ore/lifecycle/SolidFireSharedPrimaryDataStoreLifeCycle.java: 296 in () > > >__________________________________________________________________________ >______________________________ >*** CID 1225198: Explicit null dereferenced (FORWARD_NULL) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1055 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1049 } else if (key.equalsIgnoreCase("password")) >{ >1050 password = value; >1051 } else if (key.equalsIgnoreCase("url")) { >1052 url = value; >1053 } >1054 } >>>> CID 1225198: Explicit null dereferenced (FORWARD_NULL) >>>> Calling a method on null object "url". >1055 String[] tokens = url.split("/"); // url format >- http://vcenter/dc/cluster >1056 String vc = tokens[2]; >1057 String dcName = tokens[3]; >1058 String guid = dcName + "@" + vc; >1059 >1060 pstmt = conn.prepareStatement("INSERT INTO >`cloud`.`vmware_data_center` (uuid, name, guid, vcenter_host, username, >password) values(?, ?, ?, ?, ?, ?)"); > >__________________________________________________________________________ >______________________________ >*** CID 1225199: Resource leak (RESOURCE_LEAK) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1031 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1025 ResultSet dcInfo = null; >1026 try { >1027 for (Long zoneId : zones) { >1028 s_logger.debug("Discovered non-legacy zone " + >zoneId + ". Processing the zone to associate with VMware datacenter."); >1029 >1030 // All clusters in a non legacy zone will belong >to the same VMware DC, hence pick the first cluster >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Overwriting "clustersQuery" in "clustersQuery = >>>>conn.prepareStatement("select id from `cloud`.`cluster` where removed >>>>is NULL AND data_center_id=?")" leaks the resource that >>>>"clustersQuery" refers to. >1031 clustersQuery = conn.prepareStatement("select id >from `cloud`.`cluster` where removed is NULL AND data_center_id=?"); >1032 clustersQuery.setLong(1, zoneId); >1033 clusters = clustersQuery.executeQuery(); >1034 clusters.next(); >1035 Long clusterId = clusters.getLong("id"); >1036 >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1041 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1035 Long clusterId = clusters.getLong("id"); >1036 >1037 // Get VMware datacenter details from >cluster_details table >1038 String user = null; >1039 String password = null; >1040 String url = null; >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Overwriting "clusterDetailsQuery" in "clusterDetailsQuery = >>>>conn.prepareStatement("select name, value from >>>>`cloud`.`cluster_details` where cluster_id=?")" leaks the resource >>>>that "clusterDetailsQuery" refers to. >1041 clusterDetailsQuery = >conn.prepareStatement("select name, value from `cloud`.`cluster_details` >where cluster_id=?"); >1042 clusterDetailsQuery.setLong(1, clusterId); >1043 clusterDetails = >clusterDetailsQuery.executeQuery(); >1044 while (clusterDetails.next()) { >1045 String key = clusterDetails.getString(1); >1046 String value = clusterDetails.getString(2); >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1103 if (pstmt != null) { >1104 pstmt.close(); >1105 } >1106 } catch (SQLException e) { >1107 } >1108 } >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Variable "clusterDetailsQuery" going out of scope leaks the >>>>resource it refers to. >1109 } >1110 >1111 private void createPlaceHolderNics(Connection conn) { >1112 PreparedStatement pstmt = null; >1113 ResultSet rs = null; >1114 >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1069 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1063 pstmt.setString(3, guid); >1064 pstmt.setString(4, vc); >1065 pstmt.setString(5, user); >1066 pstmt.setString(6, password); >1067 pstmt.executeUpdate(); >1068 >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Overwriting "pstmt" in "pstmt = conn.prepareStatement("SELECT id >>>>FROM `cloud`.`vmware_data_center` where guid=?")" leaks the resource >>>>that "pstmt" refers to. >1069 pstmt = conn.prepareStatement("SELECT id FROM >`cloud`.`vmware_data_center` where guid=?"); >1070 pstmt.setString(1, guid); >1071 dcInfo = pstmt.executeQuery(); >1072 Long vmwareDcId = -1L; >1073 if (dcInfo.next()) { >1074 vmwareDcId = dcInfo.getLong("id"); >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1077 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1071 dcInfo = pstmt.executeQuery(); >1072 Long vmwareDcId = -1L; >1073 if (dcInfo.next()) { >1074 vmwareDcId = dcInfo.getLong("id"); >1075 } >1076 >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Overwriting "pstmt" in "pstmt = conn.prepareStatement("INSERT >>>>INTO `cloud`.`vmware_data_center_zone_map` (zone_id, >>>>vmware_data_center_id) values(?, ?)")" leaks the resource that "pstmt" >>>>refers to. >1077 pstmt = conn.prepareStatement("INSERT INTO >`cloud`.`vmware_data_center_zone_map` (zone_id, vmware_data_center_id) >values(?, ?)"); >1078 pstmt.setLong(1, zoneId); >1079 pstmt.setLong(2, vmwareDcId); >1080 pstmt.executeUpdate(); >1081 } >1082 } catch (SQLException e) { >/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in >com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connec >tion, java.util.List)() >1103 if (pstmt != null) { >1104 pstmt.close(); >1105 } >1106 } catch (SQLException e) { >1107 } >1108 } >>>> CID 1225199: Resource leak (RESOURCE_LEAK) >>>> Variable "pstmt" going out of scope leaks the resource it refers >>>>to. >1109 } >1110 >1111 private void createPlaceHolderNics(Connection conn) { >1112 PreparedStatement pstmt = null; >1113 ResultSet rs = null; >1114 > >__________________________________________________________________________ >______________________________ >*** CID 1225204: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Secu >rityGroupHttpClient.java: 144 in >com.cloud.baremetal.networkservice.SecurityGroupHttpClient.echo(java.lang. >String, long, long)() >138 if (httpClient.executeMethod(post) != 200) { >139 logger.debug(String.format("echoing baremetal >security group agent on %s got error: %s", agentIp, >post.getResponseBodyAsString())); >140 } else { >141 ret = true; >142 } >143 break; >>>> CID 1225204: REC: RuntimeException capture >>>>(FB.REC_CATCH_EXCEPTION) >>>> Catching RuntimeExceptions, perhaps unintentionally, with a catch >>>>block for Exception >144 } catch (Exception e) { >145 if (count*m >= l) { >146 logger.debug(String.format("ping security >group agent on vm[%s] timeout after %s minutes, starting vm failed, >count=%s", agentIp, TimeUnit.MILLISECONDS.toSeconds(l), count)); >147 break; >148 } else { >149 logger.debug(String.format("Having pinged >security group agent on vm[%s] %s times, continue to wait...", agentIp, >count)); > >__________________________________________________________________________ >______________________________ >*** CID 1225203: WMI: Inefficient Map Iterator >(FB.WMI_WRONG_MAP_ITERATOR) >/engine/schema/src/com/cloud/upgrade/dao/Upgrade440to450.java: 84 in >com.cloud.upgrade.dao.Upgrade440to450.dropInvalidKeyFromStoragePoolTable(j >ava.sql.Connection)() >78 >79 keys.add("id_2"); >80 uniqueKeys.put("storage_pool", keys); >81 >82 s_logger.debug("Droping id_2 key from storage_pool table"); >83 for (String tableName : uniqueKeys.keySet()) { >>>> CID 1225203: WMI: Inefficient Map Iterator >>>>(FB.WMI_WRONG_MAP_ITERATOR) >>>> >>>>com.cloud.upgrade.dao.Upgrade440to450.dropInvalidKeyFromStoragePoolTabl >>>>e(Connection) makes inefficient use of keySet iterator instead of >>>>entrySet iterator >84 DbUpgradeUtils.dropKeysIfExist(conn, tableName, >uniqueKeys.get(tableName), false); >85 } >86 } > >__________________________________________________________________________ >______________________________ >*** CID 1225202: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/engine/schema/src/com/cloud/usage/dao/UsageSecurityGroupDaoImpl.java: >145 in >com.cloud.usage.dao.UsageSecurityGroupDaoImpl.getUsageRecords(java.lang.Lo >ng, java.lang.Long, java.util.Date, java.util.Date, boolean, int)() >139 } >140 usageRecords.add(new >UsageSecurityGroupVO(zoneId, acctId, dId, vmId, sgId, createdDate, >deletedDate)); >141 } >142 }catch (SQLException e) { >143 throw new CloudException("Error getting usage >records"+e.getMessage(), e); >144 } >>>> CID 1225202: REC: RuntimeException capture >>>>(FB.REC_CATCH_EXCEPTION) >>>> Catching RuntimeExceptions, perhaps unintentionally, with a catch >>>>block for Exception >145 } catch (Exception e) { >146 txn.rollback(); >147 s_logger.warn("Error getting usage >records:"+e.getMessage(), e); >148 } finally { >149 txn.close(); >150 } >151 return usageRecords; >152 } > >__________________________________________________________________________ >______________________________ >*** CID 1225201: REC: RuntimeException capture (FB.REC_CATCH_EXCEPTION) >/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java: 211 in >com.cloud.usage.dao.UsageStorageDaoImpl.getUsageRecords(java.lang.Long, >java.lang.Long, java.util.Date, java.util.Date, boolean, int)() >205 usageRecords.add(new UsageStorageVO(id, >zoneId, acctId, dId, type, sourceId, size, virtualSize, createdDate, >deletedDate)); >206 } >207 }catch(SQLException e) >208 { >209 throw new >CloudException("getUsageRecords:"+e.getMessage(),e); >210 } >>>> CID 1225201: REC: RuntimeException capture >>>>(FB.REC_CATCH_EXCEPTION) >>>> Catching RuntimeExceptions, perhaps unintentionally, with a catch >>>>block for Exception >211 }catch (Exception e) { >212 txn.rollback(); >213 >s_logger.error("getUsageRecords:Exception:"+e.getMessage(), e); >214 } finally { >215 txn.close(); >216 } >217 return usageRecords; >218 } > >__________________________________________________________________________ >______________________________ >*** CID 1225200: SIC: Inner class could be made static >(FB.SIC_INNER_SHOULD_BE_STATIC) >/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datast >ore/lifecycle/SolidFireSharedPrimaryDataStoreLifeCycle.java: 296 in () >290 return StoragePoolType.VMFS; >291 } >292 >293 throw new CloudRuntimeException("The 'hypervisor' >parameter must be '" + HypervisorType.XenServer + "' or '" + >HypervisorType.VMware + "'."); >294 } >295 >>>> CID 1225200: SIC: Inner class could be made static >>>>(FB.SIC_INNER_SHOULD_BE_STATIC) >>>> Should >>>>org.apache.cloudstack.storage.datastore.lifecycle.SolidFireSharedPrimar >>>>yDataStoreLifeCycle$SolidFireCreateVolume be a _static_ inner class? >296 private class SolidFireCreateVolume { >297 private final SolidFireUtil.SolidFireVolume _sfVolume; >298 private final SolidFireUtil.SolidFireAccount _sfAccount; >299 >300 public >SolidFireCreateVolume(SolidFireUtil.SolidFireVolume sfVolume, >SolidFireUtil.SolidFireAccount sfAccount) { >301 _sfVolume = sfVolume;