Engine: asynchronous code in the worker's publish causes events to be lost
Maintainer thường phản hồi trong vòng 1 ngày
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
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- node.js, typescript
- Lĩnh vực
- backend, distributed-systems
Hướng nghiên cứu
Bắt đầu từ vòng lặp kích thước payload bất đồng bộ được giới thiệu trong #1366 và lần theo parentPort.postMessage trong quá trình worker tắt. Tái hiện các trường hợp về thứ tự và mất message được mô tả ở đây, sau đó xác minh rằng các event được phát ra rời worker theo đúng thứ tự và không bị loại bỏ khi task kết thúc.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Inside the engine, we run job code in a worker thread. The worker thread sends events out to the main engine process through parentPort.postMessage
In production right now this is synchronous. When the message is posted the payload is processed and sent out of the child worker. This ensures that messages leave the worker_thread in the same order that they were emitted from the runtime.
In #1366 we use an async loop to read the size of a payload before sending it. This async loop is causing two problems:
- It no longer guarantees that events will leave the worker thread in the same order as they're emitted, because of the async yield. If message a takes longer to process than message b, than message b might be piped through the port first.
- Some messages don't get emitted at all because the worker thread is shut down while the events are being processed. When we complete the task and exit the run, I don't think there's anyway to know that messages are still processing and waiting to be emitted.
I don't think this is affecting production, but it's a possible cause of #1072. What I'm worried about is that a message emitted with a large-ish payload, but the worker thread gets killed before that message is completed.
I'd sort of expect node.js to handle that for me and not exit the worker until the message has finished posting, but it's possible that we're exiting too soon (because of code or config in the engine).
- Ngôn ngữ chính
- TypeScript
- Star
- 22
- Fork
- 23
- Merge trung bình
- 1 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 26
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
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 OpenFn/kit
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
OpenFn/kit#1574 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Project: square brackets in a path name break thingsCó thể đã có người làm @KyPython đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
OpenFn/kit#1551 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Worker: ignore sentry errors `Credential environment mismatch`Có thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
OpenFn/kit#1460 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CLI
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
Add: Pbs KidsĐang mởcheck:passed streams:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Maintainer thường phản hồi trong vòng 2 ngày
-
maintanance
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
inmanta/web-console#7583 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
deltachat/deltachat-desktop#6881 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[Bug Report][3.13.7] VDataTable with select-strategy="single" shows select-all checkbox in mobile modeCó thể đã có người làm @lazerg đã nhận hôm nay. Đang mởS: triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
phivk/rubiks-lab#33 ·
Maintainer thường phản hồi trong vòng 1 ngày