fix(temporal): tolérer une tâche périmée sur les réponses du worker d'activité - #32
Merged
Merged
Conversation
…'activité
RespondActivityTask{Completed,Failed,Canceled} pour une tâche dont
l'activité a expiré ou dont le workflow est déjà clos renvoie NOT_FOUND
(gRPC 5). Le serveur ne suit plus la tâche : c'est bénin, et cela ne doit
pas tuer la boucle de poll. Les trois réponses passent par
ignoringStaleTask(), à l'image du traitement déjà présent dans
WorkflowTaskProcessor::respond().
GrpcUnary reporte désormais le code gRPC dans le code de l'exception :
sans lui, distinguer NOT_FOUND du reste passerait par l'analyse du
message d'erreur.
Reprise de 832da9a (branche backup/pr21-wip), réécrit : cette branche
reposait sur une hiérarchie TemporalProtocolException qui n'existe pas
sur main.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extrait de la PR #21, réécrit pour
main.Le bug
RespondActivityTask{Completed,Failed,Canceled}pour une tâche dont l'activité a expiré, ou dont le workflow est déjà clos, renvoie gRPC NOT_FOUND (5) : le serveur ne suit plus cette tâche. C'est bénin — maisGrpcUnary::wait()lève, et l'exception remonte jusqu'à tuer la boucle de poll du worker d'activité.WorkflowTaskProcessor::respond()traite déjà ce cas côté workflow (if (5 === $code) { return; }). Le worker d'activité, non.Le correctif
Les trois réponses passent par
ignoringStaleTask(), qui avale NOT_FOUND et repropage tout le reste.Pour le distinguer,
GrpcUnaryreporte le code gRPC dans le code de l'exception au lieu de l'enfouir dans le message — sans quoi il faudrait analyser une chaîne de caractères.Origine
Reprise de
832da9a(brancheorigin/backup/pr21-wip), pas un cherry-pick : cette branche reposait sur une hiérarchieTemporalProtocolExceptionqui n'existe pas surmain. La logique et les tests ont été réécrits sur l'existant (\RuntimeException+ code gRPC), et les métadonnées PHPUnit passées en attributs comme le reste de la suite.Vérifications
TemporalActivityWorkerTest) : NOT_FOUND avalé, toute autre erreur gRPC repropagée, réponse OK sans exception, poll vide sans réponse. Le statut gRPC est piloté via unWorkflowServiceClientmocké.