[Suggestion] Move jobs between queues, change the job body, custom metadata for a better failure handling
@mathieulongtin ya está trabajando en esto.
Desde el 28/2/2016.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- c
- Área
- distributed-systems
Línea de trabajo
Comienza revisando la discusión relacionada en #170 y el manejo actual de los trabajos fallidos descrito en este issue. Aclara cuál de las cuatro propuestas superpuestas se desea y, a continuación, define la API, el comportamiento de la identidad y los metadatos del trabajo, y los criterios de aceptación para conservar los IDs y los detalles de los reintentos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
this suggestion is connected to #170 in that both concern the handling of failed jobs.
I would like to handle failed jobs as follows:
- NACK the failed job with an ever growing delay (#170)
- If the number of retries is higher than X, move the job to a failure queue (dead letter queue) with a new TTL, so that it can be inspected manually and acted upon
Neither of these actions are possible in Disque right now and if using a workaround - adding a new, copied job - we lose both the job ID as well as the NACK and add. delivery counters.
That's why I would like to propose four enhancements (proposals 3. and 4. are different solutions of the same problem):
- Allow to NACK a job with a delay (#170)
- Allow to move a job to a different queue with a new TTL
- Allow callers to change the job body
- OR even better, if feasible: Implement custom job metadata support, like NACKs and additional-deliveries but user-defined and mutable
Ad 3. We use the job body to store job metadata. We use metadata to work around missing features 1. and 2. - we store the original job ID as well as the total number of retries there. It could also be helpful to eg. save the exact time and reason the job has failed. This requires changing the existing job body.
Supporting custom, mutable job metadata as a first class citizen in Disque would be even better.
The point of all these suggestions is to keep the ID of a job intact throughout its lifetime while allowing for a more complex handling (delayed NACKing, moving between queues, storing extra details).
What do you think? Are the suggestions too complex? Are they useful?
- Lenguaje dominante
- C
- Estrellas
- 8.1k
- Forks
- 532
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 antirez/disque
-
make nextAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 15/100
-
有编译好的disque吗Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
-
job received by multiple clientsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
-
Project status update!Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Todos los issues de antirez/disque
Issues similares
-
IO.get_env on Node truncates names at embedded NULPosiblemente ocupada @Yi-111-a la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
HigherOrderCO/Bend#1449 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
FujiNetWIFI/fujinet-firmware#1872 ·
Los mantenedores suelen responder en 1 día
-
bug C/C++ code
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
webarkit/WebARKitLib#84 ·
Los mantenedores suelen responder en 1 día
-
Bad device URI "://" on network printers. Printing stopped working between 2.4.19 and 2.4.20Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
OpenPrinting/cups#1751 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
obsproject/obs-studio#14013 ·
Los mantenedores suelen responder en 1 día