fix repo id handling and PostgreSQL Query Ordering

Patch 1: PostgreSQL Query Ordering
Fixed GetJobList() to return jobs ordered by job_repo_id
Added JOIN with job_repo_map table to ensure proper ordering
This ensures slice indices match the stored repository IDs

Patch 2: Updated Comments
Removed the TODO comment about hacky job IDing
Added explanation that ordering is now consistent

Patch 3: Added Validation
Added runtime validation to catch ID mismatches
Logs warnings/errors if slice index doesn't match expected job_repo_id
Helps debug issues in different state implementations
This commit is contained in:
2025-07-25 16:31:34 -07:00
parent 8d7aa780ed
commit ec8bb0cc63
2 changed files with 21 additions and 4 deletions

View File

@@ -385,8 +385,11 @@ func (s *PGState) GetJobList(sessionId int) ([]queue.AnalyzeJob, error) {
ctx := context.Background()
rows, err := s.pool.Query(ctx, `
SELECT payload FROM analyze_jobs
WHERE session_id = $1
SELECT aj.payload FROM analyze_jobs aj
JOIN job_repo_map jrm ON aj.session_id = jrm.session_id
AND aj.owner = jrm.owner AND aj.repo = jrm.repo
WHERE aj.session_id = $1
ORDER BY jrm.job_repo_id
`, sessionId)
if err != nil {
return nil, err