diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a6df2999..9a7563345 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Replaced `backend_repo_index_job_completed` PostHog event with `backend_repo_first_indexed`, which fires only on the first successful index of a repo. [#900](https://github.com/sourcebot-dev/sourcebot/pull/900) + ## [4.11.0] - 2026-02-18 ### Added diff --git a/packages/backend/src/posthogEvents.ts b/packages/backend/src/posthogEvents.ts index abfa96245..d7a1d0871 100644 --- a/packages/backend/src/posthogEvents.ts +++ b/packages/backend/src/posthogEvents.ts @@ -19,9 +19,8 @@ export type PosthogEventMap = { jobType: 'INDEX' | 'CLEANUP', type: string, }, - backend_repo_index_job_completed: { + backend_repo_first_indexed: { repoId: number, - jobType: 'INDEX' | 'CLEANUP', type: string, }, } diff --git a/packages/backend/src/repoIndexManager.ts b/packages/backend/src/repoIndexManager.ts index 0307c0ac0..5c3fbeaaf 100644 --- a/packages/backend/src/repoIndexManager.ts +++ b/packages/backend/src/repoIndexManager.ts @@ -575,11 +575,12 @@ export class RepoIndexManager { this.promClient.activeRepoIndexJobs.dec({ repo: job.data.repoName, type: jobTypeLabel }); this.promClient.repoIndexJobSuccessTotal.inc({ repo: job.data.repoName, type: jobTypeLabel }); - captureEvent('backend_repo_index_job_completed', { - repoId: job.data.repoId, - jobType: job.data.type, - type: jobData.repo.external_codeHostType, - }); + if (jobData.type === RepoIndexingJobType.INDEX && jobData.repo.indexedAt === null) { + captureEvent('backend_repo_first_indexed', { + repoId: job.data.repoId, + type: jobData.repo.external_codeHostType, + }); + } } catch (error) { Sentry.captureException(error); logger.error(`Exception thrown while executing lifecycle function \`onJobCompleted\`.`, error);