|
|
|
|
@ -826,9 +826,7 @@ class Database {
|
|
|
|
|
await Settings.set("migrateAggregateTableState", "migrating");
|
|
|
|
|
|
|
|
|
|
let progressPercent = 0;
|
|
|
|
|
let part = 100 / monitors.length;
|
|
|
|
|
let i = 1;
|
|
|
|
|
for (let monitor of monitors) {
|
|
|
|
|
for (const [ i, monitor ] of monitors.entries()) {
|
|
|
|
|
// Get a list of unique dates from the heartbeat table, using raw sql
|
|
|
|
|
let dates = await R.getAll(`
|
|
|
|
|
SELECT DISTINCT DATE(time) AS date
|
|
|
|
|
@ -839,7 +837,7 @@ class Database {
|
|
|
|
|
monitor.monitor_id
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
for (let date of dates) {
|
|
|
|
|
for (const [ dateIndex, date ] of dates.entries()) {
|
|
|
|
|
// New Uptime Calculator
|
|
|
|
|
let calculator = new UptimeCalculator();
|
|
|
|
|
calculator.monitorID = monitor.monitor_id;
|
|
|
|
|
@ -855,7 +853,7 @@ class Database {
|
|
|
|
|
`, [ monitor.monitor_id, date.date ]);
|
|
|
|
|
|
|
|
|
|
if (heartbeats.length > 0) {
|
|
|
|
|
msg = `[DON'T STOP] Migrating monitor data ${monitor.monitor_id} - ${date.date} [${progressPercent.toFixed(2)}%][${i}/${monitors.length}]`;
|
|
|
|
|
msg = `[DON'T STOP] Migrating monitor ${monitor.monitor_id}s' (${i + 1} of ${monitors.length} total) data - ${date.date} - total migration progress ${progressPercent.toFixed(2)}%`;
|
|
|
|
|
log.info("db", msg);
|
|
|
|
|
migrationServer?.update(msg);
|
|
|
|
|
}
|
|
|
|
|
@ -864,15 +862,14 @@ class Database {
|
|
|
|
|
await calculator.update(heartbeat.status, parseFloat(heartbeat.ping), dayjs(heartbeat.time));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
progressPercent += (Math.round(part / dates.length * 100) / 100);
|
|
|
|
|
// Calculate progress: (current_monitor_index + relative_date_progress) / total_monitors
|
|
|
|
|
progressPercent = (i + (dateIndex + 1) / dates.length) / monitors.length * 100;
|
|
|
|
|
|
|
|
|
|
// Lazy to fix the floating point issue, it is acceptable since it is just a progress bar
|
|
|
|
|
if (progressPercent > 100) {
|
|
|
|
|
progressPercent = 100;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
msg = "Clearing non-important heartbeats";
|
|
|
|
|
|