Retrying an interrupted CreateTag never completes the Tag
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
- 3-5 ngày
- Mức phù hợp với người mới
- 57/100
Hướng nghiên cứu
Start with TagActorSnapshot in cmd/ateapi/internal/controlapi/workflow_tag.go:52-55 and trace the CreateTag retry path for a Tag left in SNAPSHOT_STORAGE_STATE_PENDING. Check the existing CreateTag, GetTag, and DeleteTag behavior, then add or run coverage for retrying after the deadline expires during snapshot copy. Done means the retry converges to a usable completed Tag, with the behavior for an already completed Tag matching the expected response.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happened?
A CreateTag call whose deadline expires during the snapshot copy leaves the Tag in SNAPSHOT_STORAGE_STATE_PENDING. Retrying the same request returns AlreadyExists. The Tag stays PENDING until someone deletes it.
TagActorSnapshot documents this (cmd/ateapi/internal/controlapi/workflow_tag.go:52-55): the create is not idempotent, and the retry path is DeleteTag then CreateTag. DeleteTag followed by CreateTag does produce a COMPLETED Tag.
This causes three problems:
- Clients that retry
DeadlineExceededorUnavailablewith the same request never converge. They getAlreadyExistsfor a Tag they can't use. - A Tag left by a failed create looks the same as one still being created. Both are
PENDING, so a client can't tell whether to wait or delete. Nothing cleans up the failed one.
Expected Behavior
Retrying the same CreateTag returns the finished Tag, or AlreadyExists for a COMPLETED Tag. No PENDING Tag is left behind.
Steps to Reproduce
- Deploy the counter demo:
go run ./cmd/ate-setup deploy demo counter. - Create an actor from the
countertemplate. It startsSUSPENDED. - Call
CreateTagwithsource_actorset to that actor and a 20ms gRPC deadline. It returnsDeadlineExceeded. GetTagshows the Tag at version 2 inSNAPSHOT_STORAGE_STATE_PENDING.- Send the same
CreateTagwith no deadline. It returnsAlreadyExists: Tag ate-demo-counter/bb-s1-short-tag already exists; delete it and create it again to retry. GetTagstill showsPENDING.CreateActorwith this Tag assource_tagreturnsFailedPrecondition: source Tag is still being created or failed creation.
kubectl ate can't send a short enough deadline to hit this. A Go client with context.WithTimeout can.
- Ngôn ngữ chính
- Go
- Star
- 6.1k
- Fork
- 676
- Merge trung bình
- 2 ngày 41 phút
- Pull request đã merge (30 ngày)
- 500
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
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 agent-substrate/substrate
-
Clean up the ko retry testsCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởarea/dev-infra area/reliability area/tests kind/cleanup
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
agent-substrate/substrate#3461 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
egress: drop the empty-provider check in providerCredentialCó thể đã có người làm @cloudonly đã nhận 7 ngày trước. Đang mởarea/network kind/cleanup
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
agent-substrate/substrate#3428 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
kubectl-ate create actor-template -f <file> fails with useless errorCó thể đã có người làm @cloudonly đã nhận 8 ngày trước. Đang mởarea/cli kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
agent-substrate/substrate#3406 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
k8s-credential-provider manifest is missing ate-otel-config envFrom, failing OTLP metric exports to [::1]:4317 / 127.0.0.1:4317 every 60sCó thể đã có người làm @ericcurtin đã nhận 9 ngày trước. Đang mởarea/dev-infra area/observability area/security kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
agent-substrate/substrate#3282 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
filecachegc.runPass suppresses eviction logs when FreedBytes < target and consecutiveShortfalls > 3Có thể đã có người làm @ericcurtin đã nhận 8 ngày trước. Đang mởarea/node area/observability area/storage kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
agent-substrate/substrate#3281 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của agent-substrate/substrate
Issue tương tự
-
Query cache: a failed cache page read leaves the set request's read lock held, so the scan hangsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
turbot/steampipe-plugin-sdk#986 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
router-for-me/CLIProxyAPI#7307 · 1 bình luận ·
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 72/100
betterleaks/betterleaks#460 ·
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 79/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 85/100
openmcp-project/service-provider-crossplane#330 ·
Maintainer thường phản hồi trong vòng 1 ngày