Retrying an interrupted CreateTag never completes the Tag
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 57/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Go
- Stelle
- 5.9k
- Fork
- 637
- Merge medio
- 2g 1h
- PR unite (30g)
- 523
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di agent-substrate/substrate
-
Clean up the ko retry testsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaarea/dev-infra area/reliability area/tests kind/cleanup
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
agent-substrate/substrate#3461 ·
I maintainer di solito rispondono entro 1 giorno
-
egress: drop the empty-provider check in providerCredentialForse già presa @cloudonly l’ha presa 3 giorni fa. Apertaarea/network kind/cleanup
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
agent-substrate/substrate#3428 ·
I maintainer di solito rispondono entro 1 giorno
-
kubectl-ate create actor-template -f <file> fails with useless errorForse già presa @cloudonly l’ha presa 5 giorni fa. Apertaarea/cli kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
agent-substrate/substrate#3406 ·
I maintainer di solito rispondono entro 1 giorno
-
k8s-credential-provider manifest is missing ate-otel-config envFrom, failing OTLP metric exports to [::1]:4317 / 127.0.0.1:4317 every 60sForse già presa @ericcurtin l’ha presa 6 giorni fa. Apertaarea/dev-infra area/observability area/security kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
agent-substrate/substrate#3282 ·
I maintainer di solito rispondono entro 1 giorno
-
filecachegc.runPass suppresses eviction logs when FreedBytes < target and consecutiveShortfalls > 3Forse già presa @ericcurtin l’ha presa 5 giorni fa. Apertaarea/node area/observability area/storage kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
agent-substrate/substrate#3281 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di agent-substrate/substrate
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
hyperledger/fabric-x-orderer#1409 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
needs-area
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Azure/typespec-azure#5936 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
-
Fix mode unpins a reusable workflow call when the same repository is also used as a step actionAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
github/gh-actions-lock#261 ·
I maintainer di solito rispondono entro 1 giorno