diff --git a/CHANGELOG.md b/CHANGELOG.md index 4267e59b..ea0ab4a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed "dubious ownership" errors when cloning / fetching repos. [#553](https://github.com/sourcebot-dev/sourcebot/pull/553) - Fixed issue with Ask Sourcebot tutorial re-appearing after restarting the browser. [#563](https://github.com/sourcebot-dev/sourcebot/pull/563) +- Fixed `repoIndexTimeoutMs` not being used for index job timeouts. [#567](https://github.com/sourcebot-dev/sourcebot/pull/567) ### Changed - Improved search performance for unbounded search queries. [#555](https://github.com/sourcebot-dev/sourcebot/pull/555) diff --git a/packages/backend/src/repoIndexManager.ts b/packages/backend/src/repoIndexManager.ts index 29e07a2b..63767d7f 100644 --- a/packages/backend/src/repoIndexManager.ts +++ b/packages/backend/src/repoIndexManager.ts @@ -23,8 +23,6 @@ type JobPayload = { repoName: string; }; -const JOB_TIMEOUT_MS = 1000 * 60 * 60 * 6; // 6 hour indexing timeout - /** * Manages the lifecycle of repository data on disk, including git working copies * and search index shards. Handles both indexing operations (cloning/fetching repos @@ -49,7 +47,7 @@ export class RepoIndexManager { this.queue = new Queue({ redis, namespace: 'repo-index-queue', - jobTimeoutMs: JOB_TIMEOUT_MS, + jobTimeoutMs: this.settings.repoIndexTimeoutMs, maxAttempts: 3, logger: env.DEBUG_ENABLE_GROUPMQ_LOGGING === 'true', }); @@ -82,6 +80,8 @@ export class RepoIndexManager { private async scheduleIndexJobs() { const thresholdDate = new Date(Date.now() - this.settings.reindexIntervalMs); + const timeoutDate = new Date(Date.now() - this.settings.repoIndexTimeoutMs); + const reposToIndex = await this.db.repo.findMany({ where: { AND: [ @@ -115,7 +115,7 @@ export class RepoIndexManager { }, { createdAt: { - gt: thresholdDate, + gt: timeoutDate, } } ] @@ -124,7 +124,7 @@ export class RepoIndexManager { { AND: [ { status: RepoIndexingJobStatus.FAILED }, - { completedAt: { gt: thresholdDate } }, + { completedAt: { gt: timeoutDate } }, ] } ]