diff --git a/src/components/microservices/code-queue/src/index.ts b/src/components/microservices/code-queue/src/index.ts index 088816c6..61358d21 100644 --- a/src/components/microservices/code-queue/src/index.ts +++ b/src/components/microservices/code-queue/src/index.ts @@ -1620,6 +1620,14 @@ async function runDatabaseClaimMoveSelfTest(): Promise { } async function loadPrunedDatabaseTaskRows(where: "all" | "hot"): Promise { + if (where === "hot") { + return await sql` + SELECT id, updated_at, status, read_at, task_json - 'output' - 'events' AS task_json + FROM unidesk_code_queue_tasks + WHERE status IN ('queued', 'running', 'judging', 'retry_wait') + ORDER BY created_at ASC, id ASC + `; + } return await sql` SELECT id, updated_at, status, read_at, task_json FROM ( diff --git a/src/components/microservices/code-queue/src/queue-api.ts b/src/components/microservices/code-queue/src/queue-api.ts index 390dee0d..3a881c17 100644 --- a/src/components/microservices/code-queue/src/queue-api.ts +++ b/src/components/microservices/code-queue/src/queue-api.ts @@ -74,7 +74,7 @@ function taskUpdatedAtMs(task: QueueTask): number { } function memoryTaskIsNewerThanDatabase(memoryTask: QueueTask, databaseTask: QueueTask): boolean { - return taskUpdatedAtMs(memoryTask) > taskUpdatedAtMs(databaseTask); + return preferHotTaskForRead(memoryTask, databaseTask); } function mergeReadTaskByFreshness(target: Map, task: QueueTask): void {