Stale worker claim blocks actor resume after increasing template resources

Đang mở
#3,311 0 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 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
47/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go
Lĩnh vực
backend, databases

Hướng nghiên cứu

Trace actor resume, stale-claim recovery, worker binding, and assignment reconciliation to find where capacity failures leave claims behind. Read the linked atomic-assignment issue #1639 for context, then follow the relevant tests for resume retries and worker capacity. Done when a failed re-bind releases the stale claim and a later resume can schedule onto a worker with enough capacity.

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

Mô tả

area/api-machinery area/scheduling bug-bash kind/bug

During actor resume, claiming a worker slot and updating the actor's state to RESUMING happen in two separate database transactions. If the resume fails or is interrupted between them, the actor remains SUSPENDED with a leftover worker claim.

If the actor is then updated to a template with larger CPU or memory limits than that worker can fit, every subsequent resume attempt fails:

  1. Stale-claim recovery checks whether the worker matches the template's selector and runtime constraints, without checking resource capacity, so it keeps returning the undersized worker.
  2. Binding the actor to that worker fails the capacity check and rolls back without releasing the stale claim.
  3. Resume retries against the same undersized worker until backoff is exhausted and fails with Aborted.
  4. Background assignment reconciliation ignores claims that were never recorded on the actor status, so the stale claim is never cleaned up. The actor cannot be resumed and the worker slot remains leaked.

When re-binding a recovered stale claim fails due to insufficient capacity, the stale claim should be released so the next attempt schedules the actor onto a worker with enough room. Alternatively, making worker and actor assignment atomic in a single transaction (#1639) eliminates unrecorded stale claims altogether.

Ngôn ngữ chính
Go
Star
6.1k
Fork
676
Merge trung bình
2 ngày 2 giờ
Pull request đã merge (30 ngày)
522

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 agent-substrate/substrate

Tất cả issue của agent-substrate/substrate

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.