diff --git a/packages/backend/src/promClient.ts b/packages/backend/src/promClient.ts index 15462083..8e8c4372 100644 --- a/packages/backend/src/promClient.ts +++ b/packages/backend/src/promClient.ts @@ -5,6 +5,7 @@ export class PromClient { private registry: Registry; private app: express.Application; public activeRepoIndexingJobs: Gauge; + public pendingRepoIndexingJobs: Gauge; public repoIndexingReattemptsTotal: Counter; public repoIndexingFailTotal: Counter; public repoIndexingSuccessTotal: Counter; @@ -26,6 +27,13 @@ export class PromClient { }); this.registry.registerMetric(this.activeRepoIndexingJobs); + this.pendingRepoIndexingJobs = new Gauge({ + name: 'pending_repo_indexing_jobs', + help: 'The number of repo indexing jobs waiting in queue', + labelNames: ['repo'], + }); + this.registry.registerMetric(this.pendingRepoIndexingJobs); + this.repoIndexingReattemptsTotal = new Counter({ name: 'repo_indexing_reattempts', help: 'The number of repo indexing reattempts', diff --git a/packages/backend/src/repoManager.ts b/packages/backend/src/repoManager.ts index 7ce224f7..db70578d 100644 --- a/packages/backend/src/repoManager.ts +++ b/packages/backend/src/repoManager.ts @@ -109,6 +109,11 @@ export class RepoManager implements IRepoManager { } }))); + // Increment pending jobs counter for each repo added + orgRepos.forEach(repo => { + this.promClient.pendingRepoIndexingJobs.inc({ repo: repo.id.toString() }); + }); + this.logger.info(`Added ${orgRepos.length} jobs to indexQueue for org ${orgId} with priority ${priority}`); } @@ -267,6 +272,7 @@ export class RepoManager implements IRepoManager { } }); this.promClient.activeRepoIndexingJobs.inc(); + this.promClient.pendingRepoIndexingJobs.dec({ repo: repo.id.toString() }); let indexDuration_s: number | undefined; let fetchDuration_s: number | undefined;