From 89a0880bb3dad93e69ee13a213556276994a1cbc Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Wed, 19 Mar 2025 15:10:25 +0000 Subject: [PATCH] feat(server): record pending updates count to metrics (#10991) close CLOUD-161 --- .../server/src/core/doc-service/job.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/backend/server/src/core/doc-service/job.ts b/packages/backend/server/src/core/doc-service/job.ts index 4cef938059..f9f1e32cd8 100644 --- a/packages/backend/server/src/core/doc-service/job.ts +++ b/packages/backend/server/src/core/doc-service/job.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; import { PrismaClient } from '@prisma/client'; -import { JobQueue, OnJob } from '../../base'; +import { JobQueue, metrics, OnJob } from '../../base'; import { PgWorkspaceDocStorageAdapter } from '../doc'; declare global { @@ -11,6 +11,7 @@ declare global { workspaceId: 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', + } + ); + } }