[P1][cli] Rendre la lecture stdin de cleanup annulable #1

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

Constat

cleanup intercepte SIGINT/SIGTERM/SIGHUP via le contexte global, mais reste bloqué dans io.ReadAll(io.LimitReader(...)) tant que le producteur garde stdin ouvert (internal/cli/composable.go:165-186, cmd/murmur/main.go:18-20). Le contexte n'est consulté qu'après EOF.

Tâche

Implémenter une lecture bornée et annulable sans goroutine abandonnée. Fermer stdin uniquement quand le processus en est propriétaire; utiliser le contrat CancelRead pour les lecteurs injectés.

Critères d'acceptation

  • SIGINT, SIGTERM et SIGHUP interrompent immédiatement une lecture bloquée.
  • Le résultat structuré reste cancelled, code de sortie 1.
  • Aucun provider cleanup n'est construit ou appelé après annulation.
  • Les limites de 4 Mio et le comportement EOF restent inchangés.

Validation

go test -race ./internal/cli ./internal/acceptance && go test ./...

## Constat `cleanup` intercepte SIGINT/SIGTERM/SIGHUP via le contexte global, mais reste bloqué dans `io.ReadAll(io.LimitReader(...))` tant que le producteur garde stdin ouvert (`internal/cli/composable.go:165-186`, `cmd/murmur/main.go:18-20`). Le contexte n'est consulté qu'après EOF. ## Tâche Implémenter une lecture bornée et annulable sans goroutine abandonnée. Fermer stdin uniquement quand le processus en est propriétaire; utiliser le contrat `CancelRead` pour les lecteurs injectés. ## Critères d'acceptation - SIGINT, SIGTERM et SIGHUP interrompent immédiatement une lecture bloquée. - Le résultat structuré reste `cancelled`, code de sortie 1. - Aucun provider cleanup n'est construit ou appelé après annulation. - Les limites de 4 Mio et le comportement EOF restent inchangés. ## Validation `go test -race ./internal/cli ./internal/acceptance && go test ./...`

Correctif proposé dans la PR #41 (#41). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé dans la PR #41 (https://git.2027a.net/mathieu/murmur/pulls/41). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé dans la PR #41 : #41. Cette PR est empilée sur la PR #44 afin de rester compatible avec les invariants d’événements.

Correctif proposé dans la PR #41 : https://git.2027a.net/mathieu/murmur/pulls/41. Cette PR est empilée sur la PR #44 afin de rester compatible avec les invariants d’événements.
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#1
No description provided.