getStatus() always reports attempts: 0 and uses the latest state change as createdAt
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript
Línea de trabajo
Comienza en src/producer.ts, en Producer.getStatus(), usando las líneas enlazadas y la reproducción como puntos de entrada. Ejecuta el ejemplo de queue proporcionado y compara su estado con el ejemplo del README; se considera terminado cuando los jobs completados informan de su recuento real de intentos y conservan el valor de createdAt establecido al hacer enqueue.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
queue.getStatus(id) always returns attempts: 0, and createdAt is the time of the job's latest state change rather than when it was created. The README's example shows attempts: 1 for a completed job.
Reproduction
@platformatic/[email protected] (also on main):
import { MemoryStorage, Queue } from '@platformatic/job-queue'
import { setTimeout as sleep } from 'node:timers/promises'
const storage = new MemoryStorage()
const queue = new Queue({ storage })
queue.execute(async job => {
await sleep(500)
if (job.attempts === 1) throw new Error('first attempt fails')
return 'ok'
})
await queue.start()
const enqueuedAt = Date.now()
await queue.enqueueAndWait('job-1', {}, { maxAttempts: 2 })
const status = await queue.getStatus('job-1')
console.log(status)
console.log('attempts reported:', status.attempts, '(the job ran 2 times)')
console.log('createdAt - enqueue time:', status.createdAt - enqueuedAt, 'ms')
await queue.stop()
await storage.disconnect()
Output:
{
id: 'job-1',
state: 'completed',
createdAt: 1790375360171,
attempts: 0,
result: 'ok'
}
attempts reported: 0 (the job ran 2 times)
createdAt - enqueue time: 1004 ms
Cause
Producer.getStatus() hardcodes attempts: 0 (producer.ts#L253) and uses the timestamp parsed from the current state string as createdAt (producer.ts#L252). Only failing: states carry an attempt count, and the timestamp is rewritten on every transition.
I'm happy to send a PR for this.
- Lenguaje dominante
- TypeScript
- Estrellas
- 370
- Forks
- 11
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de platformatic/job-queue
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
platformatic/job-queue#53 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 78/100
platformatic/job-queue#52 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
platformatic/job-queue#51 ·
Todos los issues de platformatic/job-queue
Issues similares
-
Manager flashes an empty "errorOccurred" dialog while redirecting a logged-out user to loginAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
openremote/openremote#3487 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
coollabsio/jean#867 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ehmpathy/rhachet-roles-bhuild#616 ·
Los mantenedores suelen responder en 1 día
-
📘 Docs supabase/cli
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
bug(cli): theme file home-directory check uses startsWith (sibling dirs pass, Windows casing fails)Abiertoarea/core kind/bug priority/p2 status/bot-triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
google-gemini/gemini-cli#29955 · 2 comentarios ·
Los mantenedores suelen responder en 1 día