Run node stats every 10 minutes, only keep the latest entry per day

This commit is contained in:
nymkappa
2022-08-04 18:27:36 +02:00
parent d647edcae3
commit 54669281de
3 changed files with 80 additions and 53 deletions

View File

@@ -2,25 +2,14 @@ import DB from '../../database';
import logger from '../../logger';
import lightningApi from '../../api/lightning/lightning-api-factory';
import LightningStatsImporter from './sync-tasks/stats-importer';
import config from '../../config';
class LightningStatsUpdater {
hardCodedStartTime = '2018-01-12';
public async $startService(): Promise<void> {
logger.info('Starting Lightning Stats service');
LightningStatsImporter.$run();
setTimeout(() => {
this.$runTasks();
}, this.timeUntilMidnight());
}
private timeUntilMidnight(): number {
const date = new Date();
this.setDateMidnight(date);
date.setUTCHours(24);
return date.getTime() - new Date().getTime();
// LightningStatsImporter.$run();
this.$runTasks();
}
private setDateMidnight(date: Date): void {
@@ -35,20 +24,18 @@ class LightningStatsUpdater {
setTimeout(() => {
this.$runTasks();
}, this.timeUntilMidnight());
}, 1000 * config.LIGHTNING.NODE_STATS_REFRESH_INTERVAL);
}
/**
* Update the latest entry for each node every config.LIGHTNING.NODE_STATS_REFRESH_INTERVAL seconds
*/
private async $logStatsDaily(): Promise<void> {
const date = new Date();
this.setDateMidnight(date);
date.setUTCHours(24);
const [rows] = await DB.query(`SELECT UNIX_TIMESTAMP(MAX(added)) as lastAdded from lightning_stats`);
if ((rows[0].lastAdded ?? 0) === date.getTime() / 1000) {
return;
}
logger.info(`Running lightning daily stats log...`);
logger.info(`Updating latest node stats`);
const networkGraph = await lightningApi.$getNetworkGraph();
LightningStatsImporter.computeNetworkStats(date.getTime() / 1000, networkGraph);
}