Data flow · CancellationToken
Token phải đi tới tận lời gọi I/O cuối cùng
Đường đi của CancellationToken trong một request
Khi client bỏ đi, HttpContext.RequestAborted bật cờ, token đi qua action, service và EF Core xuống DbCommand nên SQL Server huỷ câu query; nếu service quên truyền token, phía dưới nó không huỷ được và câu query chạy nốt.
QUÊN TRUYỀN CT
Client bỏ đi
đóng tab
RequestAborted
HttpContext
Action
GetReport(id, ct)
Service
GenerateAsync(…, ct)
EF Core
DbCommand
SQL Server
query bị huỷ thật
EF Core
không có token
SQL Server
chạy nốt 40 giây
ĐÚNG · TRUYỀN CT XUỐNG MỌI LỜI GỌI I/O
SAI · TOKEN DỪNG Ở SERVICE
CHÚ GIẢI
Token tới tận database
Token được truyền tiếp
Không còn token: không huỷ được
© tiennhm