fix(MULTIVERSION-0001): fix multi-version indexing — jobs never created or triggered for secondary versions
Two bugs prevented secondary versions from ever being indexed: 1. JobQueue.enqueue() and RepositoryService.createIndexingJob() deduplication only checked repository_id, so a queued default-branch job blocked all version-specific jobs for the same repo. Fix: include version_id in the WHERE clause so only exact (repository_id, version_id) pairs are deduped. 2. POST /api/v1/libs/:id/versions used repoService.createIndexingJob() which inserts a job record but never triggers queue processing. Fix: use queue.enqueue() (same fallback pattern as the libs endpoint) so setImmediate fires processNext() after the job is inserted. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -529,4 +529,24 @@ describe('RepositoryService.createIndexingJob()', () => {
|
||||
const job = service.createIndexingJob('/facebook/react', '/facebook/react/v18.3.0');
|
||||
expect(job.versionId).toBe('/facebook/react/v18.3.0');
|
||||
});
|
||||
|
||||
it('allows separate jobs for the same repo but different versions', () => {
|
||||
const defaultJob = service.createIndexingJob('/facebook/react');
|
||||
const versionJob = service.createIndexingJob('/facebook/react', '/facebook/react/v18.3.0');
|
||||
expect(versionJob.id).not.toBe(defaultJob.id);
|
||||
expect(defaultJob.versionId).toBeNull();
|
||||
expect(versionJob.versionId).toBe('/facebook/react/v18.3.0');
|
||||
});
|
||||
|
||||
it('returns the existing job when the same (repo, version) pair is already queued', () => {
|
||||
const job1 = service.createIndexingJob('/facebook/react', '/facebook/react/v18.3.0');
|
||||
const job2 = service.createIndexingJob('/facebook/react', '/facebook/react/v18.3.0');
|
||||
expect(job2.id).toBe(job1.id);
|
||||
});
|
||||
|
||||
it('returns the existing default-branch job when called again without a versionId', () => {
|
||||
const job1 = service.createIndexingJob('/facebook/react');
|
||||
const job2 = service.createIndexingJob('/facebook/react');
|
||||
expect(job2.id).toBe(job1.id);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user