feat(server): record pending updates count to metrics (#10991)
close CLOUD-161
This commit is contained in:
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
|
|||||||
import { Cron, CronExpression } from '@nestjs/schedule';
|
import { Cron, CronExpression } from '@nestjs/schedule';
|
||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
|
|
||||||
import { JobQueue, OnJob } from '../../base';
|
import { JobQueue, metrics, OnJob } from '../../base';
|
||||||
import { PgWorkspaceDocStorageAdapter } from '../doc';
|
import { PgWorkspaceDocStorageAdapter } from '../doc';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -11,6 +11,7 @@ declare global {
|
|||||||
workspaceId: string;
|
workspaceId: string;
|
||||||
docId: string;
|
docId: string;
|
||||||
};
|
};
|
||||||
|
'doc.recordPendingDocUpdatesCount': {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,4 +55,23 @@ export class DocServiceCronJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnJob('doc.recordPendingDocUpdatesCount')
|
||||||
|
async recordPendingDocUpdatesCount() {
|
||||||
|
const count = await this.prisma.update.count();
|
||||||
|
metrics.doc.gauge('pending_updates').record(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cron(CronExpression.EVERY_30_SECONDS)
|
||||||
|
async scheduleRecordPendingDocUpdatesCount() {
|
||||||
|
await this.job.add(
|
||||||
|
'doc.recordPendingDocUpdatesCount',
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
// make sure only one job is running at a time
|
||||||
|
delay: 30 * 1000,
|
||||||
|
jobId: 'doc:record-pending-updates-count',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user