try {\r
Thread.sleep(1000L);\r
} catch (InterruptedException e) {\r
+ Thread.currentThread().interrupt();\r
}\r
idle = false;\r
} else {\r
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
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
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
Connection conn = null;\r
try {\r
conn = db.getConnection();\r
- Statement stmt = conn.createStatement();\r
- // Build a bitset of all records in the LOG_RECORDS table\r
- // We need to run this SELECT in stages, because otherwise we run out of memory!\r
RLEBitSet nbs = new RLEBitSet();\r
- final long stepsize = 6000000L;\r
- 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(Statement stmt = conn.createStatement()) {\r
+ // Build a bitset of all records in the LOG_RECORDS table\r
+ // We need to run this SELECT in stages, because otherwise we run out of memory!\r
+ final long stepsize = 6000000L;\r
+ 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
+ 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
}\r
- rs.close();\r
}\r
- stmt.close();\r
seq_set = nbs;\r
-\r
// Compare with the range for this server\r
// Determine the next ID for this set of record IDs\r
RLEBitSet tbs = (RLEBitSet) nbs.clone();\r
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