driver: possible data races in `kick` method
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- lua
- Lĩnh vực
- backend, distributed-systems
Hướng nghiên cứu
Bắt đầu với các dòng 158-173 trong queue/abstract/driver/fifo.lua và theo dõi cách kick chọn và cập nhật các tác vụ bị chôn trong fifo, fifottl, utube và utubettl. So sánh điều này với việc xử lý giao dịch trong put và take ở các dòng 101-117, bao gồm cả điểm tinh tế đã được nêu. Được xem là hoàn thành khi các lệnh gọi kick đồng thời không thể chọn cùng một tác vụ hoặc tạo ra kết quả không chính xác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Lua
- Star
- 244
- Fork
- 56
- Merge trung bình
- 6 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của tarantool/queue
-
tube:grant() is not documented Đang mởdocumentation good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
*ttl drivers: TTL branch dereferences delete() result without a nil check, killing the fiber Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 76/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
-
1sp bug teamE
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
Tất cả issue của tarantool/queue
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
LandSandBoat/server#11579 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
ArchiveTeam/sinavideo-grab#7 · 3 reaction ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
mailcow/mailcow-dockerized#7480 ·
-
Mapper: a failed area image export crashes Mudlet if the profile closed while it was running Đang mởmapper bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100