[P1][ipc] Réutiliser le décodeur JSON après le handshake Subscribe #11

Open
opened 2026-07-31 21:05:11 +00:00 by mathieu · 2 comments
Owner

Constat

Subscribe décode l'acquittement avec un décodeur temporaire puis en crée un autre pour les événements (internal/ipc/client.go:63-82, :124-133). Le premier peut avoir préchargé le premier événement, qui est alors perdu.

Tâche

Créer un seul json.Decoder, l'utiliser pour l'acquittement puis le transférer à la goroutine d'événements.

Critères d'acceptation

  • Acquittement et premier événement écrits dans le même syscall sont tous deux reçus.
  • Aucun blocage ni erreur JSON parasite.
  • Le framing one-shot de Do reste inchangé.

Validation

go test -race -count=100 ./internal/ipc

## Constat `Subscribe` décode l'acquittement avec un décodeur temporaire puis en crée un autre pour les événements (`internal/ipc/client.go:63-82`, `:124-133`). Le premier peut avoir préchargé le premier événement, qui est alors perdu. ## Tâche Créer un seul `json.Decoder`, l'utiliser pour l'acquittement puis le transférer à la goroutine d'événements. ## Critères d'acceptation - Acquittement et premier événement écrits dans le même syscall sont tous deux reçus. - Aucun blocage ni erreur JSON parasite. - Le framing one-shot de `Do` reste inchangé. ## Validation `go test -race -count=100 ./internal/ipc`

Correctif proposé dans la PR #36 : le décodeur JSON du handshake Subscribe est désormais réutilisé pour le flux. Régression ajoutée avec acquittement + premier événement dans le même write. Validation : go test -race -count=100 ./internal/ipc (OK).

Correctif proposé dans la PR #36 : le décodeur JSON du handshake Subscribe est désormais réutilisé pour le flux. Régression ajoutée avec acquittement + premier événement dans le même write. Validation : `go test -race -count=100 ./internal/ipc` (OK).

Correctif proposé et validé dans la PR #36 : #36.

Correctif proposé et validé dans la PR #36 : https://git.2027a.net/mathieu/murmur/pulls/36.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mathieu/murmur#11
No description provided.