[P2][sink] Ne garder qu’un seul propriétaire du garde at-most-once #28

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

Constat

sink.New retourne déjà Once(delivery), puis NewOrchestrator enveloppe à nouveau le même sink (internal/sink/sink.go:104-108, :182-208, internal/session/orchestrator.go:111-116). Deux sync.Once et deux états d'erreur protègent la même opération.

Tâche

Attribuer explicitement la garantie à l'orchestrateur, qui possède l'état de livraison et couvre aussi les sinks injectés. Retourner le sink composé directement depuis sink.New.

Critères d'acceptation

  • Une session contient un seul garde at-most-once.
  • Les sinks injectés gardent la garantie.
  • dictate reste naturellement single-shot.
  • L'ordre CopyRaw/Deliver ne change pas.

Validation

go test -race ./internal/sink ./internal/session ./internal/cli ./internal/acceptance

## Constat `sink.New` retourne déjà `Once(delivery)`, puis `NewOrchestrator` enveloppe à nouveau le même sink (`internal/sink/sink.go:104-108`, `:182-208`, `internal/session/orchestrator.go:111-116`). Deux `sync.Once` et deux états d'erreur protègent la même opération. ## Tâche Attribuer explicitement la garantie à l'orchestrateur, qui possède l'état de livraison et couvre aussi les sinks injectés. Retourner le sink composé directement depuis `sink.New`. ## Critères d'acceptation - Une session contient un seul garde at-most-once. - Les sinks injectés gardent la garantie. - `dictate` reste naturellement single-shot. - L'ordre CopyRaw/Deliver ne change pas. ## Validation `go test -race ./internal/sink ./internal/session ./internal/cli ./internal/acceptance`

Correctif proposé dans la PR #40 (#40). Les packages sysexec/clipboard/inject/sink/session passent sous race.

Correctif proposé dans la PR #40 (https://git.2027a.net/mathieu/murmur/pulls/40). Les packages sysexec/clipboard/inject/sink/session passent sous race.

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

Correctif proposé et validé dans la PR #40 : https://git.2027a.net/mathieu/murmur/pulls/40.
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#28
No description provided.