driver: possible data races in `kick` method
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- lua
- Área
- backend, distributed-systems
Línea de trabajo
Empieza con las líneas 158-173 de queue/abstract/driver/fifo.lua y sigue cómo kick selecciona y actualiza las tareas enterradas en fifo, fifottl, utube y utubettl. Compara esto con el manejo de transacciones en put y take en las líneas 101-117, incluido el sutil punto señalado. Se considera terminado cuando las llamadas concurrentes a kick no pueden seleccionar la misma tarea ni producir un resultado incorrecto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
kick method is used to unbury several tasks in the tube. After analyzing this method for drivers fifo, fifottl, utube, utubettl, I came to the conclusion, that it still possible to get a data race and incorrect, unexpected result.
We take a task with minimal task_id and BURIED status. After that we are updating it, commiting. But lua can also yield before WAL write. So this very task could also be taken in a parallel kick call for the second time.
Possible fix: do changes inside a transaction, like in put, take methods. But there is a subtle point here (which is described in a comment below).
https://github.com/tarantool/queue/blob/aa7c092a1f2ac80d3cfc63c75595d10c5a95c908/queue/abstract/driver/fifo.lua#L101-L117
- Lenguaje dominante
- Lua
- Estrellas
- 244
- Forks
- 56
- Merge medio
- 6 d 8 h
- PR fusionados (30 d)
- 1
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 tarantool/queue
-
tube:grant() is not documented Abiertodocumentation good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
*ttl drivers: TTL branch dereferences delete() result without a nil check, killing the fiber Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
1sp bug teamE
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Todos los issues de tarantool/queue
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
LandSandBoat/server#11579 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ArchiveTeam/sinavideo-grab#7 · 3 reacciones ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mailcow/mailcow-dockerized#7480 ·
-
Mapper: a failed area image export crashes Mudlet if the profile closed while it was running Abiertomapper bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
documentation feature-request mini.completion
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100