[P1][doctor] Tester la vraie capacité de remplacement atomique du sink fichier #2

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

Constat

doctor ouvre l'inode destination en écriture (internal/doctor/doctor.go:334-358), alors que le sink crée un fichier frère puis fait rename (internal/sink/sink.go:126-134). Il peut donc accepter un parent non inscriptible, refuser un fichier 0400 remplaçable, ou bloquer sur un FIFO substitué entre stat et open.

Tâche

Tester sans effet de bord la création et suppression d'un fichier frère dans le parent, en partageant si utile la préparation du remplacement atomique avec le sink.

Critères d'acceptation

  • Le verdict de doctor correspond au comportement réel du sink.
  • Symlink, FIFO et répertoire ne peuvent ni bloquer ni être modifiés.
  • La destination conserve contenu, mode, timestamps et identité.
  • Aucun fichier de sonde ne reste après succès ou erreur.

Validation

go test -race ./internal/doctor ./internal/xdg ./internal/sink

## Constat `doctor` ouvre l'inode destination en écriture (`internal/doctor/doctor.go:334-358`), alors que le sink crée un fichier frère puis fait `rename` (`internal/sink/sink.go:126-134`). Il peut donc accepter un parent non inscriptible, refuser un fichier `0400` remplaçable, ou bloquer sur un FIFO substitué entre `stat` et `open`. ## Tâche Tester sans effet de bord la création et suppression d'un fichier frère dans le parent, en partageant si utile la préparation du remplacement atomique avec le sink. ## Critères d'acceptation - Le verdict de `doctor` correspond au comportement réel du sink. - Symlink, FIFO et répertoire ne peuvent ni bloquer ni être modifiés. - La destination conserve contenu, mode, timestamps et identité. - Aucun fichier de sonde ne reste après succès ou erreur. ## Validation `go test -race ./internal/doctor ./internal/xdg ./internal/sink`

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#2
No description provided.