2.0-last-part
Louis Lam 1 month ago
parent 93cc21271f
commit 5e55215c9c

@ -785,8 +785,6 @@ class Database {
let part = 100 / monitors.length; let part = 100 / monitors.length;
let i = 1; let i = 1;
for (let monitor of monitors) { for (let monitor of monitors) {
// TODO: Get two or three days at the same to speed up???
// Get a list of unique dates from the heartbeat table, using raw sql // Get a list of unique dates from the heartbeat table, using raw sql
let dates = await R.getAll(` let dates = await R.getAll(`
SELECT DISTINCT DATE(time) AS date SELECT DISTINCT DATE(time) AS date

@ -60,6 +60,9 @@ class UptimeCalculator {
*/ */
migrationMode = false; migrationMode = false;
statMinutelyKeepHour = 24;
statHourlyKeepDay = 30;
/** /**
* Get the uptime calculator for a monitor * Get the uptime calculator for a monitor
* Initializes and returns the monitor if it does not exist * Initializes and returns the monitor if it does not exist
@ -305,8 +308,11 @@ class UptimeCalculator {
} }
await R.store(dailyStatBean); await R.store(dailyStatBean);
// TODO: For migration mode, we don't need to store old hourly and minutely data, but we need 24-hour's minutely data and 30-day's hourly data let currentDate = this.getCurrentDate();
if (false) {
// For migration mode, we don't need to store old hourly and minutely data, but we need 30-day's hourly data
// Run anyway for non-migration mode
if (!this.migrationMode || date.isAfter(currentDate.subtract(this.statHourlyKeepDay, "day"))) {
let hourlyStatBean = await this.getHourlyStatBean(hourlyKey); let hourlyStatBean = await this.getHourlyStatBean(hourlyKey);
hourlyStatBean.up = hourlyData.up; hourlyStatBean.up = hourlyData.up;
hourlyStatBean.down = hourlyData.down; hourlyStatBean.down = hourlyData.down;
@ -321,7 +327,11 @@ class UptimeCalculator {
} }
} }
await R.store(hourlyStatBean); await R.store(hourlyStatBean);
}
// For migration mode, we don't need to store old hourly and minutely data, but we need 24-hour's minutely data
// Run anyway for non-migration mode
if (!this.migrationMode || date.isAfter(currentDate.subtract(this.statMinutelyKeepHour, "hour"))) {
let minutelyStatBean = await this.getMinutelyStatBean(divisionKey); let minutelyStatBean = await this.getMinutelyStatBean(divisionKey);
minutelyStatBean.up = minutelyData.up; minutelyStatBean.up = minutelyData.up;
minutelyStatBean.down = minutelyData.down; minutelyStatBean.down = minutelyData.down;
@ -341,15 +351,16 @@ class UptimeCalculator {
// No need to remove old data in migration mode // No need to remove old data in migration mode
if (!this.migrationMode) { if (!this.migrationMode) {
// Remove the old data // Remove the old data
// TODO: Improvement: Convert it to a job?
log.debug("uptime-calc", "Remove old data"); log.debug("uptime-calc", "Remove old data");
await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [ await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [
this.monitorID, this.monitorID,
this.getMinutelyKey(date.subtract(24, "hour")), this.getMinutelyKey(currentDate.subtract(this.statMinutelyKeepHour, "hour")),
]); ]);
await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [ await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [
this.monitorID, this.monitorID,
this.getHourlyKey(date.subtract(30, "day")), this.getHourlyKey(currentDate.subtract(this.statHourlyKeepDay, "day")),
]); ]);
} }

Loading…
Cancel
Save