Cancel misses a batch mid-promotion, letting a cancelled request reach speculation

Đang mở
#825 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

@burgulvedant đang làm issue này rồi.

Từ ngày 31/10/2026.

Đá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
45/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ệ
go
Lĩnh vực
distributed-systems

Hướng nghiên cứu

Start by tracing dependency analysis around claimRequestsForBatch and the creating-to-created transition, then follow cancellation through markCancelling, findBatches, and cancelRequest. Check how speculation admits created batches and review the constraints from #817. Done means a cancelled request cannot reach speculation while created batches remain dependency-eligible; run the relevant tests for these transitions.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

Problem

A request cancelled in the window between dependency analysis claiming it (validated → batched) and promoting its batch out of creating reaches speculation anyway. The result is a live batch carrying a request the user cancelled; it will build, and it can merge.

Interleaving

dependency analysis:  request validated → batched     (claimRequestsForBatch)
cancel:               request batched → cancelling    (markCancelling)
cancel:               findBatches sees only a creating batch — not cancellable
cancel:               request cancelling → cancelled  (no applicable batch → cancelRequest)
dependency analysis:  batch creating → created        (batch-only compare-and-swap)
dependency analysis:  publish to speculate

Why the existing guards miss it

  • The halted-request check in dependency analysis runs before the claim.
  • The claim's re-read and version check reject a cancel that lands before or during the claim, but this window opens after the claim succeeds.
  • creating is not cancellable, so cancel's batch loop matches nothing and falls through to cancelRequest.
  • Neither speculate's admission of created batches nor conclude checks for halted requests.

Found in review of #590. As of 6c050082 the code paths above are unchanged.

Constraint

From #817: a batch abandoned in creating must stay unreachable, and created must remain dependency-eligible.

Ngôn ngữ chính
Go
Star
247
Fork
16
Merge trung bình
2 ngày 1 giờ
Pull request đã merge (30 ngày)
125

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của uber/submitqueue

Tất cả issue của uber/submitqueue

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.