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.Connection, 
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.Connection, 
java.util.List)()
/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1041 in 
com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connection, 
java.util.List)()
/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in 
com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connection, 
java.util.List)()
/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1069 in 
com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connection, 
java.util.List)()
/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1077 in 
com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connection, 
java.util.List)()
/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java: 1109 in 
com.cloud.upgrade.dao.Upgrade410to420.updateNonLegacyZones(java.sql.Connection, 
java.util.List)()

** CID 1225204:  REC: RuntimeException capture  (FB.REC_CATCH_EXCEPTION)
/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/SecurityGroupHttpClient.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(java.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.Long, 
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/datastore/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.Connection, 
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.Connection, 
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.Connection, 
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.Connection, 
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.Connection, 
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.Connection, 
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.Connection, 
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/SecurityGroupHttpClient.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(java.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.dropInvalidKeyFromStoragePoolTable(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.Long, 
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/datastore/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.SolidFireSharedPrimaryDataStoreLifeCycle$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;

Reply via email to