Cancellation — orphan vs abort

Budget client = 8 tick. Query “nặng” = 16 tick. Trái: hết giờ chỉ throw cho caller, query vẫn ôm pool. Phải: abort → nhả slot. ← bài viết · timeout budget

Timeout = caller hết hạn  ·  Cancel = việc dưới cũng dừng
Chậm · quan sát pool khi budget = 0

Chỉ timeout (orphan)

Promise.race thua — caller lỗi. Query không nhận signal, vẫn chạy hết.

budget8
DB pool (2 slot)0 busy
free
free
Chưa chạy.

Bấm Chạy.

Timeout + abort

Cùng budget. Hết giờ → abort signal → query dừng, trả connection.

budget8
DB pool (2 slot)0 busy
free
free
Chưa chạy.

Bấm Chạy.

Query cần 16 tick · budget 8 · tick ~280ms. Orphan giữ slot đỏ sau khi caller đã fail.