Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

getStatus() always reports attempts: 0 and uses the latest state change as createdAt

Abierto Apto para principiantes
#54 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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
Área
api, backend

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de platformatic/job-queue

Todos los issues de platformatic/job-queue

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.