Support `chunk` option to enable "at-least-once" delivery
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- distributed-systems
Línea de trabajo
Comienza leyendo la implementación de FluentSender, especialmente su búfer pendings y el comportamiento del valor de retorno de emit(), y compáralos después con la sección de opciones de Forward Protocol Specification v1. Define cómo deben funcionar la compatibilidad con chunks, los reintentos, los resultados de entrega y la compatibilidad con el buffer_overflow_handler existente; se considerará terminado cuando el diseño y los límites de compatibilidad se hayan acordado antes de la implementación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Background
According to the "Forward Protocol Specification v1", fluentd supports an option named chunk which enables at-least-once delivery of messages.
This option is very useful in cases where data loss is not acceptable.
https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1#option
The problem
The current design of fluent-logger-python, however, makes it difficult to support this new option.
Specifically:
- Events are buffered inside
FluentSenderclass as a singlebytessequence (self.pendings). There is no efficient way to reconstruct a specific event from the buffer and resend it. - And this
bytessequence buffer is kinda API. So we cannot moddify the format in whichFluentSenderbuffers messages (at least, casually) or it will break many user-definedbuffer_overflow_handlers. - Also for now, we lack a handful of building blocks for supporting the "at-least-once" semantics. For example, there is no reliable mechanism for users to tell if a message has been delivered successfully [^]
So we need to ...
The bottom line is, we need to apply some architectural changes to make this library support the (newly-introduced) "at-least-once" semantics. Of course, we need to do it without breaking many existing programs.
What do you think about this? Or is there already a plan to make this library compliant with the v1 specification?
[^] Yes, FluentSender.emit() is supposed to notify this via its return value. But even if the method returns False, the message might be delivered anyway through the pending buffer, and this "retry" part is totally opaque to users.
- Lenguaje dominante
- Python
- Estrellas
- 457
- Forks
- 138
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 fluent/fluent-logger-python
-
support of `asctime` Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
fluent/fluent-logger-python#210 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
fluent/fluent-logger-python#196 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
fluent/fluent-logger-python#195 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
fluent/fluent-logger-python#194 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
fluent/fluent-logger-python#193 · 3 comentarios ·
Todos los issues de fluent/fluent-logger-python
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
use-agent-os/agent-os#3314 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
BasedHardware/omi#15662 · 1 comentario ·
-
documentation help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
AiursoftWeb/AnduinOS-2#19 ·