Fixed Sonar blocker in LogFileReader.java 37/64437/1
authorAmaresh Kumar <kamaresh@in.ibm.com>
Tue, 4 Sep 2018 13:46:35 +0000 (19:16 +0530)
committerAmaresh Kumar <kamaresh@in.ibm.com>
Tue, 4 Sep 2018 13:46:46 +0000 (19:16 +0530)
https://sonar.onap.org/project/issues?id=org.onap.dmaap.datarouter%3Aparent&open=AWHFaQoGEU5FCDfKtnUY&resolved=false&severities=BLOCKER&types=BUG

Issue-ID: DMAAP-699
Change-Id: Ife4e0a1079a3a6e7db5dde5baedb14124365164d
Signed-off-by: Amaresh Kumar <kamaresh@in.ibm.com>
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoader.java

index ff7893d..8975f16 100644 (file)
@@ -254,24 +254,24 @@ public class LogfileLoader extends Thread {
             try {\r
                 // Limit to a million at a time to avoid typing up the DB for too long.\r
                 conn = db.getConnection();\r
-                PreparedStatement ps = conn.prepareStatement("DELETE from LOG_RECORDS where EVENT_TIME < ? limit 1000000");\r
-                ps.setLong(1, cutoff);\r
-                while (count > 0) {\r
-                    if (!ps.execute()) {\r
-                        int dcount = ps.getUpdateCount();\r
-                        count -= dcount;\r
-                        logger.debug("  " + dcount + " rows deleted.");\r
-                        did1 |= (dcount != 0);\r
-                        if (dcount == 0)\r
-                            count = 0;    // prevent inf. loops\r
-                    } else {\r
-                        count = 0;    // shouldn't happen!\r
+                try(PreparedStatement ps = conn.prepareStatement("DELETE from LOG_RECORDS where EVENT_TIME < ? limit 1000000")) {\r
+                    ps.setLong(1, cutoff);\r
+                    while (count > 0) {\r
+                        if (!ps.execute()) {\r
+                            int dcount = ps.getUpdateCount();\r
+                            count -= dcount;\r
+                            logger.debug("  " + dcount + " rows deleted.");\r
+                            did1 |= (dcount != 0);\r
+                            if (dcount == 0)\r
+                                count = 0;    // prevent inf. loops\r
+                        } else {\r
+                            count = 0;    // shouldn't happen!\r
+                        }\r
                     }\r
                 }\r
-                ps.close();\r
-                Statement stmt = conn.createStatement();\r
-                stmt.execute("OPTIMIZE TABLE LOG_RECORDS");\r
-                stmt.close();\r
+             try(Statement stmt = conn.createStatement()) {\r
+                 stmt.execute("OPTIMIZE TABLE LOG_RECORDS");\r
+             }\r
             } catch (SQLException e) {\r
                 System.err.println(e);\r
                 e.printStackTrace();\r
@@ -287,14 +287,14 @@ public class LogfileLoader extends Thread {
         Connection conn = null;\r
         try {\r
             conn = db.getConnection();\r
-            Statement stmt = conn.createStatement();\r
-            ResultSet rs = stmt.executeQuery("SELECT COUNT(*) as COUNT from LOG_RECORDS");\r
-            if (rs.next()) {\r
-                count = rs.getLong("COUNT");\r
-            }\r
-            rs.close();\r
-            stmt.close();\r
-        } catch (SQLException e) {\r
+           try(Statement stmt = conn.createStatement()) {\r
+               try(ResultSet rs = stmt.executeQuery("SELECT COUNT(*) as COUNT from LOG_RECORDS")) {\r
+                   if (rs.next()) {\r
+                       count = rs.getLong("COUNT");\r
+                   }\r
+               }\r
+           }\r
+         } catch (SQLException e) {\r
             System.err.println(e);\r
             e.printStackTrace();\r
         } finally {\r
@@ -309,17 +309,17 @@ public class LogfileLoader extends Thread {
         try {\r
             logger.debug("  LOG_RECORD table histogram...");\r
             conn = db.getConnection();\r
-            Statement stmt = conn.createStatement();\r
-            ResultSet rs = stmt.executeQuery("SELECT FLOOR(EVENT_TIME/86400000) AS DAY, COUNT(*) AS COUNT FROM LOG_RECORDS GROUP BY DAY");\r
-            while (rs.next()) {\r
-                long day = rs.getLong("DAY");\r
-                long cnt = rs.getLong("COUNT");\r
-                map.put(day, cnt);\r
-                logger.debug("  " + day + "  " + cnt);\r
+            try(Statement stmt = conn.createStatement()) {\r
+                try(ResultSet rs = stmt.executeQuery("SELECT FLOOR(EVENT_TIME/86400000) AS DAY, COUNT(*) AS COUNT FROM LOG_RECORDS GROUP BY DAY")) {\r
+                    while (rs.next()) {\r
+                        long day = rs.getLong("DAY");\r
+                        long cnt = rs.getLong("COUNT");\r
+                        map.put(day, cnt);\r
+                        logger.debug("  " + day + "  " + cnt);\r
+                    }\r
+                }\r
             }\r
-            rs.close();\r
-            stmt.close();\r
-        } catch (SQLException e) {\r
+           } catch (SQLException e) {\r
             System.err.println(e);\r
             e.printStackTrace();\r
         } finally {\r
@@ -340,14 +340,14 @@ public class LogfileLoader extends Thread {
             boolean go_again = true;\r
             for (long i = 0; go_again; i += stepsize) {\r
                 String sql = String.format("select RECORD_ID from LOG_RECORDS LIMIT %d,%d", i, stepsize);\r
-                ResultSet rs = stmt.executeQuery(sql);\r
-                go_again = false;\r
-                while (rs.next()) {\r
-                    long n = rs.getLong("RECORD_ID");\r
-                    nbs.set(n);\r
-                    go_again = true;\r
+                try(ResultSet rs = stmt.executeQuery(sql)) {\r
+                    go_again = false;\r
+                    while (rs.next()) {\r
+                        long n = rs.getLong("RECORD_ID");\r
+                        nbs.set(n);\r
+                        go_again = true;\r
+                    }\r
                 }\r
-                rs.close();\r
             }\r
             stmt.close();\r
             seq_set = nbs;\r
@@ -391,49 +391,49 @@ public class LogfileLoader extends Thread {
             Reader r = f.getPath().endsWith(".gz")\r
                     ? new InputStreamReader(new GZIPInputStream(new FileInputStream(f)))\r
                     : new FileReader(f);\r
-            LineNumberReader in = new LineNumberReader(r);\r
-            String line;\r
-            while ((line = in.readLine()) != null) {\r
-                try {\r
-                    for (Loadable rec : buildRecords(line)) {\r
-                        rec.load(ps);\r
-                        if (rec instanceof LogRecord) {\r
-                            LogRecord lr = ((LogRecord) rec);\r
-                            if (!seq_set.get(lr.getRecordId())) {\r
+            try(LineNumberReader in = new LineNumberReader(r)) {\r
+                String line;\r
+                while ((line = in.readLine()) != null) {\r
+                    try {\r
+                        for (Loadable rec : buildRecords(line)) {\r
+                            rec.load(ps);\r
+                            if (rec instanceof LogRecord) {\r
+                                LogRecord lr = ((LogRecord) rec);\r
+                                if (!seq_set.get(lr.getRecordId())) {\r
+                                    ps.executeUpdate();\r
+                                    seq_set.set(lr.getRecordId());\r
+                                } else\r
+                                    logger.debug("Duplicate record ignored: " + lr.getRecordId());\r
+                            } else {\r
+                                if (++nextid > set_end)\r
+                                    nextid = set_start;\r
+                                ps.setLong(18, nextid);\r
                                 ps.executeUpdate();\r
-                                seq_set.set(lr.getRecordId());\r
-                            } else\r
-                                logger.debug("Duplicate record ignored: " + lr.getRecordId());\r
-                        } else {\r
-                            if (++nextid > set_end)\r
-                                nextid = set_start;\r
-                            ps.setLong(18, nextid);\r
-                            ps.executeUpdate();\r
-                            seq_set.set(nextid);\r
+                                seq_set.set(nextid);\r
+                            }\r
+                            ps.clearParameters();\r
+                            ok++;\r
                         }\r
-                        ps.clearParameters();\r
-                        ok++;\r
+                    } catch (SQLException e) {\r
+                        logger.warn("PROV8003 Invalid value in record: " + line);\r
+                        logger.debug(e);\r
+                        e.printStackTrace();\r
+                    } catch (NumberFormatException e) {\r
+                        logger.warn("PROV8004 Invalid number in record: " + line);\r
+                        logger.debug(e);\r
+                        e.printStackTrace();\r
+                    } catch (ParseException e) {\r
+                        logger.warn("PROV8005 Invalid date in record: " + line);\r
+                        logger.debug(e);\r
+                        e.printStackTrace();\r
+                    } catch (Exception e) {\r
+                        logger.warn("PROV8006 Invalid pattern in record: " + line);\r
+                        logger.debug(e);\r
+                        e.printStackTrace();\r
                     }\r
-                } catch (SQLException e) {\r
-                    logger.warn("PROV8003 Invalid value in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (NumberFormatException e) {\r
-                    logger.warn("PROV8004 Invalid number in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (ParseException e) {\r
-                    logger.warn("PROV8005 Invalid date in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (Exception e) {\r
-                    logger.warn("PROV8006 Invalid pattern in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
+                    total++;\r
                 }\r
-                total++;\r
             }\r
-            in.close();\r
             ps.close();\r
             db.release(conn);\r
             conn = null;\r