BrowserWorkerRunner: port finalizer throws when the worker global has no close() (Bun)
Maintainer thường phản hồi trong vòng 1 ngày
@santiago-ramos-02 đang làm issue này rồi.
Từ ngày 30/9/2026.
- #8636 của @santiago-ramos-02 — đang mở
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- bun, typescript
- Lĩnh vực
- web-dev
Hướng nghiên cứu
Bắt đầu từ BrowserWorkerRunner.make và kiểm tra port finalizer, đặc biệt là cách nó xử lý worker global được dùng làm port. Chạy các bài kiểm thử Bun worker liên quan hoặc một bun test suite thực thi browser worker code, và xác nhận rằng quá trình shutdown không còn throw khi worker global không có close().
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
BrowserWorkerRunner.make registers a finalizer for each port that calls port.close() unconditionally:
Effect.sync(() => {
port.removeEventListener("message", onMsg)
port.removeEventListener("messageerror", onMessageError)
port.close()
})
In a dedicated worker, layer passes the worker global as the port. Bun's worker global implements postMessage and addEventListener/removeEventListener, but has no close() (Bun 1.4.2):
// worker.ts, run with `new Worker(new URL("./worker.ts", import.meta.url))` under Bun
postMessage({ hasClose: "close" in self, type: typeof (self as any).close })
// => { hasClose: false, type: "undefined" }
So when the runner shuts down in a Bun worker (for example in a bun test suite that exercises browser worker code), the finalizer throws TypeError: port.close is not a function.
The owning parent terminates the worker anyway, so skipping close() when it is missing is safe. #6680 already fixed the messageerror listener removal in the same finalizer; this is the remaining part.
Environment: @effect/[email protected], Bun 1.4.2, Windows x64. Still present on main.
- Ngôn ngữ chính
- TypeScript
- Star
- 16.7k
- Fork
- 808
- Merge trung bình
- 11 giờ 3 phút
- Pull request đã merge (30 ngày)
- 840
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 Effect-TS/effect
-
PgClient: withTransaction dies instead of failing with SqlError when the server ends the sessionCó thể đã có người làm @effect-bot đã nhận hôm nay. Đang mở
Effect-TS/effect#10290 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
shorthand for mapping over tagged union schemaCó thể đã có người làm @effect-bot đã nhận hôm nay. Đang mởenhancement
Effect-TS/effect#10286 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Cluster: A way to remove processed requests from storageCó thể đã có người làm @effect-bot đã nhận 1 ngày trước. Đang mởenhancement
Effect-TS/effect#10239 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
cluster: a runner that lost its shard lock can still write replies and messages for that shardĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 47/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Effect-TS/effect
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/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 78/100
kunchenguid/gh-axi#247 ·
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 72/100
lidge-jun/opencodex#8101 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
effort:S P3 refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
nightscout/nocturne#3243 ·
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
JuliusBrussee/caveman#1449 ·
Maintainer thường phản hồi trong vòng 1 ngày